{"id":"35990cb62377a004ee2cb983cf6aede5","_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            msg.sender,\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        address fulfiller,\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"}},"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":{"contracts/BNPL.sol":{"ast":{"absolutePath":"contracts/BNPL.sol","exportedSymbols":{"BNPL":[27],"Consideration":[863]},"id":28,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"33:24:0"},{"absolutePath":"contracts/lib/Consideration.sol","file":"./lib/Consideration.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":28,"sourceUnit":864,"src":"59:60:0","symbolAliases":[{"foreign":{"id":2,"name":"Consideration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"72:13:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4,"name":"Consideration","nodeType":"IdentifierPath","referencedDeclaration":863,"src":"138:13:0"},"id":5,"nodeType":"InheritanceSpecifier","src":"138:13:0"}],"canonicalName":"BNPL","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":27,"linearizedBaseContracts":[27,863,3157,3984,4152,2186,4266,4709,4190,2340,534,632,594,1711,4038,516,497,2300,1030],"name":"BNPL","nameLocation":"130:4:0","nodeType":"ContractDefinition","nodes":[{"body":{"id":16,"nodeType":"Block","src":"265:2:0","statements":[]},"id":17,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"233:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"252:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":14,"kind":"baseConstructorSpecifier","modifierName":{"id":11,"name":"Consideration","nodeType":"IdentifierPath","referencedDeclaration":863,"src":"219:13:0"},"nodeType":"ModifierInvocation","src":"219:45:0"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7,"mutability":"mutable","name":"conduitController","nameLocation":"179:17:0","nodeType":"VariableDeclaration","scope":17,"src":"171:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"shadowToken","nameLocation":"206:11:0","nodeType":"VariableDeclaration","scope":17,"src":"198:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"198:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"170:48:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"265:0:0"},"scope":27,"src":"159:108:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[952],"body":{"id":25,"nodeType":"Block","src":"343:30:0","statements":[{"expression":{"hexValue":"424e504c","id":23,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"360:6:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3c8359e88e9129b6c7c2ef6aa4b1baca80faf9733edfad5851ad912d00223dd","typeString":"literal_string \"BNPL\""},"value":"BNPL"},"functionReturnParameters":22,"id":24,"nodeType":"Return","src":"353:13:0"}]},"id":26,"implemented":true,"kind":"function","modifiers":[],"name":"_nameString","nameLocation":"282:11:0","nodeType":"FunctionDefinition","overrides":{"id":19,"nodeType":"OverrideSpecifier","overrides":[],"src":"310:8:0"},"parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"293:2:0"},"returnParameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26,"src":"328:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20,"name":"string","nodeType":"ElementaryTypeName","src":"328:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"327:15:0"},"scope":27,"src":"273:100:0","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":28,"src":"121:254:0","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496,515,524,527,530,533,540,543,546,559,574,585,590,593]}],"src":"33:342:0"},"id":0},"contracts/conduit/lib/ConduitEnums.sol":{"ast":{"absolutePath":"contracts/conduit/lib/ConduitEnums.sol","exportedSymbols":{"ConduitItemType":[34]},"id":35,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":29,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:1"},{"canonicalName":"ConduitItemType","id":34,"members":[{"id":30,"name":"NATIVE","nameLocation":"84:6:1","nodeType":"EnumValue","src":"84:6:1"},{"id":31,"name":"ERC20","nameLocation":"106:5:1","nodeType":"EnumValue","src":"106:5:1"},{"id":32,"name":"ERC721","nameLocation":"117:6:1","nodeType":"EnumValue","src":"117:6:1"},{"id":33,"name":"ERC1155","nameLocation":"129:7:1","nodeType":"EnumValue","src":"129:7:1"}],"name":"ConduitItemType","nameLocation":"62:15:1","nodeType":"EnumDefinition","src":"57:81:1"}],"src":"32:107:1"},"id":1},"contracts/conduit/lib/ConduitStructs.sol":{"ast":{"absolutePath":"contracts/conduit/lib/ConduitStructs.sol","exportedSymbols":{"ConduitBatch1155Transfer":[65],"ConduitItemType":[34],"ConduitTransfer":[52]},"id":66,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":36,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:2"},{"absolutePath":"contracts/conduit/lib/ConduitEnums.sol","file":"./ConduitEnums.sol","id":38,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":66,"sourceUnit":35,"src":"57:53:2","symbolAliases":[{"foreign":{"id":37,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"66:15:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"ConduitTransfer","id":52,"members":[{"constant":false,"id":41,"mutability":"mutable","name":"itemType","nameLocation":"157:8:2","nodeType":"VariableDeclaration","scope":52,"src":"141:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$34","typeString":"enum ConduitItemType"},"typeName":{"id":40,"nodeType":"UserDefinedTypeName","pathNode":{"id":39,"name":"ConduitItemType","nodeType":"IdentifierPath","referencedDeclaration":34,"src":"141:15:2"},"referencedDeclaration":34,"src":"141:15:2","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$34","typeString":"enum ConduitItemType"}},"visibility":"internal"},{"constant":false,"id":43,"mutability":"mutable","name":"token","nameLocation":"179:5:2","nodeType":"VariableDeclaration","scope":52,"src":"171:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45,"mutability":"mutable","name":"from","nameLocation":"198:4:2","nodeType":"VariableDeclaration","scope":52,"src":"190:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"190:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":47,"mutability":"mutable","name":"to","nameLocation":"216:2:2","nodeType":"VariableDeclaration","scope":52,"src":"208:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"208:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"mutability":"mutable","name":"identifier","nameLocation":"232:10:2","nodeType":"VariableDeclaration","scope":52,"src":"224:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":48,"name":"uint256","nodeType":"ElementaryTypeName","src":"224:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51,"mutability":"mutable","name":"amount","nameLocation":"256:6:2","nodeType":"VariableDeclaration","scope":52,"src":"248:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint256","nodeType":"ElementaryTypeName","src":"248:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ConduitTransfer","nameLocation":"119:15:2","nodeType":"StructDefinition","scope":66,"src":"112:153:2","visibility":"public"},{"canonicalName":"ConduitBatch1155Transfer","id":65,"members":[{"constant":false,"id":54,"mutability":"mutable","name":"token","nameLocation":"313:5:2","nodeType":"VariableDeclaration","scope":65,"src":"305:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"305:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56,"mutability":"mutable","name":"from","nameLocation":"332:4:2","nodeType":"VariableDeclaration","scope":65,"src":"324:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55,"name":"address","nodeType":"ElementaryTypeName","src":"324:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":58,"mutability":"mutable","name":"to","nameLocation":"350:2:2","nodeType":"VariableDeclaration","scope":65,"src":"342:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"342:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61,"mutability":"mutable","name":"ids","nameLocation":"368:3:2","nodeType":"VariableDeclaration","scope":65,"src":"358:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":59,"name":"uint256","nodeType":"ElementaryTypeName","src":"358:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60,"nodeType":"ArrayTypeName","src":"358:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":64,"mutability":"mutable","name":"amounts","nameLocation":"387:7:2","nodeType":"VariableDeclaration","scope":65,"src":"377:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":62,"name":"uint256","nodeType":"ElementaryTypeName","src":"377:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":63,"nodeType":"ArrayTypeName","src":"377:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"ConduitBatch1155Transfer","nameLocation":"274:24:2","nodeType":"StructDefinition","scope":66,"src":"267:130:2","visibility":"public"}],"src":"32:366:2"},"id":2},"contracts/interfaces/ConduitControllerInterface.sol":{"ast":{"absolutePath":"contracts/interfaces/ConduitControllerInterface.sol","exportedSymbols":{"ConduitControllerInterface":[269]},"id":270,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":67,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"ConduitControllerInterface","contractDependencies":[],"contractKind":"interface","documentation":{"id":68,"nodeType":"StructuredDocumentation","src":"57:208:3","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":269,"linearizedBaseContracts":[269],"name":"ConduitControllerInterface","nameLocation":"276:26:3","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ConduitControllerInterface.ConduitProperties","id":82,"members":[{"constant":false,"id":70,"mutability":"mutable","name":"key","nameLocation":"496:3:3","nodeType":"VariableDeclaration","scope":82,"src":"488:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":69,"name":"bytes32","nodeType":"ElementaryTypeName","src":"488:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":72,"mutability":"mutable","name":"owner","nameLocation":"517:5:3","nodeType":"VariableDeclaration","scope":82,"src":"509:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71,"name":"address","nodeType":"ElementaryTypeName","src":"509:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74,"mutability":"mutable","name":"potentialOwner","nameLocation":"540:14:3","nodeType":"VariableDeclaration","scope":82,"src":"532:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"532:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77,"mutability":"mutable","name":"channels","nameLocation":"574:8:3","nodeType":"VariableDeclaration","scope":82,"src":"564:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"564:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76,"nodeType":"ArrayTypeName","src":"564:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":81,"mutability":"mutable","name":"channelIndexesPlusOne","nameLocation":"620:21:3","nodeType":"VariableDeclaration","scope":82,"src":"592:49:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":80,"keyType":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"600:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"592:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":79,"name":"uint256","nodeType":"ElementaryTypeName","src":"611:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"ConduitProperties","nameLocation":"460:17:3","nodeType":"StructDefinition","scope":269,"src":"453:195:3","visibility":"public"},{"anonymous":false,"documentation":{"id":83,"nodeType":"StructuredDocumentation","src":"654:204:3","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":89,"name":"NewConduit","nameLocation":"869:10:3","nodeType":"EventDefinition","parameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85,"indexed":false,"mutability":"mutable","name":"conduit","nameLocation":"888:7:3","nodeType":"VariableDeclaration","scope":89,"src":"880:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87,"indexed":false,"mutability":"mutable","name":"conduitKey","nameLocation":"905:10:3","nodeType":"VariableDeclaration","scope":89,"src":"897:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86,"name":"bytes32","nodeType":"ElementaryTypeName","src":"897:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"879:37:3"},"src":"863:54:3"},{"anonymous":false,"documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"923:318:3","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":98,"name":"OwnershipTransferred","nameLocation":"1252:20:3","nodeType":"EventDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":92,"indexed":true,"mutability":"mutable","name":"conduit","nameLocation":"1298:7:3","nodeType":"VariableDeclaration","scope":98,"src":"1282:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91,"name":"address","nodeType":"ElementaryTypeName","src":"1282:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":94,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1331:13:3","nodeType":"VariableDeclaration","scope":98,"src":"1315:29:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"1315:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":96,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1370:8:3","nodeType":"VariableDeclaration","scope":98,"src":"1354:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":95,"name":"address","nodeType":"ElementaryTypeName","src":"1354:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1272:112:3"},"src":"1246:139:3"},{"anonymous":false,"documentation":{"id":99,"nodeType":"StructuredDocumentation","src":"1391:203:3","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":103,"name":"PotentialOwnerUpdated","nameLocation":"1605:21:3","nodeType":"EventDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":101,"indexed":true,"mutability":"mutable","name":"newPotentialOwner","nameLocation":"1643:17:3","nodeType":"VariableDeclaration","scope":103,"src":"1627:33:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"1627:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1626:35:3"},"src":"1599:63:3"},{"documentation":{"id":104,"nodeType":"StructuredDocumentation","src":"1668:208:3","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":106,"name":"InvalidCreator","nameLocation":"1887:14:3","nodeType":"ErrorDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"1901:2:3"},"src":"1881:23:3"},{"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"1910:139:3","text":" @dev Revert with an error when attempting to create a new conduit when no\n      initial owner address is supplied."},"errorSelector":"99faaa04","id":109,"name":"InvalidInitialOwner","nameLocation":"2060:19:3","nodeType":"ErrorDefinition","parameters":{"id":108,"nodeType":"ParameterList","parameters":[],"src":"2079:2:3"},"src":"2054:28:3"},{"documentation":{"id":110,"nodeType":"StructuredDocumentation","src":"2088:122:3","text":" @dev Revert with an error when attempting to set a new potential owner\n      that is already set."},"errorSelector":"cbc080ca","id":116,"name":"NewPotentialOwnerAlreadySet","nameLocation":"2221:27:3","nodeType":"ErrorDefinition","parameters":{"id":115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"mutability":"mutable","name":"conduit","nameLocation":"2266:7:3","nodeType":"VariableDeclaration","scope":116,"src":"2258:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"2258:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":114,"mutability":"mutable","name":"newPotentialOwner","nameLocation":"2291:17:3","nodeType":"VariableDeclaration","scope":116,"src":"2283:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"2283:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2248:66:3"},"src":"2215:100:3"},{"documentation":{"id":117,"nodeType":"StructuredDocumentation","src":"2321:147:3","text":" @dev Revert with an error when attempting to cancel ownership transfer\n      when no new potential owner is currently set."},"errorSelector":"6b013616","id":121,"name":"NoPotentialOwnerCurrentlySet","nameLocation":"2479:28:3","nodeType":"ErrorDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119,"mutability":"mutable","name":"conduit","nameLocation":"2516:7:3","nodeType":"VariableDeclaration","scope":121,"src":"2508:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"2508:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2507:17:3"},"src":"2473:52:3"},{"documentation":{"id":122,"nodeType":"StructuredDocumentation","src":"2531:124:3","text":" @dev Revert with an error when attempting to interact with a conduit that\n      does not yet exist."},"errorSelector":"4ca82090","id":124,"name":"NoConduit","nameLocation":"2666:9:3","nodeType":"ErrorDefinition","parameters":{"id":123,"nodeType":"ParameterList","parameters":[],"src":"2675:2:3"},"src":"2660:18:3"},{"documentation":{"id":125,"nodeType":"StructuredDocumentation","src":"2684:113:3","text":" @dev Revert with an error when attempting to create a conduit that\n      already exists."},"errorSelector":"6328ccb2","id":129,"name":"ConduitAlreadyExists","nameLocation":"2808:20:3","nodeType":"ErrorDefinition","parameters":{"id":128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"mutability":"mutable","name":"conduit","nameLocation":"2837:7:3","nodeType":"VariableDeclaration","scope":129,"src":"2829:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":126,"name":"address","nodeType":"ElementaryTypeName","src":"2829:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2828:17:3"},"src":"2802:44:3"},{"documentation":{"id":130,"nodeType":"StructuredDocumentation","src":"2852:199:3","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":134,"name":"CallerIsNotOwner","nameLocation":"3062:16:3","nodeType":"ErrorDefinition","parameters":{"id":133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"conduit","nameLocation":"3087:7:3","nodeType":"VariableDeclaration","scope":134,"src":"3079:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":131,"name":"address","nodeType":"ElementaryTypeName","src":"3079:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3078:17:3"},"src":"3056:40:3"},{"documentation":{"id":135,"nodeType":"StructuredDocumentation","src":"3102:138:3","text":" @dev Revert with an error when attempting to register a new potential\n      owner and supplying the null address."},"errorSelector":"a388d263","id":139,"name":"NewPotentialOwnerIsZeroAddress","nameLocation":"3251:30:3","nodeType":"ErrorDefinition","parameters":{"id":138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":137,"mutability":"mutable","name":"conduit","nameLocation":"3290:7:3","nodeType":"VariableDeclaration","scope":139,"src":"3282:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":136,"name":"address","nodeType":"ElementaryTypeName","src":"3282:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3281:17:3"},"src":"3245:54:3"},{"documentation":{"id":140,"nodeType":"StructuredDocumentation","src":"3305:199:3","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":144,"name":"CallerIsNotNewPotentialOwner","nameLocation":"3515:28:3","nodeType":"ErrorDefinition","parameters":{"id":143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":142,"mutability":"mutable","name":"conduit","nameLocation":"3552:7:3","nodeType":"VariableDeclaration","scope":144,"src":"3544:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":141,"name":"address","nodeType":"ElementaryTypeName","src":"3544:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3543:17:3"},"src":"3509:52:3"},{"documentation":{"id":145,"nodeType":"StructuredDocumentation","src":"3567:131:3","text":" @dev Revert with an error when attempting to retrieve a channel using an\n      index that is out of range."},"errorSelector":"6ceb340b","id":149,"name":"ChannelOutOfRange","nameLocation":"3709:17:3","nodeType":"ErrorDefinition","parameters":{"id":148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":147,"mutability":"mutable","name":"conduit","nameLocation":"3735:7:3","nodeType":"VariableDeclaration","scope":149,"src":"3727:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":146,"name":"address","nodeType":"ElementaryTypeName","src":"3727:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3726:17:3"},"src":"3703:41:3"},{"documentation":{"id":150,"nodeType":"StructuredDocumentation","src":"3750:748:3","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":159,"implemented":false,"kind":"function","modifiers":[],"name":"createConduit","nameLocation":"4512:13:3","nodeType":"FunctionDefinition","parameters":{"id":155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":152,"mutability":"mutable","name":"conduitKey","nameLocation":"4534:10:3","nodeType":"VariableDeclaration","scope":159,"src":"4526:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":151,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4526:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":154,"mutability":"mutable","name":"initialOwner","nameLocation":"4554:12:3","nodeType":"VariableDeclaration","scope":159,"src":"4546:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":153,"name":"address","nodeType":"ElementaryTypeName","src":"4546:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4525:42:3"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":157,"mutability":"mutable","name":"conduit","nameLocation":"4610:7:3","nodeType":"VariableDeclaration","scope":159,"src":"4602:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":156,"name":"address","nodeType":"ElementaryTypeName","src":"4602:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4601:17:3"},"scope":269,"src":"4503:116:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":160,"nodeType":"StructuredDocumentation","src":"4625:716:3","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":169,"implemented":false,"kind":"function","modifiers":[],"name":"updateChannel","nameLocation":"5355:13:3","nodeType":"FunctionDefinition","parameters":{"id":167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":162,"mutability":"mutable","name":"conduit","nameLocation":"5386:7:3","nodeType":"VariableDeclaration","scope":169,"src":"5378:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"5378:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":164,"mutability":"mutable","name":"channel","nameLocation":"5411:7:3","nodeType":"VariableDeclaration","scope":169,"src":"5403:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"5403:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"isOpen","nameLocation":"5433:6:3","nodeType":"VariableDeclaration","scope":169,"src":"5428:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":165,"name":"bool","nodeType":"ElementaryTypeName","src":"5428:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5368:77:3"},"returnParameters":{"id":168,"nodeType":"ParameterList","parameters":[],"src":"5454:0:3"},"scope":269,"src":"5346:109:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":170,"nodeType":"StructuredDocumentation","src":"5461:482:3","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":177,"implemented":false,"kind":"function","modifiers":[],"name":"transferOwnership","nameLocation":"5957:17:3","nodeType":"FunctionDefinition","parameters":{"id":175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"conduit","nameLocation":"5983:7:3","nodeType":"VariableDeclaration","scope":177,"src":"5975:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":171,"name":"address","nodeType":"ElementaryTypeName","src":"5975:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"newPotentialOwner","nameLocation":"6000:17:3","nodeType":"VariableDeclaration","scope":177,"src":"5992:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":173,"name":"address","nodeType":"ElementaryTypeName","src":"5992:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5974:44:3"},"returnParameters":{"id":176,"nodeType":"ParameterList","parameters":[],"src":"6035:0:3"},"scope":269,"src":"5948:88:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":178,"nodeType":"StructuredDocumentation","src":"6042:253:3","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":183,"implemented":false,"kind":"function","modifiers":[],"name":"cancelOwnershipTransfer","nameLocation":"6309:23:3","nodeType":"FunctionDefinition","parameters":{"id":181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":180,"mutability":"mutable","name":"conduit","nameLocation":"6341:7:3","nodeType":"VariableDeclaration","scope":183,"src":"6333:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":179,"name":"address","nodeType":"ElementaryTypeName","src":"6333:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6332:17:3"},"returnParameters":{"id":182,"nodeType":"ParameterList","parameters":[],"src":"6358:0:3"},"scope":269,"src":"6300:59:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":184,"nodeType":"StructuredDocumentation","src":"6365:264:3","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":189,"implemented":false,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"6643:15:3","nodeType":"FunctionDefinition","parameters":{"id":187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":186,"mutability":"mutable","name":"conduit","nameLocation":"6667:7:3","nodeType":"VariableDeclaration","scope":189,"src":"6659:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"6659:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6658:17:3"},"returnParameters":{"id":188,"nodeType":"ParameterList","parameters":[],"src":"6684:0:3"},"scope":269,"src":"6634:51:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":190,"nodeType":"StructuredDocumentation","src":"6691:224:3","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":197,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"6929:7:3","nodeType":"FunctionDefinition","parameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"conduit","nameLocation":"6945:7:3","nodeType":"VariableDeclaration","scope":197,"src":"6937:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":191,"name":"address","nodeType":"ElementaryTypeName","src":"6937:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6936:17:3"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":195,"mutability":"mutable","name":"owner","nameLocation":"6985:5:3","nodeType":"VariableDeclaration","scope":197,"src":"6977:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"6977:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6976:15:3"},"scope":269,"src":"6920:72:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"6998:308:3","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":205,"implemented":false,"kind":"function","modifiers":[],"name":"getKey","nameLocation":"7320:6:3","nodeType":"FunctionDefinition","parameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"conduit","nameLocation":"7335:7:3","nodeType":"VariableDeclaration","scope":205,"src":"7327:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":199,"name":"address","nodeType":"ElementaryTypeName","src":"7327:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7326:17:3"},"returnParameters":{"id":204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":203,"mutability":"mutable","name":"conduitKey","nameLocation":"7375:10:3","nodeType":"VariableDeclaration","scope":205,"src":"7367:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":202,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7367:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7366:20:3"},"scope":269,"src":"7311:76:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":206,"nodeType":"StructuredDocumentation","src":"7393:453:3","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":215,"implemented":false,"kind":"function","modifiers":[],"name":"getConduit","nameLocation":"7860:10:3","nodeType":"FunctionDefinition","parameters":{"id":209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":208,"mutability":"mutable","name":"conduitKey","nameLocation":"7879:10:3","nodeType":"VariableDeclaration","scope":215,"src":"7871:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":207,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7871:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7870:20:3"},"returnParameters":{"id":214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":211,"mutability":"mutable","name":"conduit","nameLocation":"7946:7:3","nodeType":"VariableDeclaration","scope":215,"src":"7938:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":210,"name":"address","nodeType":"ElementaryTypeName","src":"7938:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":213,"mutability":"mutable","name":"exists","nameLocation":"7960:6:3","nodeType":"VariableDeclaration","scope":215,"src":"7955:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":212,"name":"bool","nodeType":"ElementaryTypeName","src":"7955:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7937:30:3"},"scope":269,"src":"7851:117:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":216,"nodeType":"StructuredDocumentation","src":"7974:460:3","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":223,"implemented":false,"kind":"function","modifiers":[],"name":"getPotentialOwner","nameLocation":"8448:17:3","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"conduit","nameLocation":"8474:7:3","nodeType":"VariableDeclaration","scope":223,"src":"8466:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":217,"name":"address","nodeType":"ElementaryTypeName","src":"8466:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8465:17:3"},"returnParameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"potentialOwner","nameLocation":"8538:14:3","nodeType":"VariableDeclaration","scope":223,"src":"8530:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":220,"name":"address","nodeType":"ElementaryTypeName","src":"8530:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8529:24:3"},"scope":269,"src":"8439:115:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":224,"nodeType":"StructuredDocumentation","src":"8560:346:3","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":233,"implemented":false,"kind":"function","modifiers":[],"name":"getChannelStatus","nameLocation":"8920:16:3","nodeType":"FunctionDefinition","parameters":{"id":229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"conduit","nameLocation":"8945:7:3","nodeType":"VariableDeclaration","scope":233,"src":"8937:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":225,"name":"address","nodeType":"ElementaryTypeName","src":"8937:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":228,"mutability":"mutable","name":"channel","nameLocation":"8962:7:3","nodeType":"VariableDeclaration","scope":233,"src":"8954:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":227,"name":"address","nodeType":"ElementaryTypeName","src":"8954:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8936:34:3"},"returnParameters":{"id":232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":231,"mutability":"mutable","name":"isOpen","nameLocation":"9023:6:3","nodeType":"VariableDeclaration","scope":233,"src":"9018:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":230,"name":"bool","nodeType":"ElementaryTypeName","src":"9018:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9017:13:3"},"scope":269,"src":"8911:120:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":234,"nodeType":"StructuredDocumentation","src":"9037:265:3","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":241,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalChannels","nameLocation":"9316:16:3","nodeType":"FunctionDefinition","parameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"conduit","nameLocation":"9341:7:3","nodeType":"VariableDeclaration","scope":241,"src":"9333:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":235,"name":"address","nodeType":"ElementaryTypeName","src":"9333:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9332:17:3"},"returnParameters":{"id":240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"mutability":"mutable","name":"totalChannels","nameLocation":"9405:13:3","nodeType":"VariableDeclaration","scope":241,"src":"9397:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":238,"name":"uint256","nodeType":"ElementaryTypeName","src":"9397:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9396:23:3"},"scope":269,"src":"9307:113:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"9426:464:3","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":251,"implemented":false,"kind":"function","modifiers":[],"name":"getChannel","nameLocation":"9904:10:3","nodeType":"FunctionDefinition","parameters":{"id":247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"conduit","nameLocation":"9923:7:3","nodeType":"VariableDeclaration","scope":251,"src":"9915:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":243,"name":"address","nodeType":"ElementaryTypeName","src":"9915:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":246,"mutability":"mutable","name":"channelIndex","nameLocation":"9940:12:3","nodeType":"VariableDeclaration","scope":251,"src":"9932:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":245,"name":"uint256","nodeType":"ElementaryTypeName","src":"9932:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9914:39:3"},"returnParameters":{"id":250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":249,"mutability":"mutable","name":"channel","nameLocation":"10009:7:3","nodeType":"VariableDeclaration","scope":251,"src":"10001:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":248,"name":"address","nodeType":"ElementaryTypeName","src":"10001:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10000:17:3"},"scope":269,"src":"9895:123:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":252,"nodeType":"StructuredDocumentation","src":"10024:364:3","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":260,"implemented":false,"kind":"function","modifiers":[],"name":"getChannels","nameLocation":"10402:11:3","nodeType":"FunctionDefinition","parameters":{"id":255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":254,"mutability":"mutable","name":"conduit","nameLocation":"10422:7:3","nodeType":"VariableDeclaration","scope":260,"src":"10414:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":253,"name":"address","nodeType":"ElementaryTypeName","src":"10414:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10413:17:3"},"returnParameters":{"id":259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"mutability":"mutable","name":"channels","nameLocation":"10495:8:3","nodeType":"VariableDeclaration","scope":260,"src":"10478:25:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":256,"name":"address","nodeType":"ElementaryTypeName","src":"10478:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":257,"nodeType":"ArrayTypeName","src":"10478:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"10477:27:3"},"scope":269,"src":"10393:112:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":261,"nodeType":"StructuredDocumentation","src":"10511:83:3","text":" @dev Retrieve the conduit creation code and runtime code hashes."},"functionSelector":"0a96ad39","id":268,"implemented":false,"kind":"function","modifiers":[],"name":"getConduitCodeHashes","nameLocation":"10608:20:3","nodeType":"FunctionDefinition","parameters":{"id":262,"nodeType":"ParameterList","parameters":[],"src":"10628:2:3"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":264,"mutability":"mutable","name":"creationCodeHash","nameLocation":"10686:16:3","nodeType":"VariableDeclaration","scope":268,"src":"10678:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":263,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10678:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":266,"mutability":"mutable","name":"runtimeCodeHash","nameLocation":"10712:15:3","nodeType":"VariableDeclaration","scope":268,"src":"10704:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":265,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10704:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10677:51:3"},"scope":269,"src":"10599:130:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":270,"src":"266:10465:3","usedErrors":[106,109,116,121,124,129,134,139,144,149]}],"src":"32:10700:3"},"id":3},"contracts/interfaces/ConduitInterface.sol":{"ast":{"absolutePath":"contracts/interfaces/ConduitInterface.sol","exportedSymbols":{"ConduitBatch1155Transfer":[65],"ConduitInterface":[343],"ConduitTransfer":[52]},"id":344,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":271,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:4"},{"absolutePath":"contracts/conduit/lib/ConduitStructs.sol","file":"../conduit/lib/ConduitStructs.sol","id":274,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":344,"sourceUnit":66,"src":"57:102:4","symbolAliases":[{"foreign":{"id":272,"name":"ConduitTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52,"src":"70:15:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":273,"name":"ConduitBatch1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"91:24:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ConduitInterface","contractDependencies":[],"contractKind":"interface","documentation":{"id":275,"nodeType":"StructuredDocumentation","src":"161:174:4","text":" @title ConduitInterface\n @author 0age\n @notice ConduitInterface contains all external function interfaces, events,\n         and errors for conduit contracts."},"fullyImplemented":false,"id":343,"linearizedBaseContracts":[343],"name":"ConduitInterface","nameLocation":"346:16:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"369:144:4","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":280,"name":"ChannelClosed","nameLocation":"524:13:4","nodeType":"ErrorDefinition","parameters":{"id":279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"mutability":"mutable","name":"channel","nameLocation":"546:7:4","nodeType":"VariableDeclaration","scope":280,"src":"538:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"538:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"537:17:4"},"src":"518:37:4"},{"documentation":{"id":281,"nodeType":"StructuredDocumentation","src":"561:131:4","text":" @dev Revert with an error when attempting to update a channel to the\n      current status of that channel."},"errorSelector":"924e341e","id":287,"name":"ChannelStatusAlreadySet","nameLocation":"703:23:4","nodeType":"ErrorDefinition","parameters":{"id":286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":283,"mutability":"mutable","name":"channel","nameLocation":"735:7:4","nodeType":"VariableDeclaration","scope":287,"src":"727:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":282,"name":"address","nodeType":"ElementaryTypeName","src":"727:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":285,"mutability":"mutable","name":"isOpen","nameLocation":"749:6:4","nodeType":"VariableDeclaration","scope":287,"src":"744:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":284,"name":"bool","nodeType":"ElementaryTypeName","src":"744:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"726:30:4"},"src":"697:60:4"},{"documentation":{"id":288,"nodeType":"StructuredDocumentation","src":"763:154:4","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":290,"name":"InvalidItemType","nameLocation":"928:15:4","nodeType":"ErrorDefinition","parameters":{"id":289,"nodeType":"ParameterList","parameters":[],"src":"943:2:4"},"src":"922:24:4"},{"documentation":{"id":291,"nodeType":"StructuredDocumentation","src":"952:156:4","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":293,"name":"InvalidController","nameLocation":"1119:17:4","nodeType":"ErrorDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[],"src":"1136:2:4"},"src":"1113:26:4"},{"anonymous":false,"documentation":{"id":294,"nodeType":"StructuredDocumentation","src":"1145:220:4","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":300,"name":"ChannelUpdated","nameLocation":"1376:14:4","nodeType":"EventDefinition","parameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":296,"indexed":true,"mutability":"mutable","name":"channel","nameLocation":"1407:7:4","nodeType":"VariableDeclaration","scope":300,"src":"1391:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":295,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":298,"indexed":false,"mutability":"mutable","name":"open","nameLocation":"1421:4:4","nodeType":"VariableDeclaration","scope":300,"src":"1416:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":297,"name":"bool","nodeType":"ElementaryTypeName","src":"1416:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1390:36:4"},"src":"1370:57:4"},{"documentation":{"id":301,"nodeType":"StructuredDocumentation","src":"1433:352:4","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":310,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"1799:7:4","nodeType":"FunctionDefinition","parameters":{"id":306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":305,"mutability":"mutable","name":"transfers","nameLocation":"1834:9:4","nodeType":"VariableDeclaration","scope":310,"src":"1807:36:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$52_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer[]"},"typeName":{"baseType":{"id":303,"nodeType":"UserDefinedTypeName","pathNode":{"id":302,"name":"ConduitTransfer","nodeType":"IdentifierPath","referencedDeclaration":52,"src":"1807:15:4"},"referencedDeclaration":52,"src":"1807:15:4","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$52_storage_ptr","typeString":"struct ConduitTransfer"}},"id":304,"nodeType":"ArrayTypeName","src":"1807:17:4","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$52_storage_$dyn_storage_ptr","typeString":"struct ConduitTransfer[]"}},"visibility":"internal"}],"src":"1806:38:4"},"returnParameters":{"id":309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":308,"mutability":"mutable","name":"magicValue","nameLocation":"1886:10:4","nodeType":"VariableDeclaration","scope":310,"src":"1879:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":307,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1879:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1878:19:4"},"scope":343,"src":"1790:108:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"1904:353:4","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":320,"implemented":false,"kind":"function","modifiers":[],"name":"executeBatch1155","nameLocation":"2271:16:4","nodeType":"FunctionDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":315,"mutability":"mutable","name":"batch1155Transfers","nameLocation":"2333:18:4","nodeType":"VariableDeclaration","scope":320,"src":"2297:54:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$65_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer[]"},"typeName":{"baseType":{"id":313,"nodeType":"UserDefinedTypeName","pathNode":{"id":312,"name":"ConduitBatch1155Transfer","nodeType":"IdentifierPath","referencedDeclaration":65,"src":"2297:24:4"},"referencedDeclaration":65,"src":"2297:24:4","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitBatch1155Transfer_$65_storage_ptr","typeString":"struct ConduitBatch1155Transfer"}},"id":314,"nodeType":"ArrayTypeName","src":"2297:26:4","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$65_storage_$dyn_storage_ptr","typeString":"struct ConduitBatch1155Transfer[]"}},"visibility":"internal"}],"src":"2287:70:4"},"returnParameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"magicValue","nameLocation":"2383:10:4","nodeType":"VariableDeclaration","scope":320,"src":"2376:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":317,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2376:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2375:19:4"},"scope":343,"src":"2262:133:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":321,"nodeType":"StructuredDocumentation","src":"2401:444:4","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":334,"implemented":false,"kind":"function","modifiers":[],"name":"executeWithBatch1155","nameLocation":"2859:20:4","nodeType":"FunctionDefinition","parameters":{"id":330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"standardTransfers","nameLocation":"2916:17:4","nodeType":"VariableDeclaration","scope":334,"src":"2889:44:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$52_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitTransfer[]"},"typeName":{"baseType":{"id":323,"nodeType":"UserDefinedTypeName","pathNode":{"id":322,"name":"ConduitTransfer","nodeType":"IdentifierPath","referencedDeclaration":52,"src":"2889:15:4"},"referencedDeclaration":52,"src":"2889:15:4","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitTransfer_$52_storage_ptr","typeString":"struct ConduitTransfer"}},"id":324,"nodeType":"ArrayTypeName","src":"2889:17:4","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitTransfer_$52_storage_$dyn_storage_ptr","typeString":"struct ConduitTransfer[]"}},"visibility":"internal"},{"constant":false,"id":329,"mutability":"mutable","name":"batch1155Transfers","nameLocation":"2979:18:4","nodeType":"VariableDeclaration","scope":334,"src":"2943:54:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$65_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer[]"},"typeName":{"baseType":{"id":327,"nodeType":"UserDefinedTypeName","pathNode":{"id":326,"name":"ConduitBatch1155Transfer","nodeType":"IdentifierPath","referencedDeclaration":65,"src":"2943:24:4"},"referencedDeclaration":65,"src":"2943:24:4","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitBatch1155Transfer_$65_storage_ptr","typeString":"struct ConduitBatch1155Transfer"}},"id":328,"nodeType":"ArrayTypeName","src":"2943:26:4","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$65_storage_$dyn_storage_ptr","typeString":"struct ConduitBatch1155Transfer[]"}},"visibility":"internal"}],"src":"2879:124:4"},"returnParameters":{"id":333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":332,"mutability":"mutable","name":"magicValue","nameLocation":"3029:10:4","nodeType":"VariableDeclaration","scope":334,"src":"3022:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":331,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3022:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3021:19:4"},"scope":343,"src":"2850:191:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":335,"nodeType":"StructuredDocumentation","src":"3047:222:4","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":342,"implemented":false,"kind":"function","modifiers":[],"name":"updateChannel","nameLocation":"3283:13:4","nodeType":"FunctionDefinition","parameters":{"id":340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":337,"mutability":"mutable","name":"channel","nameLocation":"3305:7:4","nodeType":"VariableDeclaration","scope":342,"src":"3297:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":336,"name":"address","nodeType":"ElementaryTypeName","src":"3297:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":339,"mutability":"mutable","name":"isOpen","nameLocation":"3319:6:4","nodeType":"VariableDeclaration","scope":342,"src":"3314:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":338,"name":"bool","nodeType":"ElementaryTypeName","src":"3314:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3296:30:4"},"returnParameters":{"id":341,"nodeType":"ParameterList","parameters":[],"src":"3335:0:4"},"scope":343,"src":"3274:62:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":344,"src":"336:3002:4","usedErrors":[280,287,290,293]}],"src":"32:3307:4"},"id":4},"contracts/interfaces/ConsiderationEventsAndErrors.sol":{"ast":{"absolutePath":"contracts/interfaces/ConsiderationEventsAndErrors.sol","exportedSymbols":{"ConsiderationEventsAndErrors":[497]},"id":498,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":345,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"ConsiderationEventsAndErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"57:134:5","text":" @title ConsiderationEventsAndErrors\n @author 0age\n @notice ConsiderationEventsAndErrors contains all events and errors."},"fullyImplemented":true,"id":497,"linearizedBaseContracts":[497],"name":"ConsiderationEventsAndErrors","nameLocation":"202:28:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"e8b2cfa73a11bd60479d92890aeb77bc5f502014ec530c3f0c1774d51680f0a6","id":356,"name":"OrderFulfilled","nameLocation":"244:14:5","nodeType":"EventDefinition","parameters":{"id":355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"276:9:5","nodeType":"VariableDeclaration","scope":356,"src":"268:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":347,"name":"bytes32","nodeType":"ElementaryTypeName","src":"268:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":350,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"311:7:5","nodeType":"VariableDeclaration","scope":356,"src":"295:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":349,"name":"address","nodeType":"ElementaryTypeName","src":"295:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":352,"indexed":false,"mutability":"mutable","name":"fulfiller","nameLocation":"336:9:5","nodeType":"VariableDeclaration","scope":356,"src":"328:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":351,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":354,"indexed":false,"mutability":"mutable","name":"shadowId","nameLocation":"363:8:5","nodeType":"VariableDeclaration","scope":356,"src":"355:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":353,"name":"uint256","nodeType":"ElementaryTypeName","src":"355:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"258:119:5"},"src":"238:140:5"},{"anonymous":false,"eventSelector":"6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d38","id":364,"name":"OrderRepaid","nameLocation":"390:11:5","nodeType":"EventDefinition","parameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"419:9:5","nodeType":"VariableDeclaration","scope":364,"src":"411:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"411:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":360,"indexed":false,"mutability":"mutable","name":"payTimes","nameLocation":"446:8:5","nodeType":"VariableDeclaration","scope":364,"src":"438:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"438:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":362,"indexed":false,"mutability":"mutable","name":"finalized","nameLocation":"469:9:5","nodeType":"VariableDeclaration","scope":364,"src":"464:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":361,"name":"bool","nodeType":"ElementaryTypeName","src":"464:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"401:83:5"},"src":"384:101:5"},{"anonymous":false,"eventSelector":"e68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada","id":370,"name":"OrderBroken","nameLocation":"497:11:5","nodeType":"EventDefinition","parameters":{"id":369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":366,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"526:9:5","nodeType":"VariableDeclaration","scope":370,"src":"518:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":365,"name":"bytes32","nodeType":"ElementaryTypeName","src":"518:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":368,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"561:7:5","nodeType":"VariableDeclaration","scope":370,"src":"545:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":367,"name":"address","nodeType":"ElementaryTypeName","src":"545:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"508:66:5"},"src":"491:84:5"},{"anonymous":false,"documentation":{"id":371,"nodeType":"StructuredDocumentation","src":"581:206:5","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":377,"name":"OrderCancelled","nameLocation":"798:14:5","nodeType":"EventDefinition","parameters":{"id":376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":373,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"830:9:5","nodeType":"VariableDeclaration","scope":377,"src":"822:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":372,"name":"bytes32","nodeType":"ElementaryTypeName","src":"822:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":375,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"865:7:5","nodeType":"VariableDeclaration","scope":377,"src":"849:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":374,"name":"address","nodeType":"ElementaryTypeName","src":"849:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"812:66:5"},"src":"792:87:5"},{"anonymous":false,"documentation":{"id":378,"nodeType":"StructuredDocumentation","src":"885:357:5","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":384,"name":"OrderValidated","nameLocation":"1253:14:5","nodeType":"EventDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":380,"indexed":false,"mutability":"mutable","name":"orderHash","nameLocation":"1285:9:5","nodeType":"VariableDeclaration","scope":384,"src":"1277:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":379,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1277:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":382,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"1320:7:5","nodeType":"VariableDeclaration","scope":384,"src":"1304:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":381,"name":"address","nodeType":"ElementaryTypeName","src":"1304:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1267:66:5"},"src":"1247:87:5"},{"anonymous":false,"documentation":{"id":385,"nodeType":"StructuredDocumentation","src":"1340:205:5","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":391,"name":"CounterIncremented","nameLocation":"1556:18:5","nodeType":"EventDefinition","parameters":{"id":390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":387,"indexed":false,"mutability":"mutable","name":"newCounter","nameLocation":"1583:10:5","nodeType":"VariableDeclaration","scope":391,"src":"1575:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":386,"name":"uint256","nodeType":"ElementaryTypeName","src":"1575:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":389,"indexed":true,"mutability":"mutable","name":"offerer","nameLocation":"1611:7:5","nodeType":"VariableDeclaration","scope":391,"src":"1595:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":388,"name":"address","nodeType":"ElementaryTypeName","src":"1595:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1574:45:5"},"src":"1550:70:5"},{"documentation":{"id":392,"nodeType":"StructuredDocumentation","src":"1626:202:5","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":396,"name":"OrderAlreadyFilled","nameLocation":"1839:18:5","nodeType":"ErrorDefinition","parameters":{"id":395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":394,"mutability":"mutable","name":"orderHash","nameLocation":"1866:9:5","nodeType":"VariableDeclaration","scope":396,"src":"1858:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1858:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1857:19:5"},"src":"1833:44:5"},{"errorSelector":"836f8ef9","id":400,"name":"OrderAlreadyFinalized","nameLocation":"1889:21:5","nodeType":"ErrorDefinition","parameters":{"id":399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":398,"mutability":"mutable","name":"orderHash","nameLocation":"1919:9:5","nodeType":"VariableDeclaration","scope":400,"src":"1911:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":397,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1911:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1910:19:5"},"src":"1883:47:5"},{"errorSelector":"9633f278","id":404,"name":"OrderAlreadyStarted","nameLocation":"1942:19:5","nodeType":"ErrorDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":402,"mutability":"mutable","name":"orderHash","nameLocation":"1970:9:5","nodeType":"VariableDeclaration","scope":404,"src":"1962:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":401,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1962:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1961:19:5"},"src":"1936:45:5"},{"errorSelector":"e567c93e","id":408,"name":"OrderNotStarted","nameLocation":"1993:15:5","nodeType":"ErrorDefinition","parameters":{"id":407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"orderHash","nameLocation":"2017:9:5","nodeType":"VariableDeclaration","scope":408,"src":"2009:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2009:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2008:19:5"},"src":"1987:41:5"},{"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"2034:136:5","text":" @dev Revert with an error when attempting to fill an order outside the\n      specified start time and end time."},"errorSelector":"6f7eac26","id":411,"name":"InvalidTime","nameLocation":"2181:11:5","nodeType":"ErrorDefinition","parameters":{"id":410,"nodeType":"ParameterList","parameters":[],"src":"2192:2:5"},"src":"2175:20:5"},{"documentation":{"id":412,"nodeType":"StructuredDocumentation","src":"2201:159:5","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":418,"name":"InvalidConduit","nameLocation":"2371:14:5","nodeType":"ErrorDefinition","parameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":414,"mutability":"mutable","name":"conduitKey","nameLocation":"2394:10:5","nodeType":"VariableDeclaration","scope":418,"src":"2386:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":413,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2386:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":416,"mutability":"mutable","name":"conduit","nameLocation":"2414:7:5","nodeType":"VariableDeclaration","scope":418,"src":"2406:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":415,"name":"address","nodeType":"ElementaryTypeName","src":"2406:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2385:37:5"},"src":"2365:58:5"},{"documentation":{"id":419,"nodeType":"StructuredDocumentation","src":"2429:166:5","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":421,"name":"MissingOriginalConsiderationItems","nameLocation":"2606:33:5","nodeType":"ErrorDefinition","parameters":{"id":420,"nodeType":"ParameterList","parameters":[],"src":"2639:2:5"},"src":"2600:42:5"},{"documentation":{"id":422,"nodeType":"StructuredDocumentation","src":"2648:137:5","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":426,"name":"InvalidCallToConduit","nameLocation":"2796:20:5","nodeType":"ErrorDefinition","parameters":{"id":425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":424,"mutability":"mutable","name":"conduit","nameLocation":"2825:7:5","nodeType":"VariableDeclaration","scope":426,"src":"2817:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":423,"name":"address","nodeType":"ElementaryTypeName","src":"2817:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2816:17:5"},"src":"2790:44:5"},{"documentation":{"id":427,"nodeType":"StructuredDocumentation","src":"2840:474:5","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":435,"name":"ConsiderationNotMet","nameLocation":"3325:19:5","nodeType":"ErrorDefinition","parameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"orderIndex","nameLocation":"3362:10:5","nodeType":"VariableDeclaration","scope":435,"src":"3354:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint256","nodeType":"ElementaryTypeName","src":"3354:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"considerationIndex","nameLocation":"3390:18:5","nodeType":"VariableDeclaration","scope":435,"src":"3382:26:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"3382:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":433,"mutability":"mutable","name":"shortfallAmount","nameLocation":"3426:15:5","nodeType":"VariableDeclaration","scope":435,"src":"3418:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":432,"name":"uint256","nodeType":"ElementaryTypeName","src":"3418:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3344:103:5"},"src":"3319:129:5"},{"documentation":{"id":436,"nodeType":"StructuredDocumentation","src":"3454:137:5","text":" @dev Revert with an error when insufficient ether is supplied as part of\n      msg.value when fulfilling orders."},"errorSelector":"1a783b8d","id":438,"name":"InsufficientEtherSupplied","nameLocation":"3602:25:5","nodeType":"ErrorDefinition","parameters":{"id":437,"nodeType":"ParameterList","parameters":[],"src":"3627:2:5"},"src":"3596:34:5"},{"documentation":{"id":439,"nodeType":"StructuredDocumentation","src":"3636:76:5","text":" @dev Revert with an error when an ether transfer reverts."},"errorSelector":"470c7c1d","id":445,"name":"EtherTransferGenericFailure","nameLocation":"3723:27:5","nodeType":"ErrorDefinition","parameters":{"id":444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":441,"mutability":"mutable","name":"account","nameLocation":"3759:7:5","nodeType":"VariableDeclaration","scope":445,"src":"3751:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":440,"name":"address","nodeType":"ElementaryTypeName","src":"3751:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":443,"mutability":"mutable","name":"amount","nameLocation":"3776:6:5","nodeType":"VariableDeclaration","scope":445,"src":"3768:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":442,"name":"uint256","nodeType":"ElementaryTypeName","src":"3768:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3750:33:5"},"src":"3717:67:5"},{"documentation":{"id":446,"nodeType":"StructuredDocumentation","src":"3790:163:5","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":448,"name":"PartialFillsNotEnabledForOrder","nameLocation":"3964:30:5","nodeType":"ErrorDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[],"src":"3994:2:5"},"src":"3958:39:5"},{"documentation":{"id":449,"nodeType":"StructuredDocumentation","src":"4003:178:5","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":453,"name":"OrderIsCancelled","nameLocation":"4192:16:5","nodeType":"ErrorDefinition","parameters":{"id":452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"mutability":"mutable","name":"orderHash","nameLocation":"4217:9:5","nodeType":"VariableDeclaration","scope":453,"src":"4209:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4209:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4208:19:5"},"src":"4186:42:5"},{"documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"4234:195:5","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":458,"name":"OrderPartiallyFilled","nameLocation":"4440:20:5","nodeType":"ErrorDefinition","parameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"orderHash","nameLocation":"4469:9:5","nodeType":"VariableDeclaration","scope":458,"src":"4461:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":455,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4461:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4460:19:5"},"src":"4434:46:5"},{"documentation":{"id":459,"nodeType":"StructuredDocumentation","src":"4486:145:5","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":461,"name":"InvalidCanceller","nameLocation":"4642:16:5","nodeType":"ErrorDefinition","parameters":{"id":460,"nodeType":"ParameterList","parameters":[],"src":"4658:2:5"},"src":"4636:25:5"},{"documentation":{"id":462,"nodeType":"StructuredDocumentation","src":"4667:201:5","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":464,"name":"BadFraction","nameLocation":"4879:11:5","nodeType":"ErrorDefinition","parameters":{"id":463,"nodeType":"ParameterList","parameters":[],"src":"4890:2:5"},"src":"4873:20:5"},{"documentation":{"id":465,"nodeType":"StructuredDocumentation","src":"4899:211:5","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":469,"name":"InvalidMsgValue","nameLocation":"5121:15:5","nodeType":"ErrorDefinition","parameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"value","nameLocation":"5145:5:5","nodeType":"VariableDeclaration","scope":469,"src":"5137:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":466,"name":"uint256","nodeType":"ElementaryTypeName","src":"5137:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5136:15:5"},"src":"5115:37:5"},{"documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"5158:147:5","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":472,"name":"InvalidBasicOrderParameterEncoding","nameLocation":"5316:34:5","nodeType":"ErrorDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[],"src":"5350:2:5"},"src":"5310:43:5"},{"documentation":{"id":473,"nodeType":"StructuredDocumentation","src":"5359:141:5","text":" @dev Revert with an error when attempting to fulfill any number of\n      available orders when none are fulfillable."},"errorSelector":"d5da9a1b","id":475,"name":"NoSpecifiedOrdersAvailable","nameLocation":"5511:26:5","nodeType":"ErrorDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[],"src":"5537:2:5"},"src":"5505:35:5"},{"documentation":{"id":476,"nodeType":"StructuredDocumentation","src":"5546:142:5","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":478,"name":"InvalidNativeOfferItem","nameLocation":"5699:22:5","nodeType":"ErrorDefinition","parameters":{"id":477,"nodeType":"ParameterList","parameters":[],"src":"5721:2:5"},"src":"5693:31:5"},{"errorSelector":"a4c58ff6","id":482,"name":"OrderNotValidated","nameLocation":"5736:17:5","nodeType":"ErrorDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":480,"mutability":"mutable","name":"orderHash","nameLocation":"5762:9:5","nodeType":"VariableDeclaration","scope":482,"src":"5754:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":479,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5754:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5753:19:5"},"src":"5730:43:5"},{"errorSelector":"2e775cae","id":486,"name":"OrderExpired","nameLocation":"5785:12:5","nodeType":"ErrorDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":484,"mutability":"mutable","name":"orderHash","nameLocation":"5806:9:5","nodeType":"VariableDeclaration","scope":486,"src":"5798:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":483,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5798:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5797:19:5"},"src":"5779:38:5"},{"errorSelector":"031ea4cb","id":490,"name":"OrderNotExpired","nameLocation":"5829:15:5","nodeType":"ErrorDefinition","parameters":{"id":489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":488,"mutability":"mutable","name":"orderHash","nameLocation":"5853:9:5","nodeType":"VariableDeclaration","scope":490,"src":"5845:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5845:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5844:19:5"},"src":"5823:41:5"},{"errorSelector":"c8910ec0","id":494,"name":"OrderInvalidRepayParameters","nameLocation":"5876:27:5","nodeType":"ErrorDefinition","parameters":{"id":493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":492,"mutability":"mutable","name":"orderHash","nameLocation":"5912:9:5","nodeType":"VariableDeclaration","scope":494,"src":"5904:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5904:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5903:19:5"},"src":"5870:53:5"},{"errorSelector":"0a199cb5","id":496,"name":"InvalidOrderParameters","nameLocation":"5935:22:5","nodeType":"ErrorDefinition","parameters":{"id":495,"nodeType":"ParameterList","parameters":[],"src":"5957:2:5"},"src":"5929:31:5"}],"scope":498,"src":"192:5770:5","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496]}],"src":"32:5931:5"},"id":5},"contracts/interfaces/EIP1271Interface.sol":{"ast":{"absolutePath":"contracts/interfaces/EIP1271Interface.sol","exportedSymbols":{"EIP1271Interface":[509]},"id":510,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":499,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"EIP1271Interface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":509,"linearizedBaseContracts":[509],"name":"EIP1271Interface","nameLocation":"67:16:6","nodeType":"ContractDefinition","nodes":[{"functionSelector":"1626ba7e","id":508,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"99:16:6","nodeType":"FunctionDefinition","parameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"digest","nameLocation":"124:6:6","nodeType":"VariableDeclaration","scope":508,"src":"116:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":500,"name":"bytes32","nodeType":"ElementaryTypeName","src":"116:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":503,"mutability":"mutable","name":"signature","nameLocation":"147:9:6","nodeType":"VariableDeclaration","scope":508,"src":"132:24:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":502,"name":"bytes","nodeType":"ElementaryTypeName","src":"132:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"115:42:6"},"returnParameters":{"id":507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":506,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":508,"src":"205:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":505,"name":"bytes4","nodeType":"ElementaryTypeName","src":"205:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"204:8:6"},"scope":509,"src":"90:123:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":510,"src":"57:158:6","usedErrors":[]}],"src":"32:183:6"},"id":6},"contracts/interfaces/ReentrancyErrors.sol":{"ast":{"absolutePath":"contracts/interfaces/ReentrancyErrors.sol","exportedSymbols":{"ReentrancyErrors":[516]},"id":517,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":511,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:7"},{"abstract":false,"baseContracts":[],"canonicalName":"ReentrancyErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":512,"nodeType":"StructuredDocumentation","src":"57:117:7","text":" @title ReentrancyErrors\n @author 0age\n @notice ReentrancyErrors contains errors related to reentrancy."},"fullyImplemented":true,"id":516,"linearizedBaseContracts":[516],"name":"ReentrancyErrors","nameLocation":"185:16:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":513,"nodeType":"StructuredDocumentation","src":"208:112:7","text":" @dev Revert with an error when a caller attempts to reenter a protected\n      function."},"errorSelector":"7fa8a987","id":515,"name":"NoReentrantCalls","nameLocation":"331:16:7","nodeType":"ErrorDefinition","parameters":{"id":514,"nodeType":"ParameterList","parameters":[],"src":"347:2:7"},"src":"325:25:7"}],"scope":517,"src":"175:177:7","usedErrors":[515]}],"src":"32:321:7"},"id":7},"contracts/interfaces/SignatureVerificationErrors.sol":{"ast":{"absolutePath":"contracts/interfaces/SignatureVerificationErrors.sol","exportedSymbols":{"SignatureVerificationErrors":[534]},"id":535,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":518,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"SignatureVerificationErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":519,"nodeType":"StructuredDocumentation","src":"57:166:8","text":" @title SignatureVerificationErrors\n @author 0age\n @notice SignatureVerificationErrors contains all errors related to signature\n         verification."},"fullyImplemented":true,"id":534,"linearizedBaseContracts":[534],"name":"SignatureVerificationErrors","nameLocation":"234:27:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":520,"nodeType":"StructuredDocumentation","src":"268:180:8","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":524,"name":"BadSignatureV","nameLocation":"459:13:8","nodeType":"ErrorDefinition","parameters":{"id":523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"v","nameLocation":"479:1:8","nodeType":"VariableDeclaration","scope":524,"src":"473:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":521,"name":"uint8","nodeType":"ElementaryTypeName","src":"473:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"472:9:8"},"src":"453:29:8"},{"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"488:239:8","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":527,"name":"InvalidSigner","nameLocation":"738:13:8","nodeType":"ErrorDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"751:2:8"},"src":"732:22:8"},{"documentation":{"id":528,"nodeType":"StructuredDocumentation","src":"760:119:8","text":" @dev Revert with an error when a signer cannot be recovered from the\n      supplied signature."},"errorSelector":"8baa579f","id":530,"name":"InvalidSignature","nameLocation":"890:16:8","nodeType":"ErrorDefinition","parameters":{"id":529,"nodeType":"ParameterList","parameters":[],"src":"906:2:8"},"src":"884:25:8"},{"documentation":{"id":531,"nodeType":"StructuredDocumentation","src":"915:87:8","text":" @dev Revert with an error when an EIP-1271 call to an account fails."},"errorSelector":"4f7fb80d","id":533,"name":"BadContractSignature","nameLocation":"1013:20:8","nodeType":"ErrorDefinition","parameters":{"id":532,"nodeType":"ParameterList","parameters":[],"src":"1033:2:8"},"src":"1007:29:8"}],"scope":535,"src":"224:814:8","usedErrors":[524,527,530,533]}],"src":"32:1007:8"},"id":8},"contracts/interfaces/TokenTransferrerErrors.sol":{"ast":{"absolutePath":"contracts/interfaces/TokenTransferrerErrors.sol","exportedSymbols":{"TokenTransferrerErrors":[594]},"id":595,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":536,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"TokenTransferrerErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":537,"nodeType":"StructuredDocumentation","src":"57:40:9","text":" @title TokenTransferrerErrors"},"fullyImplemented":true,"id":594,"linearizedBaseContracts":[594],"name":"TokenTransferrerErrors","nameLocation":"108:22:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":538,"nodeType":"StructuredDocumentation","src":"137:121:9","text":" @dev Revert with an error when an ERC721 transfer with amount other than\n      one is attempted."},"errorSelector":"efcc00b1","id":540,"name":"InvalidERC721TransferAmount","nameLocation":"269:27:9","nodeType":"ErrorDefinition","parameters":{"id":539,"nodeType":"ParameterList","parameters":[],"src":"296:2:9"},"src":"263:36:9"},{"documentation":{"id":541,"nodeType":"StructuredDocumentation","src":"305:129:9","text":" @dev Revert with an error when attempting to fulfill an order where an\n      item has an amount of zero."},"errorSelector":"91b3e514","id":543,"name":"MissingItemAmount","nameLocation":"445:17:9","nodeType":"ErrorDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[],"src":"462:2:9"},"src":"439:26:9"},{"documentation":{"id":544,"nodeType":"StructuredDocumentation","src":"471:427:9","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":546,"name":"UnusedItemParameters","nameLocation":"909:20:9","nodeType":"ErrorDefinition","parameters":{"id":545,"nodeType":"ParameterList","parameters":[],"src":"929:2:9"},"src":"903:29:9"},{"documentation":{"id":547,"nodeType":"StructuredDocumentation","src":"938:455:9","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":559,"name":"TokenTransferGenericFailure","nameLocation":"1404:27:9","nodeType":"ErrorDefinition","parameters":{"id":558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":549,"mutability":"mutable","name":"token","nameLocation":"1449:5:9","nodeType":"VariableDeclaration","scope":559,"src":"1441:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":548,"name":"address","nodeType":"ElementaryTypeName","src":"1441:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":551,"mutability":"mutable","name":"from","nameLocation":"1472:4:9","nodeType":"VariableDeclaration","scope":559,"src":"1464:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"1464:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":553,"mutability":"mutable","name":"to","nameLocation":"1494:2:9","nodeType":"VariableDeclaration","scope":559,"src":"1486:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"identifier","nameLocation":"1514:10:9","nodeType":"VariableDeclaration","scope":559,"src":"1506:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":554,"name":"uint256","nodeType":"ElementaryTypeName","src":"1506:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":557,"mutability":"mutable","name":"amount","nameLocation":"1542:6:9","nodeType":"VariableDeclaration","scope":559,"src":"1534:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1431:123:9"},"src":"1398:157:9"},{"documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"1561:437:9","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":574,"name":"ERC1155BatchTransferGenericFailure","nameLocation":"2009:34:9","nodeType":"ErrorDefinition","parameters":{"id":573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"token","nameLocation":"2061:5:9","nodeType":"VariableDeclaration","scope":574,"src":"2053:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":561,"name":"address","nodeType":"ElementaryTypeName","src":"2053:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":564,"mutability":"mutable","name":"from","nameLocation":"2084:4:9","nodeType":"VariableDeclaration","scope":574,"src":"2076:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":563,"name":"address","nodeType":"ElementaryTypeName","src":"2076:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":566,"mutability":"mutable","name":"to","nameLocation":"2106:2:9","nodeType":"VariableDeclaration","scope":574,"src":"2098:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":565,"name":"address","nodeType":"ElementaryTypeName","src":"2098:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":569,"mutability":"mutable","name":"identifiers","nameLocation":"2128:11:9","nodeType":"VariableDeclaration","scope":574,"src":"2118:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":567,"name":"uint256","nodeType":"ElementaryTypeName","src":"2118:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":568,"nodeType":"ArrayTypeName","src":"2118:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":572,"mutability":"mutable","name":"amounts","nameLocation":"2159:7:9","nodeType":"VariableDeclaration","scope":574,"src":"2149:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":571,"nodeType":"ArrayTypeName","src":"2149:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2043:129:9"},"src":"2003:170:9"},{"documentation":{"id":575,"nodeType":"StructuredDocumentation","src":"2179:406:9","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":585,"name":"BadReturnValueFromERC20OnTransfer","nameLocation":"2596:33:9","nodeType":"ErrorDefinition","parameters":{"id":584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"token","nameLocation":"2647:5:9","nodeType":"VariableDeclaration","scope":585,"src":"2639:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":579,"mutability":"mutable","name":"from","nameLocation":"2670:4:9","nodeType":"VariableDeclaration","scope":585,"src":"2662:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":578,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":581,"mutability":"mutable","name":"to","nameLocation":"2692:2:9","nodeType":"VariableDeclaration","scope":585,"src":"2684:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":580,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":583,"mutability":"mutable","name":"amount","nameLocation":"2712:6:9","nodeType":"VariableDeclaration","scope":585,"src":"2704:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":582,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2629:95:9"},"src":"2590:135:9"},{"documentation":{"id":586,"nodeType":"StructuredDocumentation","src":"2731:215:9","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":590,"name":"NoContract","nameLocation":"2957:10:9","nodeType":"ErrorDefinition","parameters":{"id":589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":588,"mutability":"mutable","name":"account","nameLocation":"2976:7:9","nodeType":"VariableDeclaration","scope":590,"src":"2968:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":587,"name":"address","nodeType":"ElementaryTypeName","src":"2968:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2967:17:9"},"src":"2951:34:9"},{"documentation":{"id":591,"nodeType":"StructuredDocumentation","src":"2991:224:9","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":593,"name":"Invalid1155BatchTransferEncoding","nameLocation":"3226:32:9","nodeType":"ErrorDefinition","parameters":{"id":592,"nodeType":"ParameterList","parameters":[],"src":"3258:2:9"},"src":"3220:41:9"}],"scope":595,"src":"98:3165:9","usedErrors":[540,543,546,559,574,585,590,593]}],"src":"32:3232:9"},"id":9},"contracts/lib/Assertions.sol":{"ast":{"absolutePath":"contracts/lib/Assertions.sol","exportedSymbols":{"Assertions":[632],"CounterManager":[1711],"GettersAndDerivers":[2300],"TokenTransferrerErrors":[594]},"id":633,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":596,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:10"},{"absolutePath":"contracts/lib/GettersAndDerivers.sol","file":"./GettersAndDerivers.sol","id":598,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":633,"sourceUnit":2301,"src":"58:62:10","symbolAliases":[{"foreign":{"id":597,"name":"GettersAndDerivers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"67:18:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/TokenTransferrerErrors.sol","file":"../interfaces/TokenTransferrerErrors.sol","id":600,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":633,"sourceUnit":595,"src":"122:86:10","symbolAliases":[{"foreign":{"id":599,"name":"TokenTransferrerErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"135:22:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/CounterManager.sol","file":"./CounterManager.sol","id":602,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":633,"sourceUnit":1712,"src":"210:54:10","symbolAliases":[{"foreign":{"id":601,"name":"CounterManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1711,"src":"219:14:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":603,"name":"GettersAndDerivers","nodeType":"IdentifierPath","referencedDeclaration":2300,"src":"293:18:10"},"id":604,"nodeType":"InheritanceSpecifier","src":"293:18:10"},{"baseName":{"id":605,"name":"CounterManager","nodeType":"IdentifierPath","referencedDeclaration":1711,"src":"317:14:10"},"id":606,"nodeType":"InheritanceSpecifier","src":"317:14:10"},{"baseName":{"id":607,"name":"TokenTransferrerErrors","nodeType":"IdentifierPath","referencedDeclaration":594,"src":"337:22:10"},"id":608,"nodeType":"InheritanceSpecifier","src":"337:22:10"}],"canonicalName":"Assertions","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":632,"linearizedBaseContracts":[632,594,1711,4038,516,497,2300,1030],"name":"Assertions","nameLocation":"275:10:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":616,"nodeType":"Block","src":"455:2:10","statements":[]},"id":617,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":613,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":610,"src":"432:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":614,"kind":"baseConstructorSpecifier","modifierName":{"id":612,"name":"GettersAndDerivers","nodeType":"IdentifierPath","referencedDeclaration":2300,"src":"413:18:10"},"nodeType":"ModifierInvocation","src":"413:37:10"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":610,"mutability":"mutable","name":"conduitController","nameLocation":"386:17:10","nodeType":"VariableDeclaration","scope":617,"src":"378:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":609,"name":"address","nodeType":"ElementaryTypeName","src":"378:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"377:27:10"},"returnParameters":{"id":615,"nodeType":"ParameterList","parameters":[],"src":"455:0:10"},"scope":632,"src":"366:91:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":630,"nodeType":"Block","src":"523:143:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":622,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"596:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"606:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"596:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":629,"nodeType":"IfStatement","src":"592:68:10","trueBody":{"id":628,"nodeType":"Block","src":"609:51:10","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":625,"name":"MissingItemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":543,"src":"630:17:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"630:19:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":627,"nodeType":"RevertStatement","src":"623:26:10"}]}}]},"id":631,"implemented":true,"kind":"function","modifiers":[],"name":"_assertNonZeroAmount","nameLocation":"472:20:10","nodeType":"FunctionDefinition","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":619,"mutability":"mutable","name":"amount","nameLocation":"501:6:10","nodeType":"VariableDeclaration","scope":631,"src":"493:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":618,"name":"uint256","nodeType":"ElementaryTypeName","src":"493:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"492:16:10"},"returnParameters":{"id":621,"nodeType":"ParameterList","parameters":[],"src":"523:0:10"},"scope":632,"src":"463:203:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":633,"src":"266:402:10","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496,515,540,543,546,559,574,585,590,593]}],"src":"32:637:10"},"id":10},"contracts/lib/Consideration.sol":{"ast":{"absolutePath":"contracts/lib/Consideration.sol","exportedSymbols":{"Consideration":[863],"Order":[1641],"OrderComponents":[1600],"OrderFulfiller":[3157],"OrderParameters":[1635],"OrderStatus":[1658]},"id":864,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":634,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:11"},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":639,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":864,"sourceUnit":1659,"src":"58:114:11","symbolAliases":[{"foreign":{"id":635,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"71:15:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":636,"name":"OrderComponents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"92:15:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":637,"name":"OrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"113:11:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":638,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"130:5:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/OrderFulfiller.sol","file":"./OrderFulfiller.sol","id":641,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":864,"sourceUnit":3158,"src":"174:58:11","symbolAliases":[{"foreign":{"id":640,"name":"OrderFulfiller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"187:14:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":642,"name":"OrderFulfiller","nodeType":"IdentifierPath","referencedDeclaration":3157,"src":"260:14:11"},"id":643,"nodeType":"InheritanceSpecifier","src":"260:14:11"}],"canonicalName":"Consideration","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":863,"linearizedBaseContracts":[863,3157,3984,4152,2186,4266,4709,4190,2340,534,632,594,1711,4038,516,497,2300,1030],"name":"Consideration","nameLocation":"243:13:11","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":648,"mutability":"mutable","name":"_orderStatus","nameLocation":"322:12:11","nodeType":"VariableDeclaration","scope":863,"src":"282:52:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus)"},"typeName":{"id":647,"keyType":{"id":644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"290:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"282:31:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus)"},"valueType":{"id":646,"nodeType":"UserDefinedTypeName","pathNode":{"id":645,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"301:11:11"},"referencedDeclaration":1658,"src":"301:11:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}}},"visibility":"private"},{"body":{"id":659,"nodeType":"Block","src":"448:2:11","statements":[]},"id":660,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":655,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"416:17:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":656,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"435:11:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":657,"kind":"baseConstructorSpecifier","modifierName":{"id":654,"name":"OrderFulfiller","nodeType":"IdentifierPath","referencedDeclaration":3157,"src":"401:14:11"},"nodeType":"ModifierInvocation","src":"401:46:11"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":650,"mutability":"mutable","name":"conduitController","nameLocation":"361:17:11","nodeType":"VariableDeclaration","scope":660,"src":"353:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":649,"name":"address","nodeType":"ElementaryTypeName","src":"353:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":652,"mutability":"mutable","name":"shadowToken","nameLocation":"388:11:11","nodeType":"VariableDeclaration","scope":660,"src":"380:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":651,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"352:48:11"},"returnParameters":{"id":658,"nodeType":"ParameterList","parameters":[],"src":"448:0:11"},"scope":863,"src":"341:109:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":677,"nodeType":"Block","src":"599:81:11","statements":[{"expression":{"id":675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":670,"name":"fulfilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"609:9:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":672,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"646:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"}},{"id":673,"name":"fulfillerConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"653:19:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":671,"name":"_validateAndFulfillOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2652,"src":"621:24:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Order_$1641_calldata_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct Order calldata,bytes32) returns (bool)"}},"id":674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"621:52:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"609:64:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":676,"nodeType":"ExpressionStatement","src":"609:64:11"}]},"functionSelector":"be92d18e","id":678,"implemented":true,"kind":"function","modifiers":[],"name":"fulfillOrder","nameLocation":"465:12:11","nodeType":"FunctionDefinition","parameters":{"id":666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":663,"mutability":"mutable","name":"order","nameLocation":"493:5:11","nodeType":"VariableDeclaration","scope":678,"src":"478:20:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order"},"typeName":{"id":662,"nodeType":"UserDefinedTypeName","pathNode":{"id":661,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":1641,"src":"478:5:11"},"referencedDeclaration":1641,"src":"478:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_storage_ptr","typeString":"struct Order"}},"visibility":"internal"},{"constant":false,"id":665,"mutability":"mutable","name":"fulfillerConduitKey","nameLocation":"508:19:11","nodeType":"VariableDeclaration","scope":678,"src":"500:27:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"500:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"477:51:11"},"returnParameters":{"id":669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":668,"mutability":"mutable","name":"fulfilled","nameLocation":"584:9:11","nodeType":"VariableDeclaration","scope":678,"src":"579:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":667,"name":"bool","nodeType":"ElementaryTypeName","src":"579:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"578:16:11"},"scope":863,"src":"456:224:11","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":698,"nodeType":"Block","src":"857:91:11","statements":[{"expression":{"id":696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":690,"name":"repaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"867:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":692,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":681,"src":"899:10:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":693,"name":"fulfillerConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":683,"src":"911:19:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":694,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"932:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":691,"name":"_validateAndRepayOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"876:22:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_bytes32_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct OrderParameters calldata,bytes32,uint256) returns (bool)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"876:65:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"867:74:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":697,"nodeType":"ExpressionStatement","src":"867:74:11"}]},"functionSelector":"d9e53411","id":699,"implemented":true,"kind":"function","modifiers":[],"name":"repayOrder","nameLocation":"695:10:11","nodeType":"FunctionDefinition","parameters":{"id":686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":681,"mutability":"mutable","name":"parameters","nameLocation":"731:10:11","nodeType":"VariableDeclaration","scope":699,"src":"706:35:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":680,"nodeType":"UserDefinedTypeName","pathNode":{"id":679,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"706:15:11"},"referencedDeclaration":1635,"src":"706:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":683,"mutability":"mutable","name":"fulfillerConduitKey","nameLocation":"751:19:11","nodeType":"VariableDeclaration","scope":699,"src":"743:27:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":682,"name":"bytes32","nodeType":"ElementaryTypeName","src":"743:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":685,"mutability":"mutable","name":"payTimes","nameLocation":"780:8:11","nodeType":"VariableDeclaration","scope":699,"src":"772:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":684,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"705:84:11"},"returnParameters":{"id":689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":688,"mutability":"mutable","name":"repaid","nameLocation":"845:6:11","nodeType":"VariableDeclaration","scope":699,"src":"840:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":687,"name":"bool","nodeType":"ElementaryTypeName","src":"840:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"839:13:11"},"scope":863,"src":"686:262:11","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":713,"nodeType":"Block","src":"1062:60:11","statements":[{"expression":{"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":707,"name":"broken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"1072:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":709,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"1104:10:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}],"id":708,"name":"_validateAndBreakOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"1081:22:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct OrderParameters calldata) returns (bool)"}},"id":710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1081:34:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1072:43:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":712,"nodeType":"ExpressionStatement","src":"1072:43:11"}]},"functionSelector":"a3210e7c","id":714,"implemented":true,"kind":"function","modifiers":[],"name":"breakOrder","nameLocation":"963:10:11","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":702,"mutability":"mutable","name":"parameters","nameLocation":"999:10:11","nodeType":"VariableDeclaration","scope":714,"src":"974:35:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":701,"nodeType":"UserDefinedTypeName","pathNode":{"id":700,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"974:15:11"},"referencedDeclaration":1635,"src":"974:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"src":"973:37:11"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"broken","nameLocation":"1050:6:11","nodeType":"VariableDeclaration","scope":714,"src":"1045:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":704,"name":"bool","nodeType":"ElementaryTypeName","src":"1045:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1044:13:11"},"scope":863,"src":"954:168:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":729,"nodeType":"Block","src":"1233:44:11","statements":[{"expression":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":723,"name":"cancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"1243:9:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":725,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"1263:6:11","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents calldata[] calldata"}],"id":724,"name":"_cancel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"1255:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct OrderComponents calldata[] calldata) returns (bool)"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1255:15:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1243:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":728,"nodeType":"ExpressionStatement","src":"1243:27:11"}]},"functionSelector":"9432cc1d","id":730,"implemented":true,"kind":"function","modifiers":[],"name":"cancel","nameLocation":"1137:6:11","nodeType":"FunctionDefinition","parameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"orders","nameLocation":"1171:6:11","nodeType":"VariableDeclaration","scope":730,"src":"1144:33:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents[]"},"typeName":{"baseType":{"id":716,"nodeType":"UserDefinedTypeName","pathNode":{"id":715,"name":"OrderComponents","nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"1144:15:11"},"referencedDeclaration":1600,"src":"1144:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_storage_ptr","typeString":"struct OrderComponents"}},"id":717,"nodeType":"ArrayTypeName","src":"1144:17:11","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$1600_storage_$dyn_storage_ptr","typeString":"struct OrderComponents[]"}},"visibility":"internal"}],"src":"1143:35:11"},"returnParameters":{"id":722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":721,"mutability":"mutable","name":"cancelled","nameLocation":"1218:9:11","nodeType":"VariableDeclaration","scope":730,"src":"1213:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":720,"name":"bool","nodeType":"ElementaryTypeName","src":"1213:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1212:16:11"},"scope":863,"src":"1128:149:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":745,"nodeType":"Block","src":"1380:46:11","statements":[{"expression":{"id":743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":739,"name":"validated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"1390:9:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":741,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"1412:6:11","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order calldata[] calldata"}],"id":740,"name":"_validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"1402:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct Order calldata[] calldata) returns (bool)"}},"id":742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1402:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1390:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":744,"nodeType":"ExpressionStatement","src":"1390:29:11"}]},"functionSelector":"22378003","id":746,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1292:8:11","nodeType":"FunctionDefinition","parameters":{"id":735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":734,"mutability":"mutable","name":"orders","nameLocation":"1318:6:11","nodeType":"VariableDeclaration","scope":746,"src":"1301:23:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order[]"},"typeName":{"baseType":{"id":732,"nodeType":"UserDefinedTypeName","pathNode":{"id":731,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":1641,"src":"1301:5:11"},"referencedDeclaration":1641,"src":"1301:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_storage_ptr","typeString":"struct Order"}},"id":733,"nodeType":"ArrayTypeName","src":"1301:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$1641_storage_$dyn_storage_ptr","typeString":"struct Order[]"}},"visibility":"internal"}],"src":"1300:25:11"},"returnParameters":{"id":738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":737,"mutability":"mutable","name":"validated","nameLocation":"1365:9:11","nodeType":"VariableDeclaration","scope":746,"src":"1360:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":736,"name":"bool","nodeType":"ElementaryTypeName","src":"1360:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1359:16:11"},"scope":863,"src":"1283:143:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":756,"nodeType":"Block","src":"1498:49:11","statements":[{"expression":{"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":751,"name":"newCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":749,"src":"1508:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":752,"name":"_incrementCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1696,"src":"1521:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1521:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1508:32:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":755,"nodeType":"ExpressionStatement","src":"1508:32:11"}]},"functionSelector":"5b34b966","id":757,"implemented":true,"kind":"function","modifiers":[],"name":"incrementCounter","nameLocation":"1441:16:11","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[],"src":"1457:2:11"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"newCounter","nameLocation":"1486:10:11","nodeType":"VariableDeclaration","scope":757,"src":"1478:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":748,"name":"uint256","nodeType":"ElementaryTypeName","src":"1478:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1477:20:11"},"scope":863,"src":"1432:115:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":808,"nodeType":"Block","src":"1677:654:11","statements":[{"expression":{"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":765,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":763,"src":"1687:9:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":768,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"1762:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1565,"src":"1762:13:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":770,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"1793:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1567,"src":"1793:11:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":772,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"1822:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":1569,"src":"1822:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":774,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"1856:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1571,"src":"1856:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":776,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"1888:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":1573,"src":"1888:12:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":778,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"1918:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":1575,"src":"1918:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":780,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"1950:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":1577,"src":"1950:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":782,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"1983:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"endTime","nodeType":"MemberAccess","referencedDeclaration":1579,"src":"1983:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":784,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2014:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":1581,"src":"2014:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":786,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2046:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1583,"src":"2046:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":788,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2077:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1585,"src":"2077:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":790,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2107:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":1587,"src":"2107:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":792,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2136:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1589,"src":"2136:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":794,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2167:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":1591,"src":"2167:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":796,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2194:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawFee","nodeType":"MemberAccess","referencedDeclaration":1593,"src":"2194:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":798,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2229:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":1595,"src":"2229:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":800,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2257:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":1597,"src":"2257:16:11","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":767,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"1729:15:11","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OrderParameters_$1635_storage_ptr_$","typeString":"type(struct OrderParameters storage pointer)"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1729:558:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_memory_ptr","typeString":"struct OrderParameters memory"}},{"expression":{"id":803,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"2301:5:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"counter","nodeType":"MemberAccess","referencedDeclaration":1599,"src":"2301:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_memory_ptr","typeString":"struct OrderParameters memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":766,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"1699:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$1635_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1699:625:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1687:637:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":807,"nodeType":"ExpressionStatement","src":"1687:637:11"}]},"functionSelector":"b86ae9e1","id":809,"implemented":true,"kind":"function","modifiers":[],"name":"getOrderHash","nameLocation":"1562:12:11","nodeType":"FunctionDefinition","parameters":{"id":761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":760,"mutability":"mutable","name":"order","nameLocation":"1600:5:11","nodeType":"VariableDeclaration","scope":809,"src":"1575:30:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents"},"typeName":{"id":759,"nodeType":"UserDefinedTypeName","pathNode":{"id":758,"name":"OrderComponents","nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"1575:15:11"},"referencedDeclaration":1600,"src":"1575:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_storage_ptr","typeString":"struct OrderComponents"}},"visibility":"internal"}],"src":"1574:32:11"},"returnParameters":{"id":764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":763,"mutability":"mutable","name":"orderHash","nameLocation":"1662:9:11","nodeType":"VariableDeclaration","scope":809,"src":"1654:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":762,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1654:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1653:19:11"},"scope":863,"src":"1553:778:11","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":834,"nodeType":"Block","src":"2681:50:11","statements":[{"expression":{"arguments":[{"id":831,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"2714:9:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":830,"name":"_getOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3983,"src":"2698:15:11","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":832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2698:26:11","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":829,"id":833,"nodeType":"Return","src":"2691:33:11"}]},"functionSelector":"46423aa7","id":835,"implemented":true,"kind":"function","modifiers":[],"name":"getOrderStatus","nameLocation":"2346:14:11","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"orderHash","nameLocation":"2369:9:11","nodeType":"VariableDeclaration","scope":835,"src":"2361:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2361:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2360:19:11"},"returnParameters":{"id":829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":814,"mutability":"mutable","name":"isValidated","nameLocation":"2445:11:11","nodeType":"VariableDeclaration","scope":835,"src":"2440:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":813,"name":"bool","nodeType":"ElementaryTypeName","src":"2440:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":816,"mutability":"mutable","name":"isCancelled","nameLocation":"2475:11:11","nodeType":"VariableDeclaration","scope":835,"src":"2470:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":815,"name":"bool","nodeType":"ElementaryTypeName","src":"2470:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":818,"mutability":"mutable","name":"isFinalized","nameLocation":"2505:11:11","nodeType":"VariableDeclaration","scope":835,"src":"2500:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":817,"name":"bool","nodeType":"ElementaryTypeName","src":"2500:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":820,"mutability":"mutable","name":"isBroken","nameLocation":"2535:8:11","nodeType":"VariableDeclaration","scope":835,"src":"2530:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":819,"name":"bool","nodeType":"ElementaryTypeName","src":"2530:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":822,"mutability":"mutable","name":"fulfiller","nameLocation":"2565:9:11","nodeType":"VariableDeclaration","scope":835,"src":"2557:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":821,"name":"address","nodeType":"ElementaryTypeName","src":"2557:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":824,"mutability":"mutable","name":"startedAt","nameLocation":"2596:9:11","nodeType":"VariableDeclaration","scope":835,"src":"2588:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":823,"name":"uint256","nodeType":"ElementaryTypeName","src":"2588:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":826,"mutability":"mutable","name":"shadowId","nameLocation":"2627:8:11","nodeType":"VariableDeclaration","scope":835,"src":"2619:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"2619:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":828,"mutability":"mutable","name":"paidTimes","nameLocation":"2657:9:11","nodeType":"VariableDeclaration","scope":835,"src":"2649:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":827,"name":"uint256","nodeType":"ElementaryTypeName","src":"2649:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2426:250:11"},"scope":863,"src":"2337:394:11","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":848,"nodeType":"Block","src":"2842:47:11","statements":[{"expression":{"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":842,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2852:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":844,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":837,"src":"2874:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":843,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"2862:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2862:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2852:30:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":847,"nodeType":"ExpressionStatement","src":"2852:30:11"}]},"functionSelector":"f07ec373","id":849,"implemented":true,"kind":"function","modifiers":[],"name":"getCounter","nameLocation":"2746:10:11","nodeType":"FunctionDefinition","parameters":{"id":838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":837,"mutability":"mutable","name":"offerer","nameLocation":"2765:7:11","nodeType":"VariableDeclaration","scope":849,"src":"2757:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":836,"name":"address","nodeType":"ElementaryTypeName","src":"2757:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2756:17:11"},"returnParameters":{"id":841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":840,"mutability":"mutable","name":"counter","nameLocation":"2829:7:11","nodeType":"VariableDeclaration","scope":849,"src":"2821:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":839,"name":"uint256","nodeType":"ElementaryTypeName","src":"2821:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2820:17:11"},"scope":863,"src":"2737:152:11","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":861,"nodeType":"Block","src":"3090:38:11","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":858,"name":"_information","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"3107:12:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_bytes32_$_t_address_$","typeString":"function () view returns (string memory,bytes32,address)"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3107:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_bytes32_$_t_address_$","typeString":"tuple(string memory,bytes32,address)"}},"functionReturnParameters":857,"id":860,"nodeType":"Return","src":"3100:21:11"}]},"functionSelector":"f47b7740","id":862,"implemented":true,"kind":"function","modifiers":[],"name":"information","nameLocation":"2904:11:11","nodeType":"FunctionDefinition","parameters":{"id":850,"nodeType":"ParameterList","parameters":[],"src":"2915:2:11"},"returnParameters":{"id":857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"version","nameLocation":"2992:7:11","nodeType":"VariableDeclaration","scope":862,"src":"2978:21:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":851,"name":"string","nodeType":"ElementaryTypeName","src":"2978:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":854,"mutability":"mutable","name":"domainSeparator","nameLocation":"3021:15:11","nodeType":"VariableDeclaration","scope":862,"src":"3013:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3013:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":856,"mutability":"mutable","name":"conduitController","nameLocation":"3058:17:11","nodeType":"VariableDeclaration","scope":862,"src":"3050:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":855,"name":"address","nodeType":"ElementaryTypeName","src":"3050:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2964:121:11"},"scope":863,"src":"2895:233:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":864,"src":"234:2896:11","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496,515,524,527,530,533,540,543,546,559,574,585,590,593]}],"src":"32:3098:11"},"id":11},"contracts/lib/ConsiderationBase.sol":{"ast":{"absolutePath":"contracts/lib/ConsiderationBase.sol","exportedSymbols":{"ConduitControllerInterface":[269],"ConsiderationBase":[1030]},"id":1031,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":865,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:12"},{"absolutePath":"contracts/interfaces/ConduitControllerInterface.sol","file":"../interfaces/ConduitControllerInterface.sol","id":867,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1031,"sourceUnit":270,"src":"58:94:12","symbolAliases":[{"foreign":{"id":866,"name":"ConduitControllerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":269,"src":"71:26:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ConsiderationBase","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":1030,"linearizedBaseContracts":[1030],"name":"ConsiderationBase","nameLocation":"163:17:12","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":869,"mutability":"immutable","name":"_NAME_HASH","nameLocation":"214:10:12","nodeType":"VariableDeclaration","scope":1030,"src":"187:37:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"187:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":871,"mutability":"immutable","name":"_VERSION_HASH","nameLocation":"257:13:12","nodeType":"VariableDeclaration","scope":1030,"src":"230:40:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":870,"name":"bytes32","nodeType":"ElementaryTypeName","src":"230:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":873,"mutability":"immutable","name":"_EIP_712_DOMAIN_TYPEHASH","nameLocation":"303:24:12","nodeType":"VariableDeclaration","scope":1030,"src":"276:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":872,"name":"bytes32","nodeType":"ElementaryTypeName","src":"276:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":875,"mutability":"immutable","name":"_ORDER_TYPEHASH","nameLocation":"360:15:12","nodeType":"VariableDeclaration","scope":1030,"src":"333:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":874,"name":"bytes32","nodeType":"ElementaryTypeName","src":"333:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":877,"mutability":"immutable","name":"_CHAIN_ID","nameLocation":"408:9:12","nodeType":"VariableDeclaration","scope":1030,"src":"381:36:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":876,"name":"uint256","nodeType":"ElementaryTypeName","src":"381:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":879,"mutability":"immutable","name":"_DOMAIN_SEPARATOR","nameLocation":"450:17:12","nodeType":"VariableDeclaration","scope":1030,"src":"423:44:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"423:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":882,"mutability":"immutable","name":"_CONDUIT_CONTROLLER","nameLocation":"520:19:12","nodeType":"VariableDeclaration","scope":1030,"src":"474:65:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"},"typeName":{"id":881,"nodeType":"UserDefinedTypeName","pathNode":{"id":880,"name":"ConduitControllerInterface","nodeType":"IdentifierPath","referencedDeclaration":269,"src":"474:26:12"},"referencedDeclaration":269,"src":"474:26:12","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}},"visibility":"internal"},{"constant":false,"id":884,"mutability":"immutable","name":"_CONDUIT_CREATION_CODE_HASH","nameLocation":"572:27:12","nodeType":"VariableDeclaration","scope":1030,"src":"545:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"545:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"body":{"id":922,"nodeType":"Block","src":"645:446:12","statements":[{"expression":{"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":889,"name":"_NAME_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":869,"src":"669:10:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":890,"name":"_VERSION_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"693:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":891,"name":"_EIP_712_DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"720:24:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":892,"name":"_ORDER_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"758:15:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":893,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"655:128:12","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":894,"name":"_deriveTypehashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"786:17:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$","typeString":"function () pure returns (bytes32,bytes32,bytes32,bytes32)"}},"id":895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"786:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32,bytes32,bytes32)"}},"src":"655:150:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":897,"nodeType":"ExpressionStatement","src":"655:150:12"},{"expression":{"id":901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":898,"name":"_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"816:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":899,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"828:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chainid","nodeType":"MemberAccess","src":"828:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"816:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":902,"nodeType":"ExpressionStatement","src":"816:25:12"},{"expression":{"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":903,"name":"_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":879,"src":"851:17:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":904,"name":"_deriveDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"871:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"871:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"851:44:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":907,"nodeType":"ExpressionStatement","src":"851:44:12"},{"expression":{"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":908,"name":"_CONDUIT_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"906:19:12","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":910,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":886,"src":"955:17:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":909,"name":"ConduitControllerInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":269,"src":"928:26:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ConduitControllerInterface_$269_$","typeString":"type(contract ConduitControllerInterface)"}},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"928:45:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}},"src":"906:67:12","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}},"id":913,"nodeType":"ExpressionStatement","src":"906:67:12"},{"expression":{"id":920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":914,"name":"_CONDUIT_CREATION_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"985:27:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},null],"id":915,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"984:31:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$__$","typeString":"tuple(bytes32,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":916,"name":"_CONDUIT_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"1032:19:12","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}},"id":917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getConduitCodeHashes","nodeType":"MemberAccess","referencedDeclaration":268,"src":"1032:40:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$_t_bytes32_$","typeString":"function () view external returns (bytes32,bytes32)"}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1032:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}}],"id":919,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1018:66:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$","typeString":"tuple(bytes32,bytes32)"}},"src":"984:100:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":921,"nodeType":"ExpressionStatement","src":"984:100:12"}]},"id":923,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":886,"mutability":"mutable","name":"conduitController","nameLocation":"626:17:12","nodeType":"VariableDeclaration","scope":923,"src":"618:25:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":885,"name":"address","nodeType":"ElementaryTypeName","src":"618:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"617:27:12"},"returnParameters":{"id":888,"nodeType":"ParameterList","parameters":[],"src":"645:0:12"},"scope":1030,"src":"606:485:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":943,"nodeType":"Block","src":"1163:244:12","statements":[{"expression":{"arguments":[{"arguments":[{"id":931,"name":"_EIP_712_DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"1231:24:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":932,"name":"_NAME_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":869,"src":"1273:10:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":933,"name":"_VERSION_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"1301:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":934,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1332:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chainid","nodeType":"MemberAccess","src":"1332:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":938,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1371:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_ConsiderationBase_$1030","typeString":"contract ConsiderationBase"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ConsiderationBase_$1030","typeString":"contract ConsiderationBase"}],"id":937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1363:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:12","typeDescriptions":{}}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1363:13:12","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":929,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1203:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1203:10:12","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1203:187:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":928,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1180:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1180:220:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":927,"id":942,"nodeType":"Return","src":"1173:227:12"}]},"id":944,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveDomainSeparator","nameLocation":"1106:22:12","nodeType":"FunctionDefinition","parameters":{"id":924,"nodeType":"ParameterList","parameters":[],"src":"1128:2:12"},"returnParameters":{"id":927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":926,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":944,"src":"1154:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1154:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1153:9:12"},"scope":1030,"src":"1097:310:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":951,"nodeType":"Block","src":"1482:39:12","statements":[{"expression":{"hexValue":"436f6e73696465726174696f6e","id":949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1499:15:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_64987f6373075400d7cbff689f2b7bc23753c7e6ce20688196489b8f5d9d7e6c","typeString":"literal_string \"Consideration\""},"value":"Consideration"},"functionReturnParameters":948,"id":950,"nodeType":"Return","src":"1492:22:12"}]},"id":952,"implemented":true,"kind":"function","modifiers":[],"name":"_nameString","nameLocation":"1422:11:12","nodeType":"FunctionDefinition","parameters":{"id":945,"nodeType":"ParameterList","parameters":[],"src":"1433:2:12"},"returnParameters":{"id":948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":952,"src":"1467:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":946,"name":"string","nodeType":"ElementaryTypeName","src":"1467:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1466:15:12"},"scope":1030,"src":"1413:108:12","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":1028,"nodeType":"Block","src":"1757:1261:12","statements":[{"expression":{"id":971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":963,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"1767:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":967,"name":"_nameString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"1794:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1794:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1788:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"1788:5:12","typeDescriptions":{}}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1788:20:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":964,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1778:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1778:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1767:42:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":972,"nodeType":"ExpressionStatement","src":"1767:42:12"},{"expression":{"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":973,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"1820:11:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"312e30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1850:5:12","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":976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1844:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":975,"name":"bytes","nodeType":"ElementaryTypeName","src":"1844:5:12","typeDescriptions":{}}},"id":978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1844:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":974,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1834:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1834:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1820:37:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":981,"nodeType":"ExpressionStatement","src":"1820:37:12"},{"assignments":[983],"declarations":[{"constant":false,"id":983,"mutability":"mutable","name":"orderComponentsTypeString","nameLocation":"1881:25:12","nodeType":"VariableDeclaration","scope":1028,"src":"1868:38:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":982,"name":"bytes","nodeType":"ElementaryTypeName","src":"1868:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1007,"initialValue":{"arguments":[{"hexValue":"4f72646572436f6d706f6e656e747328","id":986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1939:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573","typeString":"literal_string \"OrderComponents(\""},"value":"OrderComponents("},{"hexValue":"61646472657373206f6666657265722c","id":987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1975:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d","typeString":"literal_string \"address offerer,\""},"value":"address offerer,"},{"hexValue":"6164647265737320746f6b656e2c","id":988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2011:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e","typeString":"literal_string \"address token,\""},"value":"address token,"},{"hexValue":"75696e74323536206964656e7469666965722c","id":989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2045:21:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_950b0fa6cccf0f43f4b4c900bda1a8f202e015cc6c1388c0d8e70e9e4d9eba01","typeString":"literal_string \"uint256 identifier,\""},"value":"uint256 identifier,"},{"hexValue":"616464726573732063757272656e63792c","id":990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2084:19:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_730fc9298037064ee8a16acabf40e2f736ee915ea3b33a43601082509ee5a703","typeString":"literal_string \"address currency,\""},"value":"address currency,"},{"hexValue":"61646472657373206172746973742c","id":991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2121:17:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_b14a24e7c14d4a274948e20dd9702e0b26bf84aacdb4205f6747f9d44583e6d2","typeString":"literal_string \"address artist,\""},"value":"address artist,"},{"hexValue":"6164647265737320706c6174666f726d2c","id":992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2156:19:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d7ef1a8de55a9dc4a352f71348cd657d8ed5588b7ece47c04b8797fae4cd322","typeString":"literal_string \"address platform,\""},"value":"address platform,"},{"hexValue":"75696e7432353620737461727454696d652c","id":993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2193:20:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54","typeString":"literal_string \"uint256 startTime,\""},"value":"uint256 startTime,"},{"hexValue":"75696e7432353620656e6454696d652c","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2231:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51","typeString":"literal_string \"uint256 endTime,\""},"value":"uint256 endTime,"},{"hexValue":"75696e74323536206475726174696f6e2c","id":995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2267:19:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_9c709140b96a7a02cb064d387b760f7eadf40ef6b5fa0df388c4e381bebe2489","typeString":"literal_string \"uint256 duration,\""},"value":"uint256 duration,"},{"hexValue":"75696e7432353620706572696f64732c","id":996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2304:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_bab2d964cd781533b0c708fdf5fc736484d06b5a66307d3c90be8a615df99a38","typeString":"literal_string \"uint256 periods,\""},"value":"uint256 periods,"},{"hexValue":"75696e7432353620616d6f756e742c","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2340:17:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e4b4df0bc52bacb308e82cfcf25d646827feead2b3362489d77ab48dbd9a8b3","typeString":"literal_string \"uint256 amount,\""},"value":"uint256 amount,"},{"hexValue":"75696e7432353620726174696f2c","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2375:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_89a92d996700c3d801d357a2355635964def19b0ec5fba705a1343652491f64b","typeString":"literal_string \"uint256 ratio,\""},"value":"uint256 ratio,"},{"hexValue":"75696e7432353620726f79616c74792c","id":999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2409:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_5c661b7546d3abd9d89b59b7f16d26aa5054de63208029788007aae0b128ffb0","typeString":"literal_string \"uint256 royalty,\""},"value":"uint256 royalty,"},{"hexValue":"75696e74323536206665652c","id":1000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2445:14:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_b48f6b1015d611cae4bf9a131b9c382d92dd9226fdf0324bc8668f6fca937b21","typeString":"literal_string \"uint256 fee,\""},"value":"uint256 fee,"},{"hexValue":"75696e743235362077697468647261774665652c","id":1001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2477:22:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c2ad9a0b4bbe5d70496ec82c72118bfb4bb4aa1094f5a32e204732d612eaa59","typeString":"literal_string \"uint256 withdrawFee,\""},"value":"uint256 withdrawFee,"},{"hexValue":"75696e743235362073616c742c","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2517:15:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9","typeString":"literal_string \"uint256 salt,\""},"value":"uint256 salt,"},{"hexValue":"6279746573333220636f6e647569744b65792c","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2550:21:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83","typeString":"literal_string \"bytes32 conduitKey,\""},"value":"bytes32 conduitKey,"},{"hexValue":"75696e7432353620636f756e746572","id":1004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2589:17:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_41bac7af2af987b0e579b6aaa8752158ebd73285eabce9b3cf0f35841ddc906b","typeString":"literal_string \"uint256 counter\""},"value":"uint256 counter"},{"hexValue":"29","id":1005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2620:3:12","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":984,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1909:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1909:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1909:724:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1868:765:12"},{"expression":{"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1008,"name":"eip712DomainTypehash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"2644:20:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"454950373132446f6d61696e28","id":1012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2724:15:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a","typeString":"literal_string \"EIP712Domain(\""},"value":"EIP712Domain("},{"hexValue":"737472696e67206e616d652c","id":1013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2761:14:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597","typeString":"literal_string \"string name,\""},"value":"string name,"},{"hexValue":"737472696e672076657273696f6e2c","id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2797:17:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c","typeString":"literal_string \"string version,\""},"value":"string version,"},{"hexValue":"75696e7432353620636861696e49642c","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2836:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b","typeString":"literal_string \"uint256 chainId,\""},"value":"uint256 chainId,"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","id":1016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2876:27:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b","typeString":"literal_string \"address verifyingContract\""},"value":"address verifyingContract"},{"hexValue":"29","id":1017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2921:3:12","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":1010,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2690:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2690:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2690:248:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1009,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2667:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2667:281:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2644:304:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1021,"nodeType":"ExpressionStatement","src":"2644:304:12"},{"expression":{"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1022,"name":"orderTypehash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"2959:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1024,"name":"orderComponentsTypeString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":983,"src":"2985:25:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1023,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2975:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2975:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2959:52:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1027,"nodeType":"ExpressionStatement","src":"2959:52:12"}]},"id":1029,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveTypehashes","nameLocation":"1536:17:12","nodeType":"FunctionDefinition","parameters":{"id":953,"nodeType":"ParameterList","parameters":[],"src":"1553:2:12"},"returnParameters":{"id":962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":955,"mutability":"mutable","name":"nameHash","nameLocation":"1624:8:12","nodeType":"VariableDeclaration","scope":1029,"src":"1616:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":954,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1616:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":957,"mutability":"mutable","name":"versionHash","nameLocation":"1654:11:12","nodeType":"VariableDeclaration","scope":1029,"src":"1646:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1646:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":959,"mutability":"mutable","name":"eip712DomainTypehash","nameLocation":"1687:20:12","nodeType":"VariableDeclaration","scope":1029,"src":"1679:28:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1679:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":961,"mutability":"mutable","name":"orderTypehash","nameLocation":"1729:13:12","nodeType":"VariableDeclaration","scope":1029,"src":"1721:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":960,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1721:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1602:150:12"},"scope":1030,"src":"1527:1491:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1031,"src":"154:2866:12","usedErrors":[]}],"src":"32:2988:12"},"id":12},"contracts/lib/ConsiderationConstants.sol":{"ast":{"absolutePath":"contracts/lib/ConsiderationConstants.sol","exportedSymbols":{"AccumulatorArmed":[1462],"AccumulatorDisarmed":[1459],"Accumulator_array_length_ptr":[1474],"Accumulator_array_offset":[1480],"Accumulator_array_offset_ptr":[1471],"Accumulator_conduitKey_ptr":[1465],"Accumulator_itemSizeOffsetDifference":[1477],"Accumulator_selector_ptr":[1468],"AdditionalRecipients_size":[1179],"AdvancedOrder_numerator_offset":[1131],"AlmostOneWord":[1134],"BadContractSignature_error_length":[1545],"BadContractSignature_error_signature":[1542],"BadSignatureV_error_length":[1524],"BadSignatureV_error_offset":[1521],"BadSignatureV_error_signature":[1518],"BasicOrder_additionalRecipients_data_cdPtr":[1270],"BasicOrder_additionalRecipients_head_cdPtr":[1261],"BasicOrder_additionalRecipients_head_ptr":[1330],"BasicOrder_additionalRecipients_length_cdPtr":[1267],"BasicOrder_basicOrderType_cdPtr":[1246],"BasicOrder_basicOrderType_range":[1276],"BasicOrder_common_params_size":[1170],"BasicOrder_considerationAmount_cdPtr":[1231],"BasicOrder_considerationHashesArray_ptr":[1173],"BasicOrder_considerationItem_endAmount_ptr":[1294],"BasicOrder_considerationItem_identifier_ptr":[1288],"BasicOrder_considerationItem_itemType_ptr":[1282],"BasicOrder_considerationItem_startAmount_ptr":[1291],"BasicOrder_considerationItem_token_ptr":[1285],"BasicOrder_considerationItem_typeHash_ptr":[1279],"BasicOrder_considerationToken_cdPtr":[1228],"BasicOrder_endAmount_cdPtr":[1167],"BasicOrder_fulfillerConduit_cdPtr":[1255],"BasicOrder_offerAmount_cdPtr":[1243],"BasicOrder_offerItem_endAmount_ptr":[1306],"BasicOrder_offerItem_itemType_ptr":[1300],"BasicOrder_offerItem_token_ptr":[1303],"BasicOrder_offerItem_typeHash_ptr":[1297],"BasicOrder_offerToken_cdPtr":[1240],"BasicOrder_offererConduit_cdPtr":[1252],"BasicOrder_offerer_cdPtr":[1234],"BasicOrder_order_considerationHashes_ptr":[1318],"BasicOrder_order_counter_ptr":[1327],"BasicOrder_order_offerHashes_ptr":[1315],"BasicOrder_order_offerer_ptr":[1312],"BasicOrder_order_orderType_ptr":[1321],"BasicOrder_order_startTime_ptr":[1324],"BasicOrder_order_typeHash_ptr":[1309],"BasicOrder_parameters_cdPtr":[1225],"BasicOrder_parameters_ptr":[1273],"BasicOrder_signature_cdPtr":[1264],"BasicOrder_signature_ptr":[1333],"BasicOrder_startTime_cdPtr":[1249],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[1258],"BasicOrder_zone_cdPtr":[1237],"Common_amount_offset":[1062],"Common_identifier_offset":[1059],"Common_token_offset":[1056],"Conduit_execute_ConduitTransfer_length":[1429],"Conduit_execute_ConduitTransfer_length_ptr":[1435],"Conduit_execute_ConduitTransfer_offset_ptr":[1432],"Conduit_execute_ConduitTransfer_ptr":[1426],"Conduit_execute_signature":[1417],"Conduit_execute_transferAmount_ptr":[1453],"Conduit_execute_transferFrom_ptr":[1444],"Conduit_execute_transferIdentifier_ptr":[1450],"Conduit_execute_transferItemType_ptr":[1438],"Conduit_execute_transferTo_ptr":[1447],"Conduit_execute_transferToken_ptr":[1441],"Conduit_transferItem_amount_ptr":[1498],"Conduit_transferItem_from_ptr":[1489],"Conduit_transferItem_identifier_ptr":[1495],"Conduit_transferItem_size":[1483],"Conduit_transferItem_to_ptr":[1492],"Conduit_transferItem_token_ptr":[1486],"ConsiderItem_recipient_offset":[1080],"ConsiderationItem_recipient_offset":[1077],"CostPerWord":[1392],"Create2AddressDerivation_length":[1401],"Create2AddressDerivation_ptr":[1398],"DefaultFreeMemoryPointer":[1158],"ECDSA_MaxLength":[1344],"ECDSA_signature_s_offset":[1347],"ECDSA_signature_v_offset":[1350],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[1341],"EIP1271_isValidSignature_calldata_baseLength":[1366],"EIP1271_isValidSignature_digest_negativeOffset":[1360],"EIP1271_isValidSignature_selector":[1354],"EIP1271_isValidSignature_selector_negativeOffset":[1363],"EIP1271_isValidSignature_signatureHead_negativeOffset":[1357],"EIP1271_isValidSignature_signature_head_offset":[1369],"EIP2098_allButHighestBitMask":[1337],"EIP712_DigestPayload_size":[1188],"EIP712_DomainSeparator_offset":[1182],"EIP712_OrderHash_offset":[1185],"EIP712_Order_size":[1176],"EIP_712_PREFIX":[1386],"Ecrecover_args_size":[1511],"Ecrecover_precompile":[1508],"Execution_conduit_offset":[1086],"Execution_offerer_offset":[1083],"ExtraGasBuffer":[1389],"FiveWords":[1149],"FourWords":[1146],"FreeMemoryPointerSlot":[1152],"Fulfillment_itemIndex_offset":[1128],"InexactFraction_error_len":[1505],"InexactFraction_error_signature":[1502],"InvalidFulfillmentComponentData_error_len":[1093],"InvalidFulfillmentComponentData_error_signature":[1090],"InvalidSignature_error_length":[1538],"InvalidSignature_error_signature":[1535],"InvalidSigner_error_length":[1531],"InvalidSigner_error_signature":[1528],"MaskOverByteTwelve":[1405],"MaskOverFirstFourBytes":[1413],"MaskOverLastTwentyBytes":[1409],"MaxUint120":[1423],"MaxUint8":[1420],"MemoryExpansionCoefficient":[1395],"MissingItemAmount_error_len":[1113],"MissingItemAmount_error_signature":[1110],"NameLengthPtr":[1035],"NameWithLength":[1038],"NoContract_error_length":[1382],"NoContract_error_sig_ptr":[1376],"NoContract_error_signature":[1373],"NoContract_error_token_ptr":[1379],"NonMatchSelector_MagicModulus":[1551],"NonMatchSelector_MagicRemainder":[1554],"NumBitsAfterSelector":[1548],"OneConduitExecute_size":[1456],"OneWord":[1137],"OrderFulfilled_baseOffset":[1201],"OrderFulfilled_baseSize":[1194],"OrderFulfilled_consideration_body_offset":[1222],"OrderFulfilled_consideration_head_offset":[1219],"OrderFulfilled_consideration_length_baseOffset":[1204],"OrderFulfilled_fulfiller_offset":[1210],"OrderFulfilled_offer_body_offset":[1216],"OrderFulfilled_offer_head_offset":[1213],"OrderFulfilled_offer_length_baseOffset":[1207],"OrderFulfilled_selector":[1198],"OrderParameters_conduit_offset":[1122],"OrderParameters_consideration_head_offset":[1119],"OrderParameters_counter_offset":[1125],"OrderParameters_offer_head_offset":[1116],"Panic_arithmetic":[1106],"Panic_error_length":[1103],"Panic_error_offset":[1100],"Panic_error_signature":[1097],"ReceivedItem_CommonParams_size":[1074],"ReceivedItem_amount_offset":[1068],"ReceivedItem_recipient_offset":[1071],"ReceivedItem_size":[1065],"Signature_lower_v":[1514],"Slot0x80":[1161],"Slot0xA0":[1164],"ThreeWords":[1143],"TwoWords":[1140],"Version":[1041],"Version_length":[1044],"Version_shift":[1047],"ZeroSlot":[1155],"_ENTERED":[1053],"_NOT_ENTERED":[1050],"receivedItemsHash_ptr":[1191]},"id":1555,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1032,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:13"},{"constant":true,"id":1035,"mutability":"constant","name":"NameLengthPtr","nameLocation":"2112:13:13","nodeType":"VariableDeclaration","scope":1555,"src":"2095:35:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1033,"name":"uint256","nodeType":"ElementaryTypeName","src":"2095:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3737","id":1034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2128:2:13","typeDescriptions":{"typeIdentifier":"t_rational_77_by_1","typeString":"int_const 77"},"value":"77"},"visibility":"internal"},{"constant":true,"id":1038,"mutability":"constant","name":"NameWithLength","nameLocation":"2149:14:13","nodeType":"VariableDeclaration","scope":1555,"src":"2132:64:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1036,"name":"uint256","nodeType":"ElementaryTypeName","src":"2132:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830643433364636453733363936343635373236313734363936463645","id":1037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2166:30:13","typeDescriptions":{"typeIdentifier":"t_rational_269014098098874041013807413292910_by_1","typeString":"int_const 2690...(25 digits omitted)...2910"},"value":"0x0d436F6E73696465726174696F6E"},"visibility":"internal"},{"constant":true,"id":1041,"mutability":"constant","name":"Version","nameLocation":"2216:7:13","nodeType":"VariableDeclaration","scope":1555,"src":"2199:35:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1039,"name":"uint256","nodeType":"ElementaryTypeName","src":"2199:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078333132653331","id":1040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2226:8:13","typeDescriptions":{"typeIdentifier":"t_rational_3223089_by_1","typeString":"int_const 3223089"},"value":"0x312e31"},"visibility":"internal"},{"constant":true,"id":1044,"mutability":"constant","name":"Version_length","nameLocation":"2253:14:13","nodeType":"VariableDeclaration","scope":1555,"src":"2236:35:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1042,"name":"uint256","nodeType":"ElementaryTypeName","src":"2236:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":1043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2270:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":1047,"mutability":"constant","name":"Version_shift","nameLocation":"2290:13:13","nodeType":"VariableDeclaration","scope":1555,"src":"2273:37:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1045,"name":"uint256","nodeType":"ElementaryTypeName","src":"2273:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786538","id":1046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2306:4:13","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"0xe8"},"visibility":"internal"},{"constant":true,"id":1050,"mutability":"constant","name":"_NOT_ENTERED","nameLocation":"2330:12:13","nodeType":"VariableDeclaration","scope":1555,"src":"2313:33:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"2313:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2345:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":1053,"mutability":"constant","name":"_ENTERED","nameLocation":"2365:8:13","nodeType":"VariableDeclaration","scope":1555,"src":"2348:29:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1051,"name":"uint256","nodeType":"ElementaryTypeName","src":"2348:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":1056,"mutability":"constant","name":"Common_token_offset","nameLocation":"2529:19:13","nodeType":"VariableDeclaration","scope":1555,"src":"2512:43:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1054,"name":"uint256","nodeType":"ElementaryTypeName","src":"2512:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2551:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1059,"mutability":"constant","name":"Common_identifier_offset","nameLocation":"2574:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"2557:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1057,"name":"uint256","nodeType":"ElementaryTypeName","src":"2557:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2601:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1062,"mutability":"constant","name":"Common_amount_offset","nameLocation":"2624:20:13","nodeType":"VariableDeclaration","scope":1555,"src":"2607:44:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1060,"name":"uint256","nodeType":"ElementaryTypeName","src":"2607:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1065,"mutability":"constant","name":"ReceivedItem_size","nameLocation":"2671:17:13","nodeType":"VariableDeclaration","scope":1555,"src":"2654:41:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1063,"name":"uint256","nodeType":"ElementaryTypeName","src":"2654:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2691:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1068,"mutability":"constant","name":"ReceivedItem_amount_offset","nameLocation":"2714:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"2697:50:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1066,"name":"uint256","nodeType":"ElementaryTypeName","src":"2697:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2743:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1071,"mutability":"constant","name":"ReceivedItem_recipient_offset","nameLocation":"2766:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"2749:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1069,"name":"uint256","nodeType":"ElementaryTypeName","src":"2749:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2798:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1074,"mutability":"constant","name":"ReceivedItem_CommonParams_size","nameLocation":"2822:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"2805:54:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1072,"name":"uint256","nodeType":"ElementaryTypeName","src":"2805:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2855:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1077,"mutability":"constant","name":"ConsiderationItem_recipient_offset","nameLocation":"2879:34:13","nodeType":"VariableDeclaration","scope":1555,"src":"2862:58:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1075,"name":"uint256","nodeType":"ElementaryTypeName","src":"2862:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2916:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1080,"mutability":"constant","name":"ConsiderItem_recipient_offset","nameLocation":"3014:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"2997:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1078,"name":"uint256","nodeType":"ElementaryTypeName","src":"2997:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3046:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1083,"mutability":"constant","name":"Execution_offerer_offset","nameLocation":"3070:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"3053:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1081,"name":"uint256","nodeType":"ElementaryTypeName","src":"3053:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3097:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1086,"mutability":"constant","name":"Execution_conduit_offset","nameLocation":"3120:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"3103:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1084,"name":"uint256","nodeType":"ElementaryTypeName","src":"3103:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1090,"mutability":"constant","name":"InvalidFulfillmentComponentData_error_signature","nameLocation":"3171:47:13","nodeType":"VariableDeclaration","scope":1555,"src":"3154:141:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1087,"name":"uint256","nodeType":"ElementaryTypeName","src":"3154:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307837666461373237393030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3227:66:13","typeDescriptions":{"typeIdentifier":"t_rational_57829694491433599956760509916192848133310438881256311050796729709605798543360_by_1","typeString":"int_const 5782...(69 digits omitted)...3360"},"value":"0x7fda727900000000000000000000000000000000000000000000000000000000"}],"id":1089,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3221:74:13","typeDescriptions":{"typeIdentifier":"t_rational_57829694491433599956760509916192848133310438881256311050796729709605798543360_by_1","typeString":"int_const 5782...(69 digits omitted)...3360"}},"visibility":"internal"},{"constant":true,"id":1093,"mutability":"constant","name":"InvalidFulfillmentComponentData_error_len","nameLocation":"3314:41:13","nodeType":"VariableDeclaration","scope":1555,"src":"3297:65:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1091,"name":"uint256","nodeType":"ElementaryTypeName","src":"3297:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3358:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1097,"mutability":"constant","name":"Panic_error_signature","nameLocation":"3382:21:13","nodeType":"VariableDeclaration","scope":1555,"src":"3365:115:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1094,"name":"uint256","nodeType":"ElementaryTypeName","src":"3365:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307834653438376237313030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3412:66:13","typeDescriptions":{"typeIdentifier":"t_rational_35408467139433450592217433187231851964531694900788300625387963629091585785856_by_1","typeString":"int_const 3540...(69 digits omitted)...5856"},"value":"0x4e487b7100000000000000000000000000000000000000000000000000000000"}],"id":1096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3406:74:13","typeDescriptions":{"typeIdentifier":"t_rational_35408467139433450592217433187231851964531694900788300625387963629091585785856_by_1","typeString":"int_const 3540...(69 digits omitted)...5856"}},"visibility":"internal"},{"constant":true,"id":1100,"mutability":"constant","name":"Panic_error_offset","nameLocation":"3499:18:13","nodeType":"VariableDeclaration","scope":1555,"src":"3482:42:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"3482:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3520:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1103,"mutability":"constant","name":"Panic_error_length","nameLocation":"3543:18:13","nodeType":"VariableDeclaration","scope":1555,"src":"3526:42:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1101,"name":"uint256","nodeType":"ElementaryTypeName","src":"3526:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":1102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3564:4:13","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":1106,"mutability":"constant","name":"Panic_arithmetic","nameLocation":"3587:16:13","nodeType":"VariableDeclaration","scope":1555,"src":"3570:40:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1104,"name":"uint256","nodeType":"ElementaryTypeName","src":"3570:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":1105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3606:4:13","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"id":1110,"mutability":"constant","name":"MissingItemAmount_error_signature","nameLocation":"3630:33:13","nodeType":"VariableDeclaration","scope":1555,"src":"3613:127:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1107,"name":"uint256","nodeType":"ElementaryTypeName","src":"3613:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307839316233653531343030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3672:66:13","typeDescriptions":{"typeIdentifier":"t_rational_65903209708281305491247531932642880901070546646261226988310371542132880048128_by_1","typeString":"int_const 6590...(69 digits omitted)...8128"},"value":"0x91b3e51400000000000000000000000000000000000000000000000000000000"}],"id":1109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3666:74:13","typeDescriptions":{"typeIdentifier":"t_rational_65903209708281305491247531932642880901070546646261226988310371542132880048128_by_1","typeString":"int_const 6590...(69 digits omitted)...8128"}},"visibility":"internal"},{"constant":true,"id":1113,"mutability":"constant","name":"MissingItemAmount_error_len","nameLocation":"3759:27:13","nodeType":"VariableDeclaration","scope":1555,"src":"3742:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1111,"name":"uint256","nodeType":"ElementaryTypeName","src":"3742:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3789:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1116,"mutability":"constant","name":"OrderParameters_offer_head_offset","nameLocation":"3813:33:13","nodeType":"VariableDeclaration","scope":1555,"src":"3796:57:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1114,"name":"uint256","nodeType":"ElementaryTypeName","src":"3796:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3849:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1119,"mutability":"constant","name":"OrderParameters_consideration_head_offset","nameLocation":"3872:41:13","nodeType":"VariableDeclaration","scope":1555,"src":"3855:65:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1117,"name":"uint256","nodeType":"ElementaryTypeName","src":"3855:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3916:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1122,"mutability":"constant","name":"OrderParameters_conduit_offset","nameLocation":"3939:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"3922:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1120,"name":"uint256","nodeType":"ElementaryTypeName","src":"3922:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323030","id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3972:5:13","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"visibility":"internal"},{"constant":true,"id":1125,"mutability":"constant","name":"OrderParameters_counter_offset","nameLocation":"3996:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"3979:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1123,"name":"uint256","nodeType":"ElementaryTypeName","src":"3979:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323230","id":1124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4029:5:13","typeDescriptions":{"typeIdentifier":"t_rational_544_by_1","typeString":"int_const 544"},"value":"0x220"},"visibility":"internal"},{"constant":true,"id":1128,"mutability":"constant","name":"Fulfillment_itemIndex_offset","nameLocation":"4054:28:13","nodeType":"VariableDeclaration","scope":1555,"src":"4037:52:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1126,"name":"uint256","nodeType":"ElementaryTypeName","src":"4037:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4085:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1131,"mutability":"constant","name":"AdvancedOrder_numerator_offset","nameLocation":"4109:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"4092:54:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1129,"name":"uint256","nodeType":"ElementaryTypeName","src":"4092:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4142:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1134,"mutability":"constant","name":"AlmostOneWord","nameLocation":"4166:13:13","nodeType":"VariableDeclaration","scope":1555,"src":"4149:37:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1132,"name":"uint256","nodeType":"ElementaryTypeName","src":"4149:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783166","id":1133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4182:4:13","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"0x1f"},"visibility":"internal"},{"constant":true,"id":1137,"mutability":"constant","name":"OneWord","nameLocation":"4205:7:13","nodeType":"VariableDeclaration","scope":1555,"src":"4188:31:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1135,"name":"uint256","nodeType":"ElementaryTypeName","src":"4188:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4215:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1140,"mutability":"constant","name":"TwoWords","nameLocation":"4238:8:13","nodeType":"VariableDeclaration","scope":1555,"src":"4221:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1138,"name":"uint256","nodeType":"ElementaryTypeName","src":"4221:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4249:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1143,"mutability":"constant","name":"ThreeWords","nameLocation":"4272:10:13","nodeType":"VariableDeclaration","scope":1555,"src":"4255:34:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1141,"name":"uint256","nodeType":"ElementaryTypeName","src":"4255:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4285:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1146,"mutability":"constant","name":"FourWords","nameLocation":"4308:9:13","nodeType":"VariableDeclaration","scope":1555,"src":"4291:33:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1144,"name":"uint256","nodeType":"ElementaryTypeName","src":"4291:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4320:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1149,"mutability":"constant","name":"FiveWords","nameLocation":"4343:9:13","nodeType":"VariableDeclaration","scope":1555,"src":"4326:33:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1147,"name":"uint256","nodeType":"ElementaryTypeName","src":"4326:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4355:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1152,"mutability":"constant","name":"FreeMemoryPointerSlot","nameLocation":"4379:21:13","nodeType":"VariableDeclaration","scope":1555,"src":"4362:45:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"4362:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4403:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1155,"mutability":"constant","name":"ZeroSlot","nameLocation":"4426:8:13","nodeType":"VariableDeclaration","scope":1555,"src":"4409:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"4409:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4437:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1158,"mutability":"constant","name":"DefaultFreeMemoryPointer","nameLocation":"4460:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"4443:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1156,"name":"uint256","nodeType":"ElementaryTypeName","src":"4443:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4487:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1161,"mutability":"constant","name":"Slot0x80","nameLocation":"4511:8:13","nodeType":"VariableDeclaration","scope":1555,"src":"4494:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1159,"name":"uint256","nodeType":"ElementaryTypeName","src":"4494:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4522:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1164,"mutability":"constant","name":"Slot0xA0","nameLocation":"4545:8:13","nodeType":"VariableDeclaration","scope":1555,"src":"4528:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1162,"name":"uint256","nodeType":"ElementaryTypeName","src":"4528:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4556:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1167,"mutability":"constant","name":"BasicOrder_endAmount_cdPtr","nameLocation":"4580:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"4563:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1165,"name":"uint256","nodeType":"ElementaryTypeName","src":"4563:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313034","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4609:5:13","typeDescriptions":{"typeIdentifier":"t_rational_260_by_1","typeString":"int_const 260"},"value":"0x104"},"visibility":"internal"},{"constant":true,"id":1170,"mutability":"constant","name":"BasicOrder_common_params_size","nameLocation":"4633:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"4616:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1168,"name":"uint256","nodeType":"ElementaryTypeName","src":"4616:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4665:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1173,"mutability":"constant","name":"BasicOrder_considerationHashesArray_ptr","nameLocation":"4688:39:13","nodeType":"VariableDeclaration","scope":1555,"src":"4671:64:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1171,"name":"uint256","nodeType":"ElementaryTypeName","src":"4671:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313630","id":1172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4730:5:13","typeDescriptions":{"typeIdentifier":"t_rational_352_by_1","typeString":"int_const 352"},"value":"0x160"},"visibility":"internal"},{"constant":true,"id":1176,"mutability":"constant","name":"EIP712_Order_size","nameLocation":"4755:17:13","nodeType":"VariableDeclaration","scope":1555,"src":"4738:42:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1174,"name":"uint256","nodeType":"ElementaryTypeName","src":"4738:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323630","id":1175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4775:5:13","typeDescriptions":{"typeIdentifier":"t_rational_608_by_1","typeString":"int_const 608"},"value":"0x260"},"visibility":"internal"},{"constant":true,"id":1179,"mutability":"constant","name":"AdditionalRecipients_size","nameLocation":"4799:25:13","nodeType":"VariableDeclaration","scope":1555,"src":"4782:49:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1177,"name":"uint256","nodeType":"ElementaryTypeName","src":"4782:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4827:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1182,"mutability":"constant","name":"EIP712_DomainSeparator_offset","nameLocation":"4851:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"4834:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1180,"name":"uint256","nodeType":"ElementaryTypeName","src":"4834:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783032","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4883:4:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"internal"},{"constant":true,"id":1185,"mutability":"constant","name":"EIP712_OrderHash_offset","nameLocation":"4906:23:13","nodeType":"VariableDeclaration","scope":1555,"src":"4889:47:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1183,"name":"uint256","nodeType":"ElementaryTypeName","src":"4889:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":1184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4932:4:13","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"id":1188,"mutability":"constant","name":"EIP712_DigestPayload_size","nameLocation":"4955:25:13","nodeType":"VariableDeclaration","scope":1555,"src":"4938:49:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1186,"name":"uint256","nodeType":"ElementaryTypeName","src":"4938:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783432","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4983:4:13","typeDescriptions":{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"},"value":"0x42"},"visibility":"internal"},{"constant":true,"id":1191,"mutability":"constant","name":"receivedItemsHash_ptr","nameLocation":"5007:21:13","nodeType":"VariableDeclaration","scope":1555,"src":"4990:45:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1189,"name":"uint256","nodeType":"ElementaryTypeName","src":"4990:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5031:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1194,"mutability":"constant","name":"OrderFulfilled_baseSize","nameLocation":"6169:23:13","nodeType":"VariableDeclaration","scope":1555,"src":"6152:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1192,"name":"uint256","nodeType":"ElementaryTypeName","src":"6152:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078316530","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6195:5:13","typeDescriptions":{"typeIdentifier":"t_rational_480_by_1","typeString":"int_const 480"},"value":"0x1e0"},"visibility":"internal"},{"constant":true,"id":1198,"mutability":"constant","name":"OrderFulfilled_selector","nameLocation":"6219:23:13","nodeType":"VariableDeclaration","scope":1555,"src":"6202:117:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1195,"name":"uint256","nodeType":"ElementaryTypeName","src":"6202:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307839643961663865333864363663363265326331326630323235323439666439643732316335346238336634386439333532633937633663616364636236663331","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6251:66:13","typeDescriptions":{"typeIdentifier":"t_rational_71286929443441903619420626123257826409604698619988279456855157774814467026737_by_1","typeString":"int_const 7128...(69 digits omitted)...6737"},"value":"0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31"}],"id":1197,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6245:74:13","typeDescriptions":{"typeIdentifier":"t_rational_71286929443441903619420626123257826409604698619988279456855157774814467026737_by_1","typeString":"int_const 7128...(69 digits omitted)...6737"}},"visibility":"internal"},{"constant":true,"id":1201,"mutability":"constant","name":"OrderFulfilled_baseOffset","nameLocation":"6554:25:13","nodeType":"VariableDeclaration","scope":1555,"src":"6537:50:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1199,"name":"uint256","nodeType":"ElementaryTypeName","src":"6537:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313830","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6582:5:13","typeDescriptions":{"typeIdentifier":"t_rational_384_by_1","typeString":"int_const 384"},"value":"0x180"},"visibility":"internal"},{"constant":true,"id":1204,"mutability":"constant","name":"OrderFulfilled_consideration_length_baseOffset","nameLocation":"6606:46:13","nodeType":"VariableDeclaration","scope":1555,"src":"6589:71:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1202,"name":"uint256","nodeType":"ElementaryTypeName","src":"6589:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078326130","id":1203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6655:5:13","typeDescriptions":{"typeIdentifier":"t_rational_672_by_1","typeString":"int_const 672"},"value":"0x2a0"},"visibility":"internal"},{"constant":true,"id":1207,"mutability":"constant","name":"OrderFulfilled_offer_length_baseOffset","nameLocation":"6679:38:13","nodeType":"VariableDeclaration","scope":1555,"src":"6662:63:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1205,"name":"uint256","nodeType":"ElementaryTypeName","src":"6662:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323030","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6720:5:13","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"visibility":"internal"},{"constant":true,"id":1210,"mutability":"constant","name":"OrderFulfilled_fulfiller_offset","nameLocation":"6805:31:13","nodeType":"VariableDeclaration","scope":1555,"src":"6788:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1208,"name":"uint256","nodeType":"ElementaryTypeName","src":"6788:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6839:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1213,"mutability":"constant","name":"OrderFulfilled_offer_head_offset","nameLocation":"6862:32:13","nodeType":"VariableDeclaration","scope":1555,"src":"6845:56:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1211,"name":"uint256","nodeType":"ElementaryTypeName","src":"6845:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6897:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1216,"mutability":"constant","name":"OrderFulfilled_offer_body_offset","nameLocation":"6920:32:13","nodeType":"VariableDeclaration","scope":1555,"src":"6903:56:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1214,"name":"uint256","nodeType":"ElementaryTypeName","src":"6903:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6955:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1219,"mutability":"constant","name":"OrderFulfilled_consideration_head_offset","nameLocation":"6978:40:13","nodeType":"VariableDeclaration","scope":1555,"src":"6961:64:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1217,"name":"uint256","nodeType":"ElementaryTypeName","src":"6961:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7021:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1222,"mutability":"constant","name":"OrderFulfilled_consideration_body_offset","nameLocation":"7044:40:13","nodeType":"VariableDeclaration","scope":1555,"src":"7027:65:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1220,"name":"uint256","nodeType":"ElementaryTypeName","src":"7027:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313230","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7087:5:13","typeDescriptions":{"typeIdentifier":"t_rational_288_by_1","typeString":"int_const 288"},"value":"0x120"},"visibility":"internal"},{"constant":true,"id":1225,"mutability":"constant","name":"BasicOrder_parameters_cdPtr","nameLocation":"7136:27:13","nodeType":"VariableDeclaration","scope":1555,"src":"7119:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1223,"name":"uint256","nodeType":"ElementaryTypeName","src":"7119:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7166:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1228,"mutability":"constant","name":"BasicOrder_considerationToken_cdPtr","nameLocation":"7189:35:13","nodeType":"VariableDeclaration","scope":1555,"src":"7172:59:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7172:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":1227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7227:4:13","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":1231,"mutability":"constant","name":"BasicOrder_considerationAmount_cdPtr","nameLocation":"7319:36:13","nodeType":"VariableDeclaration","scope":1555,"src":"7302:60:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1229,"name":"uint256","nodeType":"ElementaryTypeName","src":"7302:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":1230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7358:4:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":1234,"mutability":"constant","name":"BasicOrder_offerer_cdPtr","nameLocation":"7381:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"7364:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1232,"name":"uint256","nodeType":"ElementaryTypeName","src":"7364:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":1233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7408:4:13","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":1237,"mutability":"constant","name":"BasicOrder_zone_cdPtr","nameLocation":"7431:21:13","nodeType":"VariableDeclaration","scope":1555,"src":"7414:45:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1235,"name":"uint256","nodeType":"ElementaryTypeName","src":"7414:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":1236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7455:4:13","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":1240,"mutability":"constant","name":"BasicOrder_offerToken_cdPtr","nameLocation":"7478:27:13","nodeType":"VariableDeclaration","scope":1555,"src":"7461:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1238,"name":"uint256","nodeType":"ElementaryTypeName","src":"7461:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":1239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7508:4:13","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":1243,"mutability":"constant","name":"BasicOrder_offerAmount_cdPtr","nameLocation":"7592:28:13","nodeType":"VariableDeclaration","scope":1555,"src":"7575:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1241,"name":"uint256","nodeType":"ElementaryTypeName","src":"7575:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313034","id":1242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7623:5:13","typeDescriptions":{"typeIdentifier":"t_rational_260_by_1","typeString":"int_const 260"},"value":"0x104"},"visibility":"internal"},{"constant":true,"id":1246,"mutability":"constant","name":"BasicOrder_basicOrderType_cdPtr","nameLocation":"7647:31:13","nodeType":"VariableDeclaration","scope":1555,"src":"7630:56:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1244,"name":"uint256","nodeType":"ElementaryTypeName","src":"7630:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313234","id":1245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7681:5:13","typeDescriptions":{"typeIdentifier":"t_rational_292_by_1","typeString":"int_const 292"},"value":"0x124"},"visibility":"internal"},{"constant":true,"id":1249,"mutability":"constant","name":"BasicOrder_startTime_cdPtr","nameLocation":"7705:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"7688:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1247,"name":"uint256","nodeType":"ElementaryTypeName","src":"7688:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313434","id":1248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7734:5:13","typeDescriptions":{"typeIdentifier":"t_rational_324_by_1","typeString":"int_const 324"},"value":"0x144"},"visibility":"internal"},{"constant":true,"id":1252,"mutability":"constant","name":"BasicOrder_offererConduit_cdPtr","nameLocation":"7918:31:13","nodeType":"VariableDeclaration","scope":1555,"src":"7901:56:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1250,"name":"uint256","nodeType":"ElementaryTypeName","src":"7901:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078316334","id":1251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7952:5:13","typeDescriptions":{"typeIdentifier":"t_rational_452_by_1","typeString":"int_const 452"},"value":"0x1c4"},"visibility":"internal"},{"constant":true,"id":1255,"mutability":"constant","name":"BasicOrder_fulfillerConduit_cdPtr","nameLocation":"7976:33:13","nodeType":"VariableDeclaration","scope":1555,"src":"7959:58:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1253,"name":"uint256","nodeType":"ElementaryTypeName","src":"7959:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078316534","id":1254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:5:13","typeDescriptions":{"typeIdentifier":"t_rational_484_by_1","typeString":"int_const 484"},"value":"0x1e4"},"visibility":"internal"},{"constant":true,"id":1258,"mutability":"constant","name":"BasicOrder_totalOriginalAdditionalRecipients_cdPtr","nameLocation":"8036:50:13","nodeType":"VariableDeclaration","scope":1555,"src":"8019:75:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1256,"name":"uint256","nodeType":"ElementaryTypeName","src":"8019:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323034","id":1257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8089:5:13","typeDescriptions":{"typeIdentifier":"t_rational_516_by_1","typeString":"int_const 516"},"value":"0x204"},"visibility":"internal"},{"constant":true,"id":1261,"mutability":"constant","name":"BasicOrder_additionalRecipients_head_cdPtr","nameLocation":"8113:42:13","nodeType":"VariableDeclaration","scope":1555,"src":"8096:67:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8096:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323234","id":1260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8158:5:13","typeDescriptions":{"typeIdentifier":"t_rational_548_by_1","typeString":"int_const 548"},"value":"0x224"},"visibility":"internal"},{"constant":true,"id":1264,"mutability":"constant","name":"BasicOrder_signature_cdPtr","nameLocation":"8182:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"8165:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8165:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323434","id":1263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8211:5:13","typeDescriptions":{"typeIdentifier":"t_rational_580_by_1","typeString":"int_const 580"},"value":"0x244"},"visibility":"internal"},{"constant":true,"id":1267,"mutability":"constant","name":"BasicOrder_additionalRecipients_length_cdPtr","nameLocation":"8235:44:13","nodeType":"VariableDeclaration","scope":1555,"src":"8218:69:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1265,"name":"uint256","nodeType":"ElementaryTypeName","src":"8218:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323634","id":1266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8282:5:13","typeDescriptions":{"typeIdentifier":"t_rational_612_by_1","typeString":"int_const 612"},"value":"0x264"},"visibility":"internal"},{"constant":true,"id":1270,"mutability":"constant","name":"BasicOrder_additionalRecipients_data_cdPtr","nameLocation":"8306:42:13","nodeType":"VariableDeclaration","scope":1555,"src":"8289:67:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1268,"name":"uint256","nodeType":"ElementaryTypeName","src":"8289:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323834","id":1269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8351:5:13","typeDescriptions":{"typeIdentifier":"t_rational_644_by_1","typeString":"int_const 644"},"value":"0x284"},"visibility":"internal"},{"constant":true,"id":1273,"mutability":"constant","name":"BasicOrder_parameters_ptr","nameLocation":"8376:25:13","nodeType":"VariableDeclaration","scope":1555,"src":"8359:49:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"8359:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8404:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1276,"mutability":"constant","name":"BasicOrder_basicOrderType_range","nameLocation":"8428:31:13","nodeType":"VariableDeclaration","scope":1555,"src":"8411:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1274,"name":"uint256","nodeType":"ElementaryTypeName","src":"8411:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783138","id":1275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8462:4:13","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"0x18"},"visibility":"internal"},{"constant":true,"id":1279,"mutability":"constant","name":"BasicOrder_considerationItem_typeHash_ptr","nameLocation":"8803:41:13","nodeType":"VariableDeclaration","scope":1555,"src":"8786:65:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1277,"name":"uint256","nodeType":"ElementaryTypeName","src":"8786:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8847:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1282,"mutability":"constant","name":"BasicOrder_considerationItem_itemType_ptr","nameLocation":"8883:41:13","nodeType":"VariableDeclaration","scope":1555,"src":"8866:65:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1280,"name":"uint256","nodeType":"ElementaryTypeName","src":"8866:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8927:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1285,"mutability":"constant","name":"BasicOrder_considerationItem_token_ptr","nameLocation":"8950:38:13","nodeType":"VariableDeclaration","scope":1555,"src":"8933:62:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1283,"name":"uint256","nodeType":"ElementaryTypeName","src":"8933:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":1284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8991:4:13","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":1288,"mutability":"constant","name":"BasicOrder_considerationItem_identifier_ptr","nameLocation":"9014:43:13","nodeType":"VariableDeclaration","scope":1555,"src":"8997:67:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8997:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786530","id":1287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9060:4:13","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xe0"},"visibility":"internal"},{"constant":true,"id":1291,"mutability":"constant","name":"BasicOrder_considerationItem_startAmount_ptr","nameLocation":"9083:44:13","nodeType":"VariableDeclaration","scope":1555,"src":"9066:69:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1289,"name":"uint256","nodeType":"ElementaryTypeName","src":"9066:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030","id":1290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9130:5:13","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"visibility":"internal"},{"constant":true,"id":1294,"mutability":"constant","name":"BasicOrder_considerationItem_endAmount_ptr","nameLocation":"9154:42:13","nodeType":"VariableDeclaration","scope":1555,"src":"9137:67:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1292,"name":"uint256","nodeType":"ElementaryTypeName","src":"9137:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313230","id":1293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9199:5:13","typeDescriptions":{"typeIdentifier":"t_rational_288_by_1","typeString":"int_const 288"},"value":"0x120"},"visibility":"internal"},{"constant":true,"id":1297,"mutability":"constant","name":"BasicOrder_offerItem_typeHash_ptr","nameLocation":"9594:33:13","nodeType":"VariableDeclaration","scope":1555,"src":"9577:77:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1295,"name":"uint256","nodeType":"ElementaryTypeName","src":"9577:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":1296,"name":"DefaultFreeMemoryPointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"9630:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":1300,"mutability":"constant","name":"BasicOrder_offerItem_itemType_ptr","nameLocation":"9673:33:13","nodeType":"VariableDeclaration","scope":1555,"src":"9656:57:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1298,"name":"uint256","nodeType":"ElementaryTypeName","src":"9656:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9709:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1303,"mutability":"constant","name":"BasicOrder_offerItem_token_ptr","nameLocation":"9732:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"9715:54:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1301,"name":"uint256","nodeType":"ElementaryTypeName","src":"9715:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":1302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9765:4:13","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":1306,"mutability":"constant","name":"BasicOrder_offerItem_endAmount_ptr","nameLocation":"9918:34:13","nodeType":"VariableDeclaration","scope":1555,"src":"9901:59:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1304,"name":"uint256","nodeType":"ElementaryTypeName","src":"9901:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313230","id":1305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9955:5:13","typeDescriptions":{"typeIdentifier":"t_rational_288_by_1","typeString":"int_const 288"},"value":"0x120"},"visibility":"internal"},{"constant":true,"id":1309,"mutability":"constant","name":"BasicOrder_order_typeHash_ptr","nameLocation":"10523:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"10506:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1307,"name":"uint256","nodeType":"ElementaryTypeName","src":"10506:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10555:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1312,"mutability":"constant","name":"BasicOrder_order_offerer_ptr","nameLocation":"10578:28:13","nodeType":"VariableDeclaration","scope":1555,"src":"10561:52:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"10561:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10609:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1315,"mutability":"constant","name":"BasicOrder_order_offerHashes_ptr","nameLocation":"10686:32:13","nodeType":"VariableDeclaration","scope":1555,"src":"10669:56:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1313,"name":"uint256","nodeType":"ElementaryTypeName","src":"10669:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786530","id":1314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10721:4:13","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xe0"},"visibility":"internal"},{"constant":true,"id":1318,"mutability":"constant","name":"BasicOrder_order_considerationHashes_ptr","nameLocation":"10744:40:13","nodeType":"VariableDeclaration","scope":1555,"src":"10727:65:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1316,"name":"uint256","nodeType":"ElementaryTypeName","src":"10727:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313030","id":1317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:5:13","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"visibility":"internal"},{"constant":true,"id":1321,"mutability":"constant","name":"BasicOrder_order_orderType_ptr","nameLocation":"10811:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"10794:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1319,"name":"uint256","nodeType":"ElementaryTypeName","src":"10794:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313230","id":1320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10844:5:13","typeDescriptions":{"typeIdentifier":"t_rational_288_by_1","typeString":"int_const 288"},"value":"0x120"},"visibility":"internal"},{"constant":true,"id":1324,"mutability":"constant","name":"BasicOrder_order_startTime_ptr","nameLocation":"10868:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"10851:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1322,"name":"uint256","nodeType":"ElementaryTypeName","src":"10851:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313430","id":1323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10901:5:13","typeDescriptions":{"typeIdentifier":"t_rational_320_by_1","typeString":"int_const 320"},"value":"0x140"},"visibility":"internal"},{"constant":true,"id":1327,"mutability":"constant","name":"BasicOrder_order_counter_ptr","nameLocation":"11158:28:13","nodeType":"VariableDeclaration","scope":1555,"src":"11141:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1325,"name":"uint256","nodeType":"ElementaryTypeName","src":"11141:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078316530","id":1326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11189:5:13","typeDescriptions":{"typeIdentifier":"t_rational_480_by_1","typeString":"int_const 480"},"value":"0x1e0"},"visibility":"internal"},{"constant":true,"id":1330,"mutability":"constant","name":"BasicOrder_additionalRecipients_head_ptr","nameLocation":"11213:40:13","nodeType":"VariableDeclaration","scope":1555,"src":"11196:65:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1328,"name":"uint256","nodeType":"ElementaryTypeName","src":"11196:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323430","id":1329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11256:5:13","typeDescriptions":{"typeIdentifier":"t_rational_576_by_1","typeString":"int_const 576"},"value":"0x240"},"visibility":"internal"},{"constant":true,"id":1333,"mutability":"constant","name":"BasicOrder_signature_ptr","nameLocation":"11280:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"11263:49:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"11263:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323630","id":1332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11307:5:13","typeDescriptions":{"typeIdentifier":"t_rational_608_by_1","typeString":"int_const 608"},"value":"0x260"},"visibility":"internal"},{"constant":true,"id":1337,"mutability":"constant","name":"EIP2098_allButHighestBitMask","nameLocation":"11353:28:13","nodeType":"VariableDeclaration","scope":1555,"src":"11336:122:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1334,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11336:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"components":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":1335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11390:66:13","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"id":1336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"11384:74:13","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}},"visibility":"internal"},{"constant":true,"id":1341,"mutability":"constant","name":"ECDSA_twentySeventhAndTwentyEighthBytesSet","nameLocation":"11477:42:13","nodeType":"VariableDeclaration","scope":1555,"src":"11460:136:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1338,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11460:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"components":[{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030313031303030303030","id":1339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11528:66:13","typeDescriptions":{"typeIdentifier":"t_rational_4311744512_by_1","typeString":"int_const 4311744512"},"value":"0x0000000000000000000000000000000000000000000000000000000101000000"}],"id":1340,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"11522:74:13","typeDescriptions":{"typeIdentifier":"t_rational_4311744512_by_1","typeString":"int_const 4311744512"}},"visibility":"internal"},{"constant":true,"id":1344,"mutability":"constant","name":"ECDSA_MaxLength","nameLocation":"11615:15:13","nodeType":"VariableDeclaration","scope":1555,"src":"11598:37:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1342,"name":"uint256","nodeType":"ElementaryTypeName","src":"11598:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635","id":1343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11633:2:13","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"visibility":"internal"},{"constant":true,"id":1347,"mutability":"constant","name":"ECDSA_signature_s_offset","nameLocation":"11654:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"11637:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1345,"name":"uint256","nodeType":"ElementaryTypeName","src":"11637:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11681:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1350,"mutability":"constant","name":"ECDSA_signature_v_offset","nameLocation":"11704:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"11687:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1348,"name":"uint256","nodeType":"ElementaryTypeName","src":"11687:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11731:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1354,"mutability":"constant","name":"EIP1271_isValidSignature_selector","nameLocation":"11755:33:13","nodeType":"VariableDeclaration","scope":1555,"src":"11738:127:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11738:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"components":[{"hexValue":"307831363236626137653030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11797:66:13","typeDescriptions":{"typeIdentifier":"t_rational_10019309979067222254582373821846632475949454479833780424560900009889672200192_by_1","typeString":"int_const 1001...(69 digits omitted)...0192"},"value":"0x1626ba7e00000000000000000000000000000000000000000000000000000000"}],"id":1353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"11791:74:13","typeDescriptions":{"typeIdentifier":"t_rational_10019309979067222254582373821846632475949454479833780424560900009889672200192_by_1","typeString":"int_const 1001...(69 digits omitted)...0192"}},"visibility":"internal"},{"constant":true,"id":1357,"mutability":"constant","name":"EIP1271_isValidSignature_signatureHead_negativeOffset","nameLocation":"11884:53:13","nodeType":"VariableDeclaration","scope":1555,"src":"11867:77:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1355,"name":"uint256","nodeType":"ElementaryTypeName","src":"11867:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11940:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1360,"mutability":"constant","name":"EIP1271_isValidSignature_digest_negativeOffset","nameLocation":"11963:46:13","nodeType":"VariableDeclaration","scope":1555,"src":"11946:70:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1358,"name":"uint256","nodeType":"ElementaryTypeName","src":"11946:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12012:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1363,"mutability":"constant","name":"EIP1271_isValidSignature_selector_negativeOffset","nameLocation":"12035:48:13","nodeType":"VariableDeclaration","scope":1555,"src":"12018:72:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1361,"name":"uint256","nodeType":"ElementaryTypeName","src":"12018:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":1362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12086:4:13","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":1366,"mutability":"constant","name":"EIP1271_isValidSignature_calldata_baseLength","nameLocation":"12109:44:13","nodeType":"VariableDeclaration","scope":1555,"src":"12092:68:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1364,"name":"uint256","nodeType":"ElementaryTypeName","src":"12092:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":1365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12156:4:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":1369,"mutability":"constant","name":"EIP1271_isValidSignature_signature_head_offset","nameLocation":"12180:46:13","nodeType":"VariableDeclaration","scope":1555,"src":"12163:70:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1367,"name":"uint256","nodeType":"ElementaryTypeName","src":"12163:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12229:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1373,"mutability":"constant","name":"NoContract_error_signature","nameLocation":"12303:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"12286:120:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1370,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307835663135643637323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12338:66:13","typeDescriptions":{"typeIdentifier":"t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1","typeString":"int_const 4300...(69 digits omitted)...7584"},"value":"0x5f15d67200000000000000000000000000000000000000000000000000000000"}],"id":1372,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12332:74:13","typeDescriptions":{"typeIdentifier":"t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1","typeString":"int_const 4300...(69 digits omitted)...7584"}},"visibility":"internal"},{"constant":true,"id":1376,"mutability":"constant","name":"NoContract_error_sig_ptr","nameLocation":"12425:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"12408:47:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1374,"name":"uint256","nodeType":"ElementaryTypeName","src":"12408:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:3:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":1379,"mutability":"constant","name":"NoContract_error_token_ptr","nameLocation":"12474:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"12457:49:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1377,"name":"uint256","nodeType":"ElementaryTypeName","src":"12457:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":1378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12503:3:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":1382,"mutability":"constant","name":"NoContract_error_length","nameLocation":"12525:23:13","nodeType":"VariableDeclaration","scope":1555,"src":"12508:47:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1380,"name":"uint256","nodeType":"ElementaryTypeName","src":"12508:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":1381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12551:4:13","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":1386,"mutability":"constant","name":"EIP_712_PREFIX","nameLocation":"12591:14:13","nodeType":"VariableDeclaration","scope":1555,"src":"12574:108:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1383,"name":"uint256","nodeType":"ElementaryTypeName","src":"12574:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307831393031303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12614:66:13","typeDescriptions":{"typeIdentifier":"t_rational_11309588061646438093662687302255421419811724423900836950936401294474059186176_by_1","typeString":"int_const 1130...(69 digits omitted)...6176"},"value":"0x1901000000000000000000000000000000000000000000000000000000000000"}],"id":1385,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12608:74:13","typeDescriptions":{"typeIdentifier":"t_rational_11309588061646438093662687302255421419811724423900836950936401294474059186176_by_1","typeString":"int_const 1130...(69 digits omitted)...6176"}},"visibility":"internal"},{"constant":true,"id":1389,"mutability":"constant","name":"ExtraGasBuffer","nameLocation":"12702:14:13","nodeType":"VariableDeclaration","scope":1555,"src":"12685:38:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1387,"name":"uint256","nodeType":"ElementaryTypeName","src":"12685:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12719:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1392,"mutability":"constant","name":"CostPerWord","nameLocation":"12742:11:13","nodeType":"VariableDeclaration","scope":1555,"src":"12725:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1390,"name":"uint256","nodeType":"ElementaryTypeName","src":"12725:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":1391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12756:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":1395,"mutability":"constant","name":"MemoryExpansionCoefficient","nameLocation":"12776:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"12759:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1393,"name":"uint256","nodeType":"ElementaryTypeName","src":"12759:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323030","id":1394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12805:5:13","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"visibility":"internal"},{"constant":true,"id":1398,"mutability":"constant","name":"Create2AddressDerivation_ptr","nameLocation":"12837:28:13","nodeType":"VariableDeclaration","scope":1555,"src":"12820:52:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1396,"name":"uint256","nodeType":"ElementaryTypeName","src":"12820:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783062","id":1397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12868:4:13","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"0x0b"},"visibility":"internal"},{"constant":true,"id":1401,"mutability":"constant","name":"Create2AddressDerivation_length","nameLocation":"12891:31:13","nodeType":"VariableDeclaration","scope":1555,"src":"12874:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1399,"name":"uint256","nodeType":"ElementaryTypeName","src":"12874:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783535","id":1400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:4:13","typeDescriptions":{"typeIdentifier":"t_rational_85_by_1","typeString":"int_const 85"},"value":"0x55"},"visibility":"internal"},{"constant":true,"id":1405,"mutability":"constant","name":"MaskOverByteTwelve","nameLocation":"12949:18:13","nodeType":"VariableDeclaration","scope":1555,"src":"12932:112:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1402,"name":"uint256","nodeType":"ElementaryTypeName","src":"12932:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307830303030303030303030303030303030303030303030666630303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12976:66:13","typeDescriptions":{"typeIdentifier":"t_rational_372682917519380244141939632342652170012262798458880_by_1","typeString":"int_const 3726...(43 digits omitted)...8880"},"value":"0x0000000000000000000000ff0000000000000000000000000000000000000000"}],"id":1404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12970:74:13","typeDescriptions":{"typeIdentifier":"t_rational_372682917519380244141939632342652170012262798458880_by_1","typeString":"int_const 3726...(43 digits omitted)...8880"}},"visibility":"internal"},{"constant":true,"id":1409,"mutability":"constant","name":"MaskOverLastTwentyBytes","nameLocation":"13064:23:13","nodeType":"VariableDeclaration","scope":1555,"src":"13047:117:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"13047:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307830303030303030303030303030303030303030303030303066666666666666666666666666666666666666666666666666666666666666666666666666666666","id":1407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13096:66:13","typeDescriptions":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542975_by_1","typeString":"int_const 1461...(41 digits omitted)...2975"},"value":"0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff"}],"id":1408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13090:74:13","typeDescriptions":{"typeIdentifier":"t_rational_1461501637330902918203684832716283019655932542975_by_1","typeString":"int_const 1461...(41 digits omitted)...2975"}},"visibility":"internal"},{"constant":true,"id":1413,"mutability":"constant","name":"MaskOverFirstFourBytes","nameLocation":"13184:22:13","nodeType":"VariableDeclaration","scope":1555,"src":"13167:116:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1410,"name":"uint256","nodeType":"ElementaryTypeName","src":"13167:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307866666666666666663030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13215:66:13","typeDescriptions":{"typeIdentifier":"t_rational_115792089210356248756420345214020892766250353992003419616917011526809519390720_by_1","typeString":"int_const 1157...(70 digits omitted)...0720"},"value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"id":1412,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13209:74:13","typeDescriptions":{"typeIdentifier":"t_rational_115792089210356248756420345214020892766250353992003419616917011526809519390720_by_1","typeString":"int_const 1157...(70 digits omitted)...0720"}},"visibility":"internal"},{"constant":true,"id":1417,"mutability":"constant","name":"Conduit_execute_signature","nameLocation":"13303:25:13","nodeType":"VariableDeclaration","scope":1555,"src":"13286:119:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1414,"name":"uint256","nodeType":"ElementaryTypeName","src":"13286:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307834636533346161323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13337:66:13","typeDescriptions":{"typeIdentifier":"t_rational_34777365872773961339311961615113117744096016053484145012885398825620056571904_by_1","typeString":"int_const 3477...(69 digits omitted)...1904"},"value":"0x4ce34aa200000000000000000000000000000000000000000000000000000000"}],"id":1416,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13331:74:13","typeDescriptions":{"typeIdentifier":"t_rational_34777365872773961339311961615113117744096016053484145012885398825620056571904_by_1","typeString":"int_const 3477...(69 digits omitted)...1904"}},"visibility":"internal"},{"constant":true,"id":1420,"mutability":"constant","name":"MaxUint8","nameLocation":"13425:8:13","nodeType":"VariableDeclaration","scope":1555,"src":"13408:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1418,"name":"uint256","nodeType":"ElementaryTypeName","src":"13408:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786666","id":1419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13436:4:13","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"visibility":"internal"},{"constant":true,"id":1423,"mutability":"constant","name":"MaxUint120","nameLocation":"13459:10:13","nodeType":"VariableDeclaration","scope":1555,"src":"13442:62:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1421,"name":"uint256","nodeType":"ElementaryTypeName","src":"13442:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078666666666666666666666666666666666666666666666666666666666666","id":1422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13472:32:13","typeDescriptions":{"typeIdentifier":"t_rational_1329227995784915872903807060280344575_by_1","typeString":"int_const 1329...(29 digits omitted)...4575"},"value":"0xffffffffffffffffffffffffffffff"},"visibility":"internal"},{"constant":true,"id":1426,"mutability":"constant","name":"Conduit_execute_ConduitTransfer_ptr","nameLocation":"13524:35:13","nodeType":"VariableDeclaration","scope":1555,"src":"13507:59:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1424,"name":"uint256","nodeType":"ElementaryTypeName","src":"13507:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13562:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1429,"mutability":"constant","name":"Conduit_execute_ConduitTransfer_length","nameLocation":"13585:38:13","nodeType":"VariableDeclaration","scope":1555,"src":"13568:62:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1427,"name":"uint256","nodeType":"ElementaryTypeName","src":"13568:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13626:4:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"id":1432,"mutability":"constant","name":"Conduit_execute_ConduitTransfer_offset_ptr","nameLocation":"13650:42:13","nodeType":"VariableDeclaration","scope":1555,"src":"13633:66:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1430,"name":"uint256","nodeType":"ElementaryTypeName","src":"13633:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13695:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1435,"mutability":"constant","name":"Conduit_execute_ConduitTransfer_length_ptr","nameLocation":"13718:42:13","nodeType":"VariableDeclaration","scope":1555,"src":"13701:66:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1433,"name":"uint256","nodeType":"ElementaryTypeName","src":"13701:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13763:4:13","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":1438,"mutability":"constant","name":"Conduit_execute_transferItemType_ptr","nameLocation":"13786:36:13","nodeType":"VariableDeclaration","scope":1555,"src":"13769:60:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1436,"name":"uint256","nodeType":"ElementaryTypeName","src":"13769:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":1437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13825:4:13","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":1441,"mutability":"constant","name":"Conduit_execute_transferToken_ptr","nameLocation":"13848:33:13","nodeType":"VariableDeclaration","scope":1555,"src":"13831:57:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"13831:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":1440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13884:4:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":1444,"mutability":"constant","name":"Conduit_execute_transferFrom_ptr","nameLocation":"13907:32:13","nodeType":"VariableDeclaration","scope":1555,"src":"13890:56:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1442,"name":"uint256","nodeType":"ElementaryTypeName","src":"13890:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":1443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13942:4:13","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":1447,"mutability":"constant","name":"Conduit_execute_transferTo_ptr","nameLocation":"13965:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"13948:54:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1445,"name":"uint256","nodeType":"ElementaryTypeName","src":"13948:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":1446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:4:13","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":1450,"mutability":"constant","name":"Conduit_execute_transferIdentifier_ptr","nameLocation":"14021:38:13","nodeType":"VariableDeclaration","scope":1555,"src":"14004:62:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1448,"name":"uint256","nodeType":"ElementaryTypeName","src":"14004:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":1449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14062:4:13","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":1453,"mutability":"constant","name":"Conduit_execute_transferAmount_ptr","nameLocation":"14085:34:13","nodeType":"VariableDeclaration","scope":1555,"src":"14068:58:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1451,"name":"uint256","nodeType":"ElementaryTypeName","src":"14068:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786534","id":1452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14122:4:13","typeDescriptions":{"typeIdentifier":"t_rational_228_by_1","typeString":"int_const 228"},"value":"0xe4"},"visibility":"internal"},{"constant":true,"id":1456,"mutability":"constant","name":"OneConduitExecute_size","nameLocation":"14146:22:13","nodeType":"VariableDeclaration","scope":1555,"src":"14129:47:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1454,"name":"uint256","nodeType":"ElementaryTypeName","src":"14129:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078313034","id":1455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14171:5:13","typeDescriptions":{"typeIdentifier":"t_rational_260_by_1","typeString":"int_const 260"},"value":"0x104"},"visibility":"internal"},{"constant":true,"id":1459,"mutability":"constant","name":"AccumulatorDisarmed","nameLocation":"14269:19:13","nodeType":"VariableDeclaration","scope":1555,"src":"14252:43:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1457,"name":"uint256","nodeType":"ElementaryTypeName","src":"14252:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14291:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1462,"mutability":"constant","name":"AccumulatorArmed","nameLocation":"14314:16:13","nodeType":"VariableDeclaration","scope":1555,"src":"14297:40:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1460,"name":"uint256","nodeType":"ElementaryTypeName","src":"14297:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14333:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1465,"mutability":"constant","name":"Accumulator_conduitKey_ptr","nameLocation":"14356:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"14339:50:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1463,"name":"uint256","nodeType":"ElementaryTypeName","src":"14339:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14385:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1468,"mutability":"constant","name":"Accumulator_selector_ptr","nameLocation":"14408:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"14391:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1466,"name":"uint256","nodeType":"ElementaryTypeName","src":"14391:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14435:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1471,"mutability":"constant","name":"Accumulator_array_offset_ptr","nameLocation":"14458:28:13","nodeType":"VariableDeclaration","scope":1555,"src":"14441:52:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1469,"name":"uint256","nodeType":"ElementaryTypeName","src":"14441:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":1470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14489:4:13","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":1474,"mutability":"constant","name":"Accumulator_array_length_ptr","nameLocation":"14512:28:13","nodeType":"VariableDeclaration","scope":1555,"src":"14495:52:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1472,"name":"uint256","nodeType":"ElementaryTypeName","src":"14495:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":1473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14543:4:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":1477,"mutability":"constant","name":"Accumulator_itemSizeOffsetDifference","nameLocation":"14567:36:13","nodeType":"VariableDeclaration","scope":1555,"src":"14550:60:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1475,"name":"uint256","nodeType":"ElementaryTypeName","src":"14550:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783363","id":1476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14606:4:13","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"0x3c"},"visibility":"internal"},{"constant":true,"id":1480,"mutability":"constant","name":"Accumulator_array_offset","nameLocation":"14630:24:13","nodeType":"VariableDeclaration","scope":1555,"src":"14613:48:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1478,"name":"uint256","nodeType":"ElementaryTypeName","src":"14613:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14657:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1483,"mutability":"constant","name":"Conduit_transferItem_size","nameLocation":"14680:25:13","nodeType":"VariableDeclaration","scope":1555,"src":"14663:49:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1481,"name":"uint256","nodeType":"ElementaryTypeName","src":"14663:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14708:4:13","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":1486,"mutability":"constant","name":"Conduit_transferItem_token_ptr","nameLocation":"14731:30:13","nodeType":"VariableDeclaration","scope":1555,"src":"14714:54:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1484,"name":"uint256","nodeType":"ElementaryTypeName","src":"14714:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":1485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14764:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":1489,"mutability":"constant","name":"Conduit_transferItem_from_ptr","nameLocation":"14787:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"14770:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1487,"name":"uint256","nodeType":"ElementaryTypeName","src":"14770:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14819:4:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":1492,"mutability":"constant","name":"Conduit_transferItem_to_ptr","nameLocation":"14842:27:13","nodeType":"VariableDeclaration","scope":1555,"src":"14825:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1490,"name":"uint256","nodeType":"ElementaryTypeName","src":"14825:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":1491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14872:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":1495,"mutability":"constant","name":"Conduit_transferItem_identifier_ptr","nameLocation":"14895:35:13","nodeType":"VariableDeclaration","scope":1555,"src":"14878:59:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1493,"name":"uint256","nodeType":"ElementaryTypeName","src":"14878:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14933:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1498,"mutability":"constant","name":"Conduit_transferItem_amount_ptr","nameLocation":"14956:31:13","nodeType":"VariableDeclaration","scope":1555,"src":"14939:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1496,"name":"uint256","nodeType":"ElementaryTypeName","src":"14939:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":1497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14990:4:13","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":1502,"mutability":"constant","name":"InexactFraction_error_signature","nameLocation":"15131:31:13","nodeType":"VariableDeclaration","scope":1555,"src":"15114:125:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1499,"name":"uint256","nodeType":"ElementaryTypeName","src":"15114:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307863363363663038393030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15171:66:13","typeDescriptions":{"typeIdentifier":"t_rational_89665614956009371092639817778489642249011143353086017667586940420206184366080_by_1","typeString":"int_const 8966...(69 digits omitted)...6080"},"value":"0xc63cf08900000000000000000000000000000000000000000000000000000000"}],"id":1501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15165:74:13","typeDescriptions":{"typeIdentifier":"t_rational_89665614956009371092639817778489642249011143353086017667586940420206184366080_by_1","typeString":"int_const 8966...(69 digits omitted)...6080"}},"visibility":"internal"},{"constant":true,"id":1505,"mutability":"constant","name":"InexactFraction_error_len","nameLocation":"15258:25:13","nodeType":"VariableDeclaration","scope":1555,"src":"15241:49:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1503,"name":"uint256","nodeType":"ElementaryTypeName","src":"15241:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15286:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1508,"mutability":"constant","name":"Ecrecover_precompile","nameLocation":"15376:20:13","nodeType":"VariableDeclaration","scope":1555,"src":"15359:41:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1506,"name":"uint256","nodeType":"ElementaryTypeName","src":"15359:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15399:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":1511,"mutability":"constant","name":"Ecrecover_args_size","nameLocation":"15419:19:13","nodeType":"VariableDeclaration","scope":1555,"src":"15402:43:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"15402:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15441:4:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":1514,"mutability":"constant","name":"Signature_lower_v","nameLocation":"15464:17:13","nodeType":"VariableDeclaration","scope":1555,"src":"15447:39:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1512,"name":"uint256","nodeType":"ElementaryTypeName","src":"15447:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3237","id":1513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15484:2:13","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"visibility":"internal"},{"constant":true,"id":1518,"mutability":"constant","name":"BadSignatureV_error_signature","nameLocation":"15570:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"15553:123:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"15553:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307831663030336430613030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15608:66:13","typeDescriptions":{"typeIdentifier":"t_rational_14022119582207878935470480432673551110355818459623658670638656538471984791552_by_1","typeString":"int_const 1402...(69 digits omitted)...1552"},"value":"0x1f003d0a00000000000000000000000000000000000000000000000000000000"}],"id":1517,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15602:74:13","typeDescriptions":{"typeIdentifier":"t_rational_14022119582207878935470480432673551110355818459623658670638656538471984791552_by_1","typeString":"int_const 1402...(69 digits omitted)...1552"}},"visibility":"internal"},{"constant":true,"id":1521,"mutability":"constant","name":"BadSignatureV_error_offset","nameLocation":"15695:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"15678:50:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1519,"name":"uint256","nodeType":"ElementaryTypeName","src":"15678:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15724:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1524,"mutability":"constant","name":"BadSignatureV_error_length","nameLocation":"15747:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"15730:50:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1522,"name":"uint256","nodeType":"ElementaryTypeName","src":"15730:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":1523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15776:4:13","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":1528,"mutability":"constant","name":"InvalidSigner_error_signature","nameLocation":"15859:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"15842:123:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1525,"name":"uint256","nodeType":"ElementaryTypeName","src":"15842:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307838313565316436343030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15897:66:13","typeDescriptions":{"typeIdentifier":"t_rational_58514643937969255868553461704225490142875800142601383850338701997972496842752_by_1","typeString":"int_const 5851...(69 digits omitted)...2752"},"value":"0x815e1d6400000000000000000000000000000000000000000000000000000000"}],"id":1527,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15891:74:13","typeDescriptions":{"typeIdentifier":"t_rational_58514643937969255868553461704225490142875800142601383850338701997972496842752_by_1","typeString":"int_const 5851...(69 digits omitted)...2752"}},"visibility":"internal"},{"constant":true,"id":1531,"mutability":"constant","name":"InvalidSigner_error_length","nameLocation":"15984:26:13","nodeType":"VariableDeclaration","scope":1555,"src":"15967:50:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1529,"name":"uint256","nodeType":"ElementaryTypeName","src":"15967:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16013:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1535,"mutability":"constant","name":"InvalidSignature_error_signature","nameLocation":"16099:32:13","nodeType":"VariableDeclaration","scope":1555,"src":"16082:126:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1532,"name":"uint256","nodeType":"ElementaryTypeName","src":"16082:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307838626161353739663030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16140:66:13","typeDescriptions":{"typeIdentifier":"t_rational_63172454692650044175922453017377725552231499603677422236261231756097827635200_by_1","typeString":"int_const 6317...(69 digits omitted)...5200"},"value":"0x8baa579f00000000000000000000000000000000000000000000000000000000"}],"id":1534,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16134:74:13","typeDescriptions":{"typeIdentifier":"t_rational_63172454692650044175922453017377725552231499603677422236261231756097827635200_by_1","typeString":"int_const 6317...(69 digits omitted)...5200"}},"visibility":"internal"},{"constant":true,"id":1538,"mutability":"constant","name":"InvalidSignature_error_length","nameLocation":"16227:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"16210:53:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"16210:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16259:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1542,"mutability":"constant","name":"BadContractSignature_error_signature","nameLocation":"16349:36:13","nodeType":"VariableDeclaration","scope":1555,"src":"16332:130:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1539,"name":"uint256","nodeType":"ElementaryTypeName","src":"16332:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307834663766623830643030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":1540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16394:66:13","typeDescriptions":{"typeIdentifier":"t_rational_35958374887112015628044892763368989819543574546649478260886399961310217371648_by_1","typeString":"int_const 3595...(69 digits omitted)...1648"},"value":"0x4f7fb80d00000000000000000000000000000000000000000000000000000000"}],"id":1541,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16388:74:13","typeDescriptions":{"typeIdentifier":"t_rational_35958374887112015628044892763368989819543574546649478260886399961310217371648_by_1","typeString":"int_const 3595...(69 digits omitted)...1648"}},"visibility":"internal"},{"constant":true,"id":1545,"mutability":"constant","name":"BadContractSignature_error_length","nameLocation":"16481:33:13","nodeType":"VariableDeclaration","scope":1555,"src":"16464:57:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1543,"name":"uint256","nodeType":"ElementaryTypeName","src":"16464:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":1544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16517:4:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":1548,"mutability":"constant","name":"NumBitsAfterSelector","nameLocation":"16541:20:13","nodeType":"VariableDeclaration","scope":1555,"src":"16524:44:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1546,"name":"uint256","nodeType":"ElementaryTypeName","src":"16524:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786530","id":1547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16564:4:13","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xe0"},"visibility":"internal"},{"constant":true,"id":1551,"mutability":"constant","name":"NonMatchSelector_MagicModulus","nameLocation":"16745:29:13","nodeType":"VariableDeclaration","scope":1555,"src":"16728:51:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1549,"name":"uint256","nodeType":"ElementaryTypeName","src":"16728:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3639","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16777:2:13","typeDescriptions":{"typeIdentifier":"t_rational_69_by_1","typeString":"int_const 69"},"value":"69"},"visibility":"internal"},{"constant":true,"id":1554,"mutability":"constant","name":"NonMatchSelector_MagicRemainder","nameLocation":"16880:31:13","nodeType":"VariableDeclaration","scope":1555,"src":"16863:55:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1552,"name":"uint256","nodeType":"ElementaryTypeName","src":"16863:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783164","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16914:4:13","typeDescriptions":{"typeIdentifier":"t_rational_29_by_1","typeString":"int_const 29"},"value":"0x1d"},"visibility":"internal"}],"src":"32:16888:13"},"id":13},"contracts/lib/ConsiderationEnums.sol":{"ast":{"absolutePath":"contracts/lib/ConsiderationEnums.sol","exportedSymbols":{"ItemType":[1561]},"id":1562,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1556,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:14"},{"canonicalName":"ItemType","id":1561,"members":[{"id":1557,"name":"NATIVE","nameLocation":"77:6:14","nodeType":"EnumValue","src":"77:6:14"},{"id":1558,"name":"ERC20","nameLocation":"89:5:14","nodeType":"EnumValue","src":"89:5:14"},{"id":1559,"name":"ERC721","nameLocation":"100:6:14","nodeType":"EnumValue","src":"100:6:14"},{"id":1560,"name":"ERC1155","nameLocation":"112:7:14","nodeType":"EnumValue","src":"112:7:14"}],"name":"ItemType","nameLocation":"62:8:14","nodeType":"EnumDefinition","src":"57:64:14"}],"src":"32:89:14"},"id":14},"contracts/lib/ConsiderationStructs.sol":{"ast":{"absolutePath":"contracts/lib/ConsiderationStructs.sol","exportedSymbols":{"Order":[1641],"OrderComponents":[1600],"OrderParameters":[1635],"OrderStatus":[1658]},"id":1659,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1563,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:15"},{"canonicalName":"OrderComponents","id":1600,"members":[{"constant":false,"id":1565,"mutability":"mutable","name":"offerer","nameLocation":"94:7:15","nodeType":"VariableDeclaration","scope":1600,"src":"86:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1564,"name":"address","nodeType":"ElementaryTypeName","src":"86:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1567,"mutability":"mutable","name":"token","nameLocation":"115:5:15","nodeType":"VariableDeclaration","scope":1600,"src":"107:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1566,"name":"address","nodeType":"ElementaryTypeName","src":"107:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1569,"mutability":"mutable","name":"identifier","nameLocation":"134:10:15","nodeType":"VariableDeclaration","scope":1600,"src":"126:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1568,"name":"uint256","nodeType":"ElementaryTypeName","src":"126:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1571,"mutability":"mutable","name":"currency","nameLocation":"158:8:15","nodeType":"VariableDeclaration","scope":1600,"src":"150:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1570,"name":"address","nodeType":"ElementaryTypeName","src":"150:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1573,"mutability":"mutable","name":"artist","nameLocation":"180:6:15","nodeType":"VariableDeclaration","scope":1600,"src":"172:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1572,"name":"address","nodeType":"ElementaryTypeName","src":"172:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1575,"mutability":"mutable","name":"platform","nameLocation":"200:8:15","nodeType":"VariableDeclaration","scope":1600,"src":"192:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"192:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1577,"mutability":"mutable","name":"startTime","nameLocation":"222:9:15","nodeType":"VariableDeclaration","scope":1600,"src":"214:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1576,"name":"uint256","nodeType":"ElementaryTypeName","src":"214:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"endTime","nameLocation":"245:7:15","nodeType":"VariableDeclaration","scope":1600,"src":"237:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1578,"name":"uint256","nodeType":"ElementaryTypeName","src":"237:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"duration","nameLocation":"266:8:15","nodeType":"VariableDeclaration","scope":1600,"src":"258:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"258:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"periods","nameLocation":"288:7:15","nodeType":"VariableDeclaration","scope":1600,"src":"280:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1582,"name":"uint256","nodeType":"ElementaryTypeName","src":"280:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1585,"mutability":"mutable","name":"amount","nameLocation":"309:6:15","nodeType":"VariableDeclaration","scope":1600,"src":"301:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1584,"name":"uint256","nodeType":"ElementaryTypeName","src":"301:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1587,"mutability":"mutable","name":"ratio","nameLocation":"329:5:15","nodeType":"VariableDeclaration","scope":1600,"src":"321:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1586,"name":"uint256","nodeType":"ElementaryTypeName","src":"321:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1589,"mutability":"mutable","name":"royalty","nameLocation":"348:7:15","nodeType":"VariableDeclaration","scope":1600,"src":"340:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1588,"name":"uint256","nodeType":"ElementaryTypeName","src":"340:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1591,"mutability":"mutable","name":"fee","nameLocation":"369:3:15","nodeType":"VariableDeclaration","scope":1600,"src":"361:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1590,"name":"uint256","nodeType":"ElementaryTypeName","src":"361:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1593,"mutability":"mutable","name":"withdrawFee","nameLocation":"386:11:15","nodeType":"VariableDeclaration","scope":1600,"src":"378:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1592,"name":"uint256","nodeType":"ElementaryTypeName","src":"378:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1595,"mutability":"mutable","name":"salt","nameLocation":"411:4:15","nodeType":"VariableDeclaration","scope":1600,"src":"403:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1594,"name":"uint256","nodeType":"ElementaryTypeName","src":"403:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1597,"mutability":"mutable","name":"conduitKey","nameLocation":"429:10:15","nodeType":"VariableDeclaration","scope":1600,"src":"421:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1596,"name":"bytes32","nodeType":"ElementaryTypeName","src":"421:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1599,"mutability":"mutable","name":"counter","nameLocation":"453:7:15","nodeType":"VariableDeclaration","scope":1600,"src":"445:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1598,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OrderComponents","nameLocation":"64:15:15","nodeType":"StructDefinition","scope":1659,"src":"57:406:15","visibility":"public"},{"canonicalName":"OrderParameters","id":1635,"members":[{"constant":false,"id":1602,"mutability":"mutable","name":"offerer","nameLocation":"502:7:15","nodeType":"VariableDeclaration","scope":1635,"src":"494:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1601,"name":"address","nodeType":"ElementaryTypeName","src":"494:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1604,"mutability":"mutable","name":"token","nameLocation":"534:5:15","nodeType":"VariableDeclaration","scope":1635,"src":"526:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1603,"name":"address","nodeType":"ElementaryTypeName","src":"526:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1606,"mutability":"mutable","name":"identifier","nameLocation":"566:10:15","nodeType":"VariableDeclaration","scope":1635,"src":"558:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1605,"name":"uint256","nodeType":"ElementaryTypeName","src":"558:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1608,"mutability":"mutable","name":"currency","nameLocation":"598:8:15","nodeType":"VariableDeclaration","scope":1635,"src":"590:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1607,"name":"address","nodeType":"ElementaryTypeName","src":"590:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1610,"mutability":"mutable","name":"artist","nameLocation":"630:6:15","nodeType":"VariableDeclaration","scope":1635,"src":"622:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1609,"name":"address","nodeType":"ElementaryTypeName","src":"622:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1612,"mutability":"mutable","name":"platform","nameLocation":"662:8:15","nodeType":"VariableDeclaration","scope":1635,"src":"654:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1611,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1614,"mutability":"mutable","name":"startTime","nameLocation":"694:9:15","nodeType":"VariableDeclaration","scope":1635,"src":"686:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1613,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1616,"mutability":"mutable","name":"endTime","nameLocation":"726:7:15","nodeType":"VariableDeclaration","scope":1635,"src":"718:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1615,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1618,"mutability":"mutable","name":"duration","nameLocation":"758:8:15","nodeType":"VariableDeclaration","scope":1635,"src":"750:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1617,"name":"uint256","nodeType":"ElementaryTypeName","src":"750:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1620,"mutability":"mutable","name":"periods","nameLocation":"791:7:15","nodeType":"VariableDeclaration","scope":1635,"src":"783:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1619,"name":"uint256","nodeType":"ElementaryTypeName","src":"783:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1622,"mutability":"mutable","name":"amount","nameLocation":"824:6:15","nodeType":"VariableDeclaration","scope":1635,"src":"816:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1621,"name":"uint256","nodeType":"ElementaryTypeName","src":"816:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1624,"mutability":"mutable","name":"ratio","nameLocation":"857:5:15","nodeType":"VariableDeclaration","scope":1635,"src":"849:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1623,"name":"uint256","nodeType":"ElementaryTypeName","src":"849:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1626,"mutability":"mutable","name":"royalty","nameLocation":"890:7:15","nodeType":"VariableDeclaration","scope":1635,"src":"882:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1625,"name":"uint256","nodeType":"ElementaryTypeName","src":"882:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1628,"mutability":"mutable","name":"fee","nameLocation":"923:3:15","nodeType":"VariableDeclaration","scope":1635,"src":"915:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1627,"name":"uint256","nodeType":"ElementaryTypeName","src":"915:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1630,"mutability":"mutable","name":"withdrawFee","nameLocation":"956:11:15","nodeType":"VariableDeclaration","scope":1635,"src":"948:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1629,"name":"uint256","nodeType":"ElementaryTypeName","src":"948:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1632,"mutability":"mutable","name":"salt","nameLocation":"989:4:15","nodeType":"VariableDeclaration","scope":1635,"src":"981:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1634,"mutability":"mutable","name":"conduitKey","nameLocation":"1022:10:15","nodeType":"VariableDeclaration","scope":1635,"src":"1014:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1633,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1014:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"OrderParameters","nameLocation":"472:15:15","nodeType":"StructDefinition","scope":1659,"src":"465:579:15","visibility":"public"},{"canonicalName":"Order","id":1641,"members":[{"constant":false,"id":1638,"mutability":"mutable","name":"parameters","nameLocation":"1081:10:15","nodeType":"VariableDeclaration","scope":1641,"src":"1065:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"},"typeName":{"id":1637,"nodeType":"UserDefinedTypeName","pathNode":{"id":1636,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"1065:15:15"},"referencedDeclaration":1635,"src":"1065:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":1640,"mutability":"mutable","name":"signature","nameLocation":"1103:9:15","nodeType":"VariableDeclaration","scope":1641,"src":"1097:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1639,"name":"bytes","nodeType":"ElementaryTypeName","src":"1097:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Order","nameLocation":"1053:5:15","nodeType":"StructDefinition","scope":1659,"src":"1046:69:15","visibility":"public"},{"canonicalName":"OrderStatus","id":1658,"members":[{"constant":false,"id":1643,"mutability":"mutable","name":"isValidated","nameLocation":"1147:11:15","nodeType":"VariableDeclaration","scope":1658,"src":"1142:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1642,"name":"bool","nodeType":"ElementaryTypeName","src":"1142:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"isCancelled","nameLocation":"1169:11:15","nodeType":"VariableDeclaration","scope":1658,"src":"1164:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1644,"name":"bool","nodeType":"ElementaryTypeName","src":"1164:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1647,"mutability":"mutable","name":"isFinalized","nameLocation":"1191:11:15","nodeType":"VariableDeclaration","scope":1658,"src":"1186:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1646,"name":"bool","nodeType":"ElementaryTypeName","src":"1186:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1649,"mutability":"mutable","name":"isBroken","nameLocation":"1213:8:15","nodeType":"VariableDeclaration","scope":1658,"src":"1208:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1648,"name":"bool","nodeType":"ElementaryTypeName","src":"1208:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1651,"mutability":"mutable","name":"fulfiller","nameLocation":"1235:9:15","nodeType":"VariableDeclaration","scope":1658,"src":"1227:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1650,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1653,"mutability":"mutable","name":"startedAt","nameLocation":"1258:9:15","nodeType":"VariableDeclaration","scope":1658,"src":"1250:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1652,"name":"uint256","nodeType":"ElementaryTypeName","src":"1250:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1655,"mutability":"mutable","name":"shadowId","nameLocation":"1281:8:15","nodeType":"VariableDeclaration","scope":1658,"src":"1273:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1654,"name":"uint256","nodeType":"ElementaryTypeName","src":"1273:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1657,"mutability":"mutable","name":"paidTimes","nameLocation":"1303:9:15","nodeType":"VariableDeclaration","scope":1658,"src":"1295:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1656,"name":"uint256","nodeType":"ElementaryTypeName","src":"1295:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OrderStatus","nameLocation":"1124:11:15","nodeType":"StructDefinition","scope":1659,"src":"1117:198:15","visibility":"public"}],"src":"32:1283:15"},"id":15},"contracts/lib/CounterManager.sol":{"ast":{"absolutePath":"contracts/lib/CounterManager.sol","exportedSymbols":{"ConsiderationEventsAndErrors":[497],"CounterManager":[1711],"ReentrancyGuard":[4038]},"id":1712,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1660,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:16"},{"absolutePath":"contracts/interfaces/ConsiderationEventsAndErrors.sol","file":"../interfaces/ConsiderationEventsAndErrors.sol","id":1662,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1712,"sourceUnit":498,"src":"58:98:16","symbolAliases":[{"foreign":{"id":1661,"name":"ConsiderationEventsAndErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"71:28:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ReentrancyGuard.sol","file":"./ReentrancyGuard.sol","id":1664,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1712,"sourceUnit":4039,"src":"158:56:16","symbolAliases":[{"foreign":{"id":1663,"name":"ReentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"167:15:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1665,"name":"ConsiderationEventsAndErrors","nodeType":"IdentifierPath","referencedDeclaration":497,"src":"243:28:16"},"id":1666,"nodeType":"InheritanceSpecifier","src":"243:28:16"},{"baseName":{"id":1667,"name":"ReentrancyGuard","nodeType":"IdentifierPath","referencedDeclaration":4038,"src":"273:15:16"},"id":1668,"nodeType":"InheritanceSpecifier","src":"273:15:16"}],"canonicalName":"CounterManager","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":1711,"linearizedBaseContracts":[1711,4038,516,497],"name":"CounterManager","nameLocation":"225:14:16","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1672,"mutability":"mutable","name":"_counters","nameLocation":"332:9:16","nodeType":"VariableDeclaration","scope":1711,"src":"296:45:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1671,"keyType":{"id":1669,"name":"address","nodeType":"ElementaryTypeName","src":"304:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"296:27:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":1670,"name":"uint256","nodeType":"ElementaryTypeName","src":"315:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":1695,"nodeType":"Block","src":"415:177:16","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1677,"name":"_assertNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"425:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"425:21:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1679,"nodeType":"ExpressionStatement","src":"425:21:16"},{"id":1688,"nodeType":"UncheckedBlock","src":"457:71:16","statements":[{"expression":{"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1680,"name":"newCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"481:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"494:23:16","subExpression":{"baseExpression":{"id":1681,"name":"_counters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"496:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1684,"indexExpression":{"expression":{"id":1682,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"506:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"506:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"496:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"481:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1687,"nodeType":"ExpressionStatement","src":"481:36:16"}]},{"eventCall":{"arguments":[{"id":1690,"name":"newCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"562:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1691,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"574:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"574:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1689,"name":"CounterIncremented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":391,"src":"543:18:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"543:42:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1694,"nodeType":"EmitStatement","src":"538:47:16"}]},"id":1696,"implemented":true,"kind":"function","modifiers":[],"name":"_incrementCounter","nameLocation":"357:17:16","nodeType":"FunctionDefinition","parameters":{"id":1673,"nodeType":"ParameterList","parameters":[],"src":"374:2:16"},"returnParameters":{"id":1676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1675,"mutability":"mutable","name":"newCounter","nameLocation":"403:10:16","nodeType":"VariableDeclaration","scope":1696,"src":"395:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"395:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"394:20:16"},"scope":1711,"src":"348:244:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1709,"nodeType":"Block","src":"711:52:16","statements":[{"expression":{"id":1707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1703,"name":"currentCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"721:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1704,"name":"_counters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"738:9:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1706,"indexExpression":{"id":1705,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1698,"src":"748:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"738:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"721:35:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1708,"nodeType":"ExpressionStatement","src":"721:35:16"}]},"id":1710,"implemented":true,"kind":"function","modifiers":[],"name":"_getCounter","nameLocation":"607:11:16","nodeType":"FunctionDefinition","parameters":{"id":1699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1698,"mutability":"mutable","name":"offerer","nameLocation":"627:7:16","nodeType":"VariableDeclaration","scope":1710,"src":"619:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1697,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"618:17:16"},"returnParameters":{"id":1702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1701,"mutability":"mutable","name":"currentCounter","nameLocation":"691:14:16","nodeType":"VariableDeclaration","scope":1710,"src":"683:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1700,"name":"uint256","nodeType":"ElementaryTypeName","src":"683:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"682:24:16"},"scope":1711,"src":"598:165:16","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1712,"src":"216:549:16","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496,515]}],"src":"32:734:16"},"id":16},"contracts/lib/Executor.sol":{"ast":{"absolutePath":"contracts/lib/Executor.sol","exportedSymbols":{"AccumulatorArmed":[1462],"AccumulatorDisarmed":[1459],"Accumulator_array_length_ptr":[1474],"Accumulator_array_offset":[1480],"Accumulator_array_offset_ptr":[1471],"Accumulator_conduitKey_ptr":[1465],"Accumulator_itemSizeOffsetDifference":[1477],"Accumulator_selector_ptr":[1468],"AdditionalRecipients_size":[1179],"AdvancedOrder_numerator_offset":[1131],"AlmostOneWord":[1134],"BadContractSignature_error_length":[1545],"BadContractSignature_error_signature":[1542],"BadSignatureV_error_length":[1524],"BadSignatureV_error_offset":[1521],"BadSignatureV_error_signature":[1518],"BasicOrder_additionalRecipients_data_cdPtr":[1270],"BasicOrder_additionalRecipients_head_cdPtr":[1261],"BasicOrder_additionalRecipients_head_ptr":[1330],"BasicOrder_additionalRecipients_length_cdPtr":[1267],"BasicOrder_basicOrderType_cdPtr":[1246],"BasicOrder_basicOrderType_range":[1276],"BasicOrder_common_params_size":[1170],"BasicOrder_considerationAmount_cdPtr":[1231],"BasicOrder_considerationHashesArray_ptr":[1173],"BasicOrder_considerationItem_endAmount_ptr":[1294],"BasicOrder_considerationItem_identifier_ptr":[1288],"BasicOrder_considerationItem_itemType_ptr":[1282],"BasicOrder_considerationItem_startAmount_ptr":[1291],"BasicOrder_considerationItem_token_ptr":[1285],"BasicOrder_considerationItem_typeHash_ptr":[1279],"BasicOrder_considerationToken_cdPtr":[1228],"BasicOrder_endAmount_cdPtr":[1167],"BasicOrder_fulfillerConduit_cdPtr":[1255],"BasicOrder_offerAmount_cdPtr":[1243],"BasicOrder_offerItem_endAmount_ptr":[1306],"BasicOrder_offerItem_itemType_ptr":[1300],"BasicOrder_offerItem_token_ptr":[1303],"BasicOrder_offerItem_typeHash_ptr":[1297],"BasicOrder_offerToken_cdPtr":[1240],"BasicOrder_offererConduit_cdPtr":[1252],"BasicOrder_offerer_cdPtr":[1234],"BasicOrder_order_considerationHashes_ptr":[1318],"BasicOrder_order_counter_ptr":[1327],"BasicOrder_order_offerHashes_ptr":[1315],"BasicOrder_order_offerer_ptr":[1312],"BasicOrder_order_orderType_ptr":[1321],"BasicOrder_order_startTime_ptr":[1324],"BasicOrder_order_typeHash_ptr":[1309],"BasicOrder_parameters_cdPtr":[1225],"BasicOrder_parameters_ptr":[1273],"BasicOrder_signature_cdPtr":[1264],"BasicOrder_signature_ptr":[1333],"BasicOrder_startTime_cdPtr":[1249],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[1258],"BasicOrder_zone_cdPtr":[1237],"Common_amount_offset":[1062],"Common_identifier_offset":[1059],"Common_token_offset":[1056],"ConduitInterface":[343],"ConduitItemType":[34],"Conduit_execute_ConduitTransfer_length":[1429],"Conduit_execute_ConduitTransfer_length_ptr":[1435],"Conduit_execute_ConduitTransfer_offset_ptr":[1432],"Conduit_execute_ConduitTransfer_ptr":[1426],"Conduit_execute_signature":[1417],"Conduit_execute_transferAmount_ptr":[1453],"Conduit_execute_transferFrom_ptr":[1444],"Conduit_execute_transferIdentifier_ptr":[1450],"Conduit_execute_transferItemType_ptr":[1438],"Conduit_execute_transferTo_ptr":[1447],"Conduit_execute_transferToken_ptr":[1441],"Conduit_transferItem_amount_ptr":[1498],"Conduit_transferItem_from_ptr":[1489],"Conduit_transferItem_identifier_ptr":[1495],"Conduit_transferItem_size":[1483],"Conduit_transferItem_to_ptr":[1492],"Conduit_transferItem_token_ptr":[1486],"ConsiderItem_recipient_offset":[1080],"ConsiderationItem_recipient_offset":[1077],"CostPerWord":[1392],"Create2AddressDerivation_length":[1401],"Create2AddressDerivation_ptr":[1398],"DefaultFreeMemoryPointer":[1158],"ECDSA_MaxLength":[1344],"ECDSA_signature_s_offset":[1347],"ECDSA_signature_v_offset":[1350],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[1341],"EIP1271_isValidSignature_calldata_baseLength":[1366],"EIP1271_isValidSignature_digest_negativeOffset":[1360],"EIP1271_isValidSignature_selector":[1354],"EIP1271_isValidSignature_selector_negativeOffset":[1363],"EIP1271_isValidSignature_signatureHead_negativeOffset":[1357],"EIP1271_isValidSignature_signature_head_offset":[1369],"EIP2098_allButHighestBitMask":[1337],"EIP712_DigestPayload_size":[1188],"EIP712_DomainSeparator_offset":[1182],"EIP712_OrderHash_offset":[1185],"EIP712_Order_size":[1176],"EIP_712_PREFIX":[1386],"Ecrecover_args_size":[1511],"Ecrecover_precompile":[1508],"Execution_conduit_offset":[1086],"Execution_offerer_offset":[1083],"Executor":[2186],"ExtraGasBuffer":[1389],"FiveWords":[1149],"FourWords":[1146],"FreeMemoryPointerSlot":[1152],"Fulfillment_itemIndex_offset":[1128],"InexactFraction_error_len":[1505],"InexactFraction_error_signature":[1502],"InvalidFulfillmentComponentData_error_len":[1093],"InvalidFulfillmentComponentData_error_signature":[1090],"InvalidSignature_error_length":[1538],"InvalidSignature_error_signature":[1535],"InvalidSigner_error_length":[1531],"InvalidSigner_error_signature":[1528],"ItemType":[1561],"MaskOverByteTwelve":[1405],"MaskOverFirstFourBytes":[1413],"MaskOverLastTwentyBytes":[1409],"MaxUint120":[1423],"MaxUint8":[1420],"MemoryExpansionCoefficient":[1395],"MissingItemAmount_error_len":[1113],"MissingItemAmount_error_signature":[1110],"NameLengthPtr":[1035],"NameWithLength":[1038],"NoContract_error_length":[1382],"NoContract_error_sig_ptr":[1376],"NoContract_error_signature":[1373],"NoContract_error_token_ptr":[1379],"NonMatchSelector_MagicModulus":[1551],"NonMatchSelector_MagicRemainder":[1554],"NumBitsAfterSelector":[1548],"OneConduitExecute_size":[1456],"OneWord":[1137],"OrderFulfilled_baseOffset":[1201],"OrderFulfilled_baseSize":[1194],"OrderFulfilled_consideration_body_offset":[1222],"OrderFulfilled_consideration_head_offset":[1219],"OrderFulfilled_consideration_length_baseOffset":[1204],"OrderFulfilled_fulfiller_offset":[1210],"OrderFulfilled_offer_body_offset":[1216],"OrderFulfilled_offer_head_offset":[1213],"OrderFulfilled_offer_length_baseOffset":[1207],"OrderFulfilled_selector":[1198],"OrderParameters_conduit_offset":[1122],"OrderParameters_consideration_head_offset":[1119],"OrderParameters_counter_offset":[1125],"OrderParameters_offer_head_offset":[1116],"Panic_arithmetic":[1106],"Panic_error_length":[1103],"Panic_error_offset":[1100],"Panic_error_signature":[1097],"ReceivedItem_CommonParams_size":[1074],"ReceivedItem_amount_offset":[1068],"ReceivedItem_recipient_offset":[1071],"ReceivedItem_size":[1065],"Signature_lower_v":[1514],"Slot0x80":[1161],"Slot0xA0":[1164],"ThreeWords":[1143],"TokenTransferrer":[4266],"TwoWords":[1140],"Verifiers":[4709],"Version":[1041],"Version_length":[1044],"Version_shift":[1047],"ZeroSlot":[1155],"_ENTERED":[1053],"_NOT_ENTERED":[1050],"receivedItemsHash_ptr":[1191]},"id":2187,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1713,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:17"},{"absolutePath":"contracts/interfaces/ConduitInterface.sol","file":"../interfaces/ConduitInterface.sol","id":1715,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2187,"sourceUnit":344,"src":"58:70:17","symbolAliases":[{"foreign":{"id":1714,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"67:16:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/conduit/lib/ConduitEnums.sol","file":"../conduit/lib/ConduitEnums.sol","id":1717,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2187,"sourceUnit":35,"src":"130:66:17","symbolAliases":[{"foreign":{"id":1716,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"139:15:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationEnums.sol","file":"./ConsiderationEnums.sol","id":1719,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2187,"sourceUnit":1562,"src":"198:52:17","symbolAliases":[{"foreign":{"id":1718,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"207:8:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/Verifiers.sol","file":"./Verifiers.sol","id":1721,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2187,"sourceUnit":4710,"src":"252:44:17","symbolAliases":[{"foreign":{"id":1720,"name":"Verifiers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"261:9:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/TokenTransferrer.sol","file":"./TokenTransferrer.sol","id":1723,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2187,"sourceUnit":4267,"src":"298:58:17","symbolAliases":[{"foreign":{"id":1722,"name":"TokenTransferrer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4266,"src":"307:16:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":1724,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2187,"sourceUnit":1555,"src":"358:38:17","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1726,"name":"Verifiers","nodeType":"IdentifierPath","referencedDeclaration":4709,"src":"605:9:17"},"id":1727,"nodeType":"InheritanceSpecifier","src":"605:9:17"},{"baseName":{"id":1728,"name":"TokenTransferrer","nodeType":"IdentifierPath","referencedDeclaration":4266,"src":"616:16:17"},"id":1729,"nodeType":"InheritanceSpecifier","src":"616:16:17"}],"canonicalName":"Executor","contractDependencies":[],"contractKind":"contract","documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"398:185:17","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":2186,"linearizedBaseContracts":[2186,4266,4709,4190,2340,534,632,594,1711,4038,516,497,2300,1030],"name":"Executor","nameLocation":"593:8:17","nodeType":"ContractDefinition","nodes":[{"body":{"id":1738,"nodeType":"Block","src":"1060:2:17","statements":[]},"documentation":{"id":1730,"nodeType":"StructuredDocumentation","src":"639:348:17","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":1739,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1735,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1732,"src":"1041:17:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1736,"kind":"baseConstructorSpecifier","modifierName":{"id":1734,"name":"Verifiers","nodeType":"IdentifierPath","referencedDeclaration":4709,"src":"1031:9:17"},"nodeType":"ModifierInvocation","src":"1031:28:17"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"conduitController","nameLocation":"1012:17:17","nodeType":"VariableDeclaration","scope":1739,"src":"1004:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1731,"name":"address","nodeType":"ElementaryTypeName","src":"1004:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1003:27:17"},"returnParameters":{"id":1737,"nodeType":"ParameterList","parameters":[],"src":"1060:0:17"},"scope":2186,"src":"992:70:17","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1807,"nodeType":"Block","src":"2402:3288:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1758,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"2487:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:1:17","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":1760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2501:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1759,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2501:7:17","typeDescriptions":{}}},"id":1762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2501:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2487:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1805,"nodeType":"Block","src":"5043:641:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_ItemType_$1561","typeString":"enum ItemType"},"id":1778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1775,"name":"itemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"5138:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$1561","typeString":"enum ItemType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1776,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"5150:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ItemType_$1561_$","typeString":"type(enum ItemType)"}},"id":1777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":1559,"src":"5150:15:17","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$1561","typeString":"enum ItemType"}},"src":"5138:27:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1803,"nodeType":"Block","src":"5512:162:17","statements":[{"expression":{"arguments":[{"id":1796,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"5623:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1797,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"5630:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1798,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"5636:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1799,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1751,"src":"5640:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1800,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1753,"src":"5652:6:17","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":1795,"name":"_performERC1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4255,"src":"5599:23:17","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":1801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5599:60:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1802,"nodeType":"ExpressionStatement","src":"5599:60:17"}]},"id":1804,"nodeType":"IfStatement","src":"5134:540:17","trueBody":{"id":1794,"nodeType":"Block","src":"5167:339:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1779,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1753,"src":"5263:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":1780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5273:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5263:11:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1786,"nodeType":"IfStatement","src":"5259:94:17","trueBody":{"id":1785,"nodeType":"Block","src":"5276:77:17","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1782,"name":"InvalidERC721TransferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":540,"src":"5305:27:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5305:29:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1784,"nodeType":"RevertStatement","src":"5298:36:17"}]}},{"expression":{"arguments":[{"id":1788,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"5463:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1789,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"5470:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1790,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"5476:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1791,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1751,"src":"5480:10:17","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":1787,"name":"_performERC721Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"5440:22:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5440:51:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1793,"nodeType":"ExpressionStatement","src":"5440:51:17"}]}}]},"id":1806,"nodeType":"IfStatement","src":"2483:3201:17","trueBody":{"id":1774,"nodeType":"Block","src":"2513:2524:17","statements":[{"assignments":[1765],"declarations":[{"constant":false,"id":1765,"mutability":"mutable","name":"callDataOffset","nameLocation":"2615:14:17","nodeType":"VariableDeclaration","scope":1774,"src":"2607:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1764,"name":"uint256","nodeType":"ElementaryTypeName","src":"2607:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1766,"nodeType":"VariableDeclarationStatement","src":"2607:22:17"},{"AST":{"nodeType":"YulBlock","src":"2724:2102:17","statements":[{"nodeType":"YulAssignment","src":"2820:46:17","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"2844:21:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2838:5:17"},"nodeType":"YulFunctionCall","src":"2838:28:17"},"variableNames":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"2820:14:17"}]},{"expression":{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"2961:14:17"},{"name":"Conduit_execute_signature","nodeType":"YulIdentifier","src":"2977:25:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2954:6:17"},"nodeType":"YulFunctionCall","src":"2954:49:17"},"nodeType":"YulExpressionStatement","src":"2954:49:17"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"3154:14:17"},{"name":"Conduit_execute_ConduitTransfer_offset_ptr","nodeType":"YulIdentifier","src":"3194:42:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3125:3:17"},"nodeType":"YulFunctionCall","src":"3125:133:17"},{"name":"Conduit_execute_ConduitTransfer_ptr","nodeType":"YulIdentifier","src":"3280:35:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3097:6:17"},"nodeType":"YulFunctionCall","src":"3097:236:17"},"nodeType":"YulExpressionStatement","src":"3097:236:17"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"3484:14:17"},{"name":"Conduit_execute_ConduitTransfer_length_ptr","nodeType":"YulIdentifier","src":"3524:42:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3455:3:17"},"nodeType":"YulFunctionCall","src":"3455:133:17"},{"name":"Conduit_execute_ConduitTransfer_length","nodeType":"YulIdentifier","src":"3610:38:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3427:6:17"},"nodeType":"YulFunctionCall","src":"3427:239:17"},"nodeType":"YulExpressionStatement","src":"3427:239:17"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"3766:14:17"},{"name":"Conduit_execute_transferItemType_ptr","nodeType":"YulIdentifier","src":"3782:36:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3762:3:17"},"nodeType":"YulFunctionCall","src":"3762:57:17"},{"name":"itemType","nodeType":"YulIdentifier","src":"3841:8:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3734:6:17"},"nodeType":"YulFunctionCall","src":"3734:133:17"},"nodeType":"YulExpressionStatement","src":"3734:133:17"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"3963:14:17"},{"name":"Conduit_execute_transferToken_ptr","nodeType":"YulIdentifier","src":"3979:33:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3959:3:17"},"nodeType":"YulFunctionCall","src":"3959:54:17"},{"name":"token","nodeType":"YulIdentifier","src":"4035:5:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3931:6:17"},"nodeType":"YulFunctionCall","src":"3931:127:17"},"nodeType":"YulExpressionStatement","src":"3931:127:17"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"4164:14:17"},{"name":"Conduit_execute_transferFrom_ptr","nodeType":"YulIdentifier","src":"4180:32:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4160:3:17"},"nodeType":"YulFunctionCall","src":"4160:53:17"},{"name":"from","nodeType":"YulIdentifier","src":"4235:4:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4132:6:17"},"nodeType":"YulFunctionCall","src":"4132:125:17"},"nodeType":"YulExpressionStatement","src":"4132:125:17"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"4345:14:17"},{"name":"Conduit_execute_transferTo_ptr","nodeType":"YulIdentifier","src":"4361:30:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:17"},"nodeType":"YulFunctionCall","src":"4341:51:17"},{"name":"to","nodeType":"YulIdentifier","src":"4394:2:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:17"},"nodeType":"YulFunctionCall","src":"4334:63:17"},"nodeType":"YulExpressionStatement","src":"4334:63:17"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"4504:14:17"},{"name":"Conduit_execute_transferIdentifier_ptr","nodeType":"YulIdentifier","src":"4520:38:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4500:3:17"},"nodeType":"YulFunctionCall","src":"4500:59:17"},{"name":"identifier","nodeType":"YulIdentifier","src":"4581:10:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4472:6:17"},"nodeType":"YulFunctionCall","src":"4472:137:17"},"nodeType":"YulExpressionStatement","src":"4472:137:17"},{"expression":{"arguments":[{"arguments":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"4715:14:17"},{"name":"Conduit_execute_transferAmount_ptr","nodeType":"YulIdentifier","src":"4731:34:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4711:3:17"},"nodeType":"YulFunctionCall","src":"4711:55:17"},{"name":"amount","nodeType":"YulIdentifier","src":"4788:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4683:6:17"},"nodeType":"YulFunctionCall","src":"4683:129:17"},"nodeType":"YulExpressionStatement","src":"4683:129:17"}]},"evmVersion":"london","externalReferences":[{"declaration":1429,"isOffset":false,"isSlot":false,"src":"3610:38:17","valueSize":1},{"declaration":1435,"isOffset":false,"isSlot":false,"src":"3524:42:17","valueSize":1},{"declaration":1432,"isOffset":false,"isSlot":false,"src":"3194:42:17","valueSize":1},{"declaration":1426,"isOffset":false,"isSlot":false,"src":"3280:35:17","valueSize":1},{"declaration":1417,"isOffset":false,"isSlot":false,"src":"2977:25:17","valueSize":1},{"declaration":1453,"isOffset":false,"isSlot":false,"src":"4731:34:17","valueSize":1},{"declaration":1444,"isOffset":false,"isSlot":false,"src":"4180:32:17","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"4520:38:17","valueSize":1},{"declaration":1438,"isOffset":false,"isSlot":false,"src":"3782:36:17","valueSize":1},{"declaration":1447,"isOffset":false,"isSlot":false,"src":"4361:30:17","valueSize":1},{"declaration":1441,"isOffset":false,"isSlot":false,"src":"3979:33:17","valueSize":1},{"declaration":1152,"isOffset":false,"isSlot":false,"src":"2844:21:17","valueSize":1},{"declaration":1753,"isOffset":false,"isSlot":false,"src":"4788:6:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"2820:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"2961:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"3154:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"3484:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"3766:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"3963:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"4164:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"4345:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"4504:14:17","valueSize":1},{"declaration":1765,"isOffset":false,"isSlot":false,"src":"4715:14:17","valueSize":1},{"declaration":1747,"isOffset":false,"isSlot":false,"src":"4235:4:17","valueSize":1},{"declaration":1751,"isOffset":false,"isSlot":false,"src":"4581:10:17","valueSize":1},{"declaration":1743,"isOffset":false,"isSlot":false,"src":"3841:8:17","valueSize":1},{"declaration":1749,"isOffset":false,"isSlot":false,"src":"4394:2:17","valueSize":1},{"declaration":1745,"isOffset":false,"isSlot":false,"src":"4035:5:17","valueSize":1}],"id":1767,"nodeType":"InlineAssembly","src":"2715:2111:17"},{"expression":{"arguments":[{"id":1769,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"4930:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1770,"name":"callDataOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1765,"src":"4958:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1771,"name":"OneConduitExecute_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"4990:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1768,"name":"_callConduitUsingOffsets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"4888:24:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256)"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4888:138:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1773,"nodeType":"ExpressionStatement","src":"4888:138:17"}]}}]},"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"1068:1100:17","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":1808,"implemented":true,"kind":"function","modifiers":[],"name":"_transferIndividual721Or1155Item","nameLocation":"2182:32:17","nodeType":"FunctionDefinition","parameters":{"id":1756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"itemType","nameLocation":"2233:8:17","nodeType":"VariableDeclaration","scope":1808,"src":"2224:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$1561","typeString":"enum ItemType"},"typeName":{"id":1742,"nodeType":"UserDefinedTypeName","pathNode":{"id":1741,"name":"ItemType","nodeType":"IdentifierPath","referencedDeclaration":1561,"src":"2224:8:17"},"referencedDeclaration":1561,"src":"2224:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$1561","typeString":"enum ItemType"}},"visibility":"internal"},{"constant":false,"id":1745,"mutability":"mutable","name":"token","nameLocation":"2259:5:17","nodeType":"VariableDeclaration","scope":1808,"src":"2251:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1744,"name":"address","nodeType":"ElementaryTypeName","src":"2251:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"from","nameLocation":"2282:4:17","nodeType":"VariableDeclaration","scope":1808,"src":"2274:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1746,"name":"address","nodeType":"ElementaryTypeName","src":"2274:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1749,"mutability":"mutable","name":"to","nameLocation":"2304:2:17","nodeType":"VariableDeclaration","scope":1808,"src":"2296:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1748,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1751,"mutability":"mutable","name":"identifier","nameLocation":"2324:10:17","nodeType":"VariableDeclaration","scope":1808,"src":"2316:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1750,"name":"uint256","nodeType":"ElementaryTypeName","src":"2316:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1753,"mutability":"mutable","name":"amount","nameLocation":"2352:6:17","nodeType":"VariableDeclaration","scope":1808,"src":"2344:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1752,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1755,"mutability":"mutable","name":"conduitKey","nameLocation":"2376:10:17","nodeType":"VariableDeclaration","scope":1808,"src":"2368:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1754,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2368:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2214:178:17"},"returnParameters":{"id":1757,"nodeType":"ParameterList","parameters":[],"src":"2402:0:17"},"scope":2186,"src":"2173:3517:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1836,"nodeType":"Block","src":"5988:675:17","statements":[{"expression":{"arguments":[{"id":1817,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"6075:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1816,"name":"_assertNonZeroAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":631,"src":"6054:20:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6054:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1819,"nodeType":"ExpressionStatement","src":"6054:28:17"},{"assignments":[1821],"declarations":[{"constant":false,"id":1821,"mutability":"mutable","name":"success","nameLocation":"6179:7:17","nodeType":"VariableDeclaration","scope":1836,"src":"6174:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1820,"name":"bool","nodeType":"ElementaryTypeName","src":"6174:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1822,"nodeType":"VariableDeclarationStatement","src":"6174:12:17"},{"AST":{"nodeType":"YulBlock","src":"6206:136:17","statements":[{"nodeType":"YulAssignment","src":"6286:46:17","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"6302:3:17"},"nodeType":"YulFunctionCall","src":"6302:5:17"},{"name":"to","nodeType":"YulIdentifier","src":"6309:2:17"},{"name":"amount","nodeType":"YulIdentifier","src":"6313:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"6321:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6324:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6327:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6330:1:17","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"6297:4:17"},"nodeType":"YulFunctionCall","src":"6297:35:17"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"6286:7:17"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1813,"isOffset":false,"isSlot":false,"src":"6313:6:17","valueSize":1},{"declaration":1821,"isOffset":false,"isSlot":false,"src":"6286:7:17","valueSize":1},{"declaration":1811,"isOffset":false,"isSlot":false,"src":"6309:2:17","valueSize":1}],"id":1823,"nodeType":"InlineAssembly","src":"6197:145:17"},{"condition":{"id":1825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6388:8:17","subExpression":{"id":1824,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"6389:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1835,"nodeType":"IfStatement","src":"6384:273:17","trueBody":{"id":1834,"nodeType":"Block","src":"6398:259:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1826,"name":"_revertWithReasonIfOneIsReturned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"6488:32:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6488:34:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1828,"nodeType":"ExpressionStatement","src":"6488:34:17"},{"errorCall":{"arguments":[{"id":1830,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1811,"src":"6635:2:17","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":1831,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"6639:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1829,"name":"EtherTransferGenericFailure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"6607:27:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) pure"}},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6607:39:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1833,"nodeType":"RevertStatement","src":"6600:46:17"}]}}]},"documentation":{"id":1809,"nodeType":"StructuredDocumentation","src":"5696:220:17","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":1837,"implemented":true,"kind":"function","modifiers":[],"name":"_transferEth","nameLocation":"5930:12:17","nodeType":"FunctionDefinition","parameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1811,"mutability":"mutable","name":"to","nameLocation":"5959:2:17","nodeType":"VariableDeclaration","scope":1837,"src":"5943:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1810,"name":"address","nodeType":"ElementaryTypeName","src":"5943:15:17","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1813,"mutability":"mutable","name":"amount","nameLocation":"5971:6:17","nodeType":"VariableDeclaration","scope":1837,"src":"5963:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1812,"name":"uint256","nodeType":"ElementaryTypeName","src":"5963:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5942:36:17"},"returnParameters":{"id":1815,"nodeType":"ParameterList","parameters":[],"src":"5988:0:17"},"scope":2186,"src":"5921:742:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1893,"nodeType":"Block","src":"7789:779:17","statements":[{"expression":{"arguments":[{"id":1854,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1846,"src":"7876:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1853,"name":"_assertNonZeroAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":631,"src":"7855:20:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7855:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1856,"nodeType":"ExpressionStatement","src":"7855:28:17"},{"expression":{"arguments":[{"id":1858,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1850,"src":"7994:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1859,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"8007:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1857,"name":"_triggerIfArmedAndNotAccumulatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"7959:34:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (bytes memory,bytes32)"}},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7959:59:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1861,"nodeType":"ExpressionStatement","src":"7959:59:17"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1862,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"8080:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8102:1:17","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":1864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8094:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1863,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8094:7:17","typeDescriptions":{}}},"id":1866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8094:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8080:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1891,"nodeType":"Block","src":"8235:327:17","statements":[{"expression":{"arguments":[{"id":1877,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"8342:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1878,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1850,"src":"8370:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":1879,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"8399:15:17","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$34_$","typeString":"type(enum ConduitItemType)"}},"id":1880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC20","nodeType":"MemberAccess","referencedDeclaration":31,"src":"8399:21:17","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$34","typeString":"enum ConduitItemType"}},{"id":1881,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"8438:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1882,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1842,"src":"8461:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1883,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"8483:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8511:1:17","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":1885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8503:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1884,"name":"uint256","nodeType":"ElementaryTypeName","src":"8503:7:17","typeDescriptions":{}}},"id":1887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8503:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1888,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1846,"src":"8531:6:17","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_$34","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":1876,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"8317:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_enum$_ConduitItemType_$34_$_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":1889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8317:234:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1890,"nodeType":"ExpressionStatement","src":"8317:234:17"}]},"id":1892,"nodeType":"IfStatement","src":"8076:486:17","trueBody":{"id":1875,"nodeType":"Block","src":"8106:123:17","statements":[{"expression":{"arguments":[{"id":1869,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"8194:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1870,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1842,"src":"8201:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1871,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"8207:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1872,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1846,"src":"8211:6:17","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":1868,"name":"_performERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"8172:21:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8172:46:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1874,"nodeType":"ExpressionStatement","src":"8172:46:17"}]}}]},"documentation":{"id":1838,"nodeType":"StructuredDocumentation","src":"6669:925:17","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":1894,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC20","nameLocation":"7608:14:17","nodeType":"FunctionDefinition","parameters":{"id":1851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1840,"mutability":"mutable","name":"token","nameLocation":"7640:5:17","nodeType":"VariableDeclaration","scope":1894,"src":"7632:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1839,"name":"address","nodeType":"ElementaryTypeName","src":"7632:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1842,"mutability":"mutable","name":"from","nameLocation":"7663:4:17","nodeType":"VariableDeclaration","scope":1894,"src":"7655:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1841,"name":"address","nodeType":"ElementaryTypeName","src":"7655:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1844,"mutability":"mutable","name":"to","nameLocation":"7685:2:17","nodeType":"VariableDeclaration","scope":1894,"src":"7677:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1843,"name":"address","nodeType":"ElementaryTypeName","src":"7677:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1846,"mutability":"mutable","name":"amount","nameLocation":"7705:6:17","nodeType":"VariableDeclaration","scope":1894,"src":"7697:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1845,"name":"uint256","nodeType":"ElementaryTypeName","src":"7697:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1848,"mutability":"mutable","name":"conduitKey","nameLocation":"7729:10:17","nodeType":"VariableDeclaration","scope":1894,"src":"7721:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7721:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1850,"mutability":"mutable","name":"accumulator","nameLocation":"7762:11:17","nodeType":"VariableDeclaration","scope":1894,"src":"7749:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1849,"name":"bytes","nodeType":"ElementaryTypeName","src":"7749:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7622:157:17"},"returnParameters":{"id":1852,"nodeType":"ParameterList","parameters":[],"src":"7789:0:17"},"scope":2186,"src":"7599:969:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1953,"nodeType":"Block","src":"9788:873:17","statements":[{"expression":{"arguments":[{"id":1913,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"9898:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1914,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"9911:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1912,"name":"_triggerIfArmedAndNotAccumulatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"9863:34:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (bytes memory,bytes32)"}},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9863:59:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1916,"nodeType":"ExpressionStatement","src":"9863:59:17"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1917,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"9984:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10006:1:17","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":1919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9998:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9998:7:17","typeDescriptions":{}}},"id":1921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9998:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9984:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1951,"nodeType":"Block","src":"10327:328:17","statements":[{"expression":{"arguments":[{"id":1940,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"10434:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1941,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"10462:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":1942,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"10491:15:17","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$34_$","typeString":"type(enum ConduitItemType)"}},"id":1943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":32,"src":"10491:22:17","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$34","typeString":"enum ConduitItemType"}},{"id":1944,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"10531:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1945,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1899,"src":"10554:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1946,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"10576:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1947,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1903,"src":"10596:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1948,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"10624:6:17","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_$34","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":1939,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"10409:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_enum$_ConduitItemType_$34_$_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":1949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10409:235:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1950,"nodeType":"ExpressionStatement","src":"10409:235:17"}]},"id":1952,"nodeType":"IfStatement","src":"9980:675:17","trueBody":{"id":1938,"nodeType":"Block","src":"10010:311:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1923,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"10098:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":1924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10108:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10098:11:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1930,"nodeType":"IfStatement","src":"10094:86:17","trueBody":{"id":1929,"nodeType":"Block","src":"10111:69:17","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1926,"name":"InvalidERC721TransferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":540,"src":"10136:27:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10136:29:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1928,"nodeType":"RevertStatement","src":"10129:36:17"}]}},{"expression":{"arguments":[{"id":1932,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"10282:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1933,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1899,"src":"10289:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1934,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"10295:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1935,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1903,"src":"10299:10:17","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":1931,"name":"_performERC721Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"10259:22:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10259:51:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1937,"nodeType":"ExpressionStatement","src":"10259:51:17"}]}}]},"documentation":{"id":1895,"nodeType":"StructuredDocumentation","src":"8574:990:17","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":1954,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC721","nameLocation":"9578:15:17","nodeType":"FunctionDefinition","parameters":{"id":1910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1897,"mutability":"mutable","name":"token","nameLocation":"9611:5:17","nodeType":"VariableDeclaration","scope":1954,"src":"9603:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1896,"name":"address","nodeType":"ElementaryTypeName","src":"9603:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1899,"mutability":"mutable","name":"from","nameLocation":"9634:4:17","nodeType":"VariableDeclaration","scope":1954,"src":"9626:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1898,"name":"address","nodeType":"ElementaryTypeName","src":"9626:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1901,"mutability":"mutable","name":"to","nameLocation":"9656:2:17","nodeType":"VariableDeclaration","scope":1954,"src":"9648:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1900,"name":"address","nodeType":"ElementaryTypeName","src":"9648:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1903,"mutability":"mutable","name":"identifier","nameLocation":"9676:10:17","nodeType":"VariableDeclaration","scope":1954,"src":"9668:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1902,"name":"uint256","nodeType":"ElementaryTypeName","src":"9668:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1905,"mutability":"mutable","name":"amount","nameLocation":"9704:6:17","nodeType":"VariableDeclaration","scope":1954,"src":"9696:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1904,"name":"uint256","nodeType":"ElementaryTypeName","src":"9696:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1907,"mutability":"mutable","name":"conduitKey","nameLocation":"9728:10:17","nodeType":"VariableDeclaration","scope":1954,"src":"9720:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1906,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9720:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1909,"mutability":"mutable","name":"accumulator","nameLocation":"9761:11:17","nodeType":"VariableDeclaration","scope":1954,"src":"9748:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1908,"name":"bytes","nodeType":"ElementaryTypeName","src":"9748:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9593:185:17"},"returnParameters":{"id":1911,"nodeType":"ParameterList","parameters":[],"src":"9788:0:17"},"scope":2186,"src":"9569:1092:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2010,"nodeType":"Block","src":"11848:808:17","statements":[{"expression":{"arguments":[{"id":1973,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"11935:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1972,"name":"_assertNonZeroAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":631,"src":"11914:20:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11914:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1975,"nodeType":"ExpressionStatement","src":"11914:28:17"},{"expression":{"arguments":[{"id":1977,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1969,"src":"12053:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1978,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1967,"src":"12066:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1976,"name":"_triggerIfArmedAndNotAccumulatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"12018:34:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (bytes memory,bytes32)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12018:59:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1980,"nodeType":"ExpressionStatement","src":"12018:59:17"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1981,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1967,"src":"12139:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12161:1:17","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":1983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12153:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1982,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12153:7:17","typeDescriptions":{}}},"id":1985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12153:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12139:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2008,"nodeType":"Block","src":"12321:329:17","statements":[{"expression":{"arguments":[{"id":1997,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1967,"src":"12428:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1998,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1969,"src":"12456:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":1999,"name":"ConduitItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"12485:15:17","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ConduitItemType_$34_$","typeString":"type(enum ConduitItemType)"}},"id":2000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC1155","nodeType":"MemberAccess","referencedDeclaration":33,"src":"12485:23:17","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$34","typeString":"enum ConduitItemType"}},{"id":2001,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1957,"src":"12526:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2002,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1959,"src":"12549:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2003,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"12571:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2004,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"12591:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2005,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"12619:6:17","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_$34","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":1996,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"12403:7:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_enum$_ConduitItemType_$34_$_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":2006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12403:236:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2007,"nodeType":"ExpressionStatement","src":"12403:236:17"}]},"id":2009,"nodeType":"IfStatement","src":"12135:515:17","trueBody":{"id":1995,"nodeType":"Block","src":"12165:150:17","statements":[{"expression":{"arguments":[{"id":1988,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1957,"src":"12268:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1989,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1959,"src":"12275:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1990,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"12281:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1991,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"12285:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1992,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"12297:6:17","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":1987,"name":"_performERC1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4255,"src":"12244:23:17","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":1993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12244:60:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1994,"nodeType":"ExpressionStatement","src":"12244:60:17"}]}}]},"documentation":{"id":1955,"nodeType":"StructuredDocumentation","src":"10667:956:17","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":2011,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC1155","nameLocation":"11637:16:17","nodeType":"FunctionDefinition","parameters":{"id":1970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1957,"mutability":"mutable","name":"token","nameLocation":"11671:5:17","nodeType":"VariableDeclaration","scope":2011,"src":"11663:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1956,"name":"address","nodeType":"ElementaryTypeName","src":"11663:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1959,"mutability":"mutable","name":"from","nameLocation":"11694:4:17","nodeType":"VariableDeclaration","scope":2011,"src":"11686:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1958,"name":"address","nodeType":"ElementaryTypeName","src":"11686:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1961,"mutability":"mutable","name":"to","nameLocation":"11716:2:17","nodeType":"VariableDeclaration","scope":2011,"src":"11708:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1960,"name":"address","nodeType":"ElementaryTypeName","src":"11708:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1963,"mutability":"mutable","name":"identifier","nameLocation":"11736:10:17","nodeType":"VariableDeclaration","scope":2011,"src":"11728:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1962,"name":"uint256","nodeType":"ElementaryTypeName","src":"11728:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1965,"mutability":"mutable","name":"amount","nameLocation":"11764:6:17","nodeType":"VariableDeclaration","scope":2011,"src":"11756:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1964,"name":"uint256","nodeType":"ElementaryTypeName","src":"11756:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1967,"mutability":"mutable","name":"conduitKey","nameLocation":"11788:10:17","nodeType":"VariableDeclaration","scope":2011,"src":"11780:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1966,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11780:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1969,"mutability":"mutable","name":"accumulator","nameLocation":"11821:11:17","nodeType":"VariableDeclaration","scope":2011,"src":"11808:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1968,"name":"bytes","nodeType":"ElementaryTypeName","src":"11808:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11653:185:17"},"returnParameters":{"id":1971,"nodeType":"ParameterList","parameters":[],"src":"11848:0:17"},"scope":2186,"src":"11628:1028:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2034,"nodeType":"Block","src":"13528:337:17","statements":[{"assignments":[2020],"declarations":[{"constant":false,"id":2020,"mutability":"mutable","name":"accumulatorConduitKey","nameLocation":"13612:21:17","nodeType":"VariableDeclaration","scope":2034,"src":"13604:29:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2019,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13604:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2024,"initialValue":{"arguments":[{"id":2022,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"13662:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2021,"name":"_getAccumulatorConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"13636:25:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13636:38:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13604:70:17"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2025,"name":"accumulatorConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"13769:21:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2026,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"13794:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13769:35:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2033,"nodeType":"IfStatement","src":"13765:94:17","trueBody":{"id":2032,"nodeType":"Block","src":"13806:53:17","statements":[{"expression":{"arguments":[{"id":2029,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"13836:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2028,"name":"_triggerIfArmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"13820:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13820:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2031,"nodeType":"ExpressionStatement","src":"13820:28:17"}]}}]},"documentation":{"id":2012,"nodeType":"StructuredDocumentation","src":"12662:740:17","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":2035,"implemented":true,"kind":"function","modifiers":[],"name":"_triggerIfArmedAndNotAccumulatable","nameLocation":"13416:34:17","nodeType":"FunctionDefinition","parameters":{"id":2017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2014,"mutability":"mutable","name":"accumulator","nameLocation":"13473:11:17","nodeType":"VariableDeclaration","scope":2035,"src":"13460:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2013,"name":"bytes","nodeType":"ElementaryTypeName","src":"13460:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2016,"mutability":"mutable","name":"conduitKey","nameLocation":"13502:10:17","nodeType":"VariableDeclaration","scope":2035,"src":"13494:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2015,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13494:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13450:68:17"},"returnParameters":{"id":2018,"nodeType":"ParameterList","parameters":[],"src":"13528:0:17"},"scope":2186,"src":"13407:458:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2059,"nodeType":"Block","src":"14289:377:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2041,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2038,"src":"14354:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14354:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2043,"name":"AccumulatorArmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1462,"src":"14376:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14354:38:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2047,"nodeType":"IfStatement","src":"14350:75:17","trueBody":{"id":2046,"nodeType":"Block","src":"14394:31:17","statements":[{"functionReturnParameters":2040,"id":2045,"nodeType":"Return","src":"14408:7:17"}]}},{"assignments":[2049],"declarations":[{"constant":false,"id":2049,"mutability":"mutable","name":"accumulatorConduitKey","nameLocation":"14509:21:17","nodeType":"VariableDeclaration","scope":2059,"src":"14501:29:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2048,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14501:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2053,"initialValue":{"arguments":[{"id":2051,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2038,"src":"14559:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2050,"name":"_getAccumulatorConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"14533:25:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14533:38:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14501:70:17"},{"expression":{"arguments":[{"id":2055,"name":"accumulatorConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"14624:21:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2056,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2038,"src":"14647:11:17","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":2054,"name":"_trigger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2083,"src":"14615:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,bytes memory)"}},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14615:44:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2058,"nodeType":"ExpressionStatement","src":"14615:44:17"}]},"documentation":{"id":2036,"nodeType":"StructuredDocumentation","src":"13871:353:17","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":2060,"implemented":true,"kind":"function","modifiers":[],"name":"_triggerIfArmed","nameLocation":"14238:15:17","nodeType":"FunctionDefinition","parameters":{"id":2039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2038,"mutability":"mutable","name":"accumulator","nameLocation":"14267:11:17","nodeType":"VariableDeclaration","scope":2060,"src":"14254:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2037,"name":"bytes","nodeType":"ElementaryTypeName","src":"14254:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14253:26:17"},"returnParameters":{"id":2040,"nodeType":"ParameterList","parameters":[],"src":"14289:0:17"},"scope":2186,"src":"14229:437:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2082,"nodeType":"Block","src":"15444:1040:17","statements":[{"assignments":[2069],"declarations":[{"constant":false,"id":2069,"mutability":"mutable","name":"callDataOffset","nameLocation":"15543:14:17","nodeType":"VariableDeclaration","scope":2082,"src":"15535:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2068,"name":"uint256","nodeType":"ElementaryTypeName","src":"15535:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2070,"nodeType":"VariableDeclarationStatement","src":"15535:22:17"},{"assignments":[2072],"declarations":[{"constant":false,"id":2072,"mutability":"mutable","name":"callDataSize","nameLocation":"15575:12:17","nodeType":"VariableDeclaration","scope":2082,"src":"15567:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2071,"name":"uint256","nodeType":"ElementaryTypeName","src":"15567:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2073,"nodeType":"VariableDeclarationStatement","src":"15567:20:17"},{"AST":{"nodeType":"YulBlock","src":"15671:493:17","statements":[{"nodeType":"YulAssignment","src":"15824:44:17","value":{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"15846:11:17"},{"name":"TwoWords","nodeType":"YulIdentifier","src":"15859:8:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15842:3:17"},"nodeType":"YulFunctionCall","src":"15842:26:17"},"variableNames":[{"name":"callDataOffset","nodeType":"YulIdentifier","src":"15824:14:17"}]},{"nodeType":"YulAssignment","src":"15914:240:17","value":{"arguments":[{"name":"Accumulator_array_offset_ptr","nodeType":"YulIdentifier","src":"15951:28:17"},{"arguments":[{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"16032:11:17"},{"name":"Accumulator_array_length_ptr","nodeType":"YulIdentifier","src":"16045:28:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16028:3:17"},"nodeType":"YulFunctionCall","src":"16028:46:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16022:5:17"},"nodeType":"YulFunctionCall","src":"16022:53:17"},{"name":"Conduit_transferItem_size","nodeType":"YulIdentifier","src":"16097:25:17"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15997:3:17"},"nodeType":"YulFunctionCall","src":"15997:143:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15930:3:17"},"nodeType":"YulFunctionCall","src":"15930:224:17"},"variableNames":[{"name":"callDataSize","nodeType":"YulIdentifier","src":"15914:12:17"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1474,"isOffset":false,"isSlot":false,"src":"16045:28:17","valueSize":1},{"declaration":1471,"isOffset":false,"isSlot":false,"src":"15951:28:17","valueSize":1},{"declaration":1483,"isOffset":false,"isSlot":false,"src":"16097:25:17","valueSize":1},{"declaration":1140,"isOffset":false,"isSlot":false,"src":"15859:8:17","valueSize":1},{"declaration":2065,"isOffset":false,"isSlot":false,"src":"15846:11:17","valueSize":1},{"declaration":2065,"isOffset":false,"isSlot":false,"src":"16032:11:17","valueSize":1},{"declaration":2069,"isOffset":false,"isSlot":false,"src":"15824:14:17","valueSize":1},{"declaration":2072,"isOffset":false,"isSlot":false,"src":"15914:12:17","valueSize":1}],"id":2074,"nodeType":"InlineAssembly","src":"15662:502:17"},{"expression":{"arguments":[{"id":2076,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"16280:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2077,"name":"callDataOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2069,"src":"16292:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2078,"name":"callDataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2072,"src":"16308:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2075,"name":"_callConduitUsingOffsets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"16255:24:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256)"}},"id":2079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16255:66:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2080,"nodeType":"ExpressionStatement","src":"16255:66:17"},{"AST":{"nodeType":"YulBlock","src":"16414:64:17","statements":[{"expression":{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"16435:11:17"},{"name":"AccumulatorDisarmed","nodeType":"YulIdentifier","src":"16448:19:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16428:6:17"},"nodeType":"YulFunctionCall","src":"16428:40:17"},"nodeType":"YulExpressionStatement","src":"16428:40:17"}]},"evmVersion":"london","externalReferences":[{"declaration":1459,"isOffset":false,"isSlot":false,"src":"16448:19:17","valueSize":1},{"declaration":2065,"isOffset":false,"isSlot":false,"src":"16435:11:17","valueSize":1}],"id":2081,"nodeType":"InlineAssembly","src":"16405:73:17"}]},"documentation":{"id":2061,"nodeType":"StructuredDocumentation","src":"14672:694:17","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":2083,"implemented":true,"kind":"function","modifiers":[],"name":"_trigger","nameLocation":"15380:8:17","nodeType":"FunctionDefinition","parameters":{"id":2066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2063,"mutability":"mutable","name":"conduitKey","nameLocation":"15397:10:17","nodeType":"VariableDeclaration","scope":2083,"src":"15389:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15389:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2065,"mutability":"mutable","name":"accumulator","nameLocation":"15422:11:17","nodeType":"VariableDeclaration","scope":2083,"src":"15409:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2064,"name":"bytes","nodeType":"ElementaryTypeName","src":"15409:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15388:46:17"},"returnParameters":{"id":2067,"nodeType":"ParameterList","parameters":[],"src":"15444:0:17"},"scope":2186,"src":"15371:1113:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2129,"nodeType":"Block","src":"17293:1216:17","statements":[{"assignments":[2094],"declarations":[{"constant":false,"id":2094,"mutability":"mutable","name":"conduit","nameLocation":"17379:7:17","nodeType":"VariableDeclaration","scope":2129,"src":"17371:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2093,"name":"address","nodeType":"ElementaryTypeName","src":"17371:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2098,"initialValue":{"arguments":[{"id":2096,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"17404:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2095,"name":"_deriveConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"17389:14:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17389:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17371:44:17"},{"assignments":[2100],"declarations":[{"constant":false,"id":2100,"mutability":"mutable","name":"success","nameLocation":"17431:7:17","nodeType":"VariableDeclaration","scope":2129,"src":"17426:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2099,"name":"bool","nodeType":"ElementaryTypeName","src":"17426:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2101,"nodeType":"VariableDeclarationStatement","src":"17426:12:17"},{"assignments":[2103],"declarations":[{"constant":false,"id":2103,"mutability":"mutable","name":"result","nameLocation":"17455:6:17","nodeType":"VariableDeclaration","scope":2129,"src":"17448:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2102,"name":"bytes4","nodeType":"ElementaryTypeName","src":"17448:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2104,"nodeType":"VariableDeclarationStatement","src":"17448:13:17"},{"AST":{"nodeType":"YulBlock","src":"17510:497:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17591:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17594:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17584:6:17"},"nodeType":"YulFunctionCall","src":"17584:12:17"},"nodeType":"YulExpressionStatement","src":"17584:12:17"},{"nodeType":"YulAssignment","src":"17691:202:17","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"17724:3:17"},"nodeType":"YulFunctionCall","src":"17724:5:17"},{"name":"conduit","nodeType":"YulIdentifier","src":"17747:7:17"},{"kind":"number","nodeType":"YulLiteral","src":"17772:1:17","type":"","value":"0"},{"name":"callDataOffset","nodeType":"YulIdentifier","src":"17791:14:17"},{"name":"callDataSize","nodeType":"YulIdentifier","src":"17823:12:17"},{"kind":"number","nodeType":"YulLiteral","src":"17853:1:17","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"17872:7:17"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"17702:4:17"},"nodeType":"YulFunctionCall","src":"17702:191:17"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"17691:7:17"}]},{"nodeType":"YulAssignment","src":"17979:18:17","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17995:1:17","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17989:5:17"},"nodeType":"YulFunctionCall","src":"17989:8:17"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"17979:6:17"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1137,"isOffset":false,"isSlot":false,"src":"17872:7:17","valueSize":1},{"declaration":2088,"isOffset":false,"isSlot":false,"src":"17791:14:17","valueSize":1},{"declaration":2090,"isOffset":false,"isSlot":false,"src":"17823:12:17","valueSize":1},{"declaration":2094,"isOffset":false,"isSlot":false,"src":"17747:7:17","valueSize":1},{"declaration":2103,"isOffset":false,"isSlot":false,"src":"17979:6:17","valueSize":1},{"declaration":2100,"isOffset":false,"isSlot":false,"src":"17691:7:17","valueSize":1}],"id":2105,"nodeType":"InlineAssembly","src":"17501:506:17"},{"condition":{"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18054:8:17","subExpression":{"id":2106,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"18055:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2116,"nodeType":"IfStatement","src":"18050:254:17","trueBody":{"id":2115,"nodeType":"Block","src":"18064:240:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2108,"name":"_revertWithReasonIfOneIsReturned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"18153:32:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18153:34:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2110,"nodeType":"ExpressionStatement","src":"18153:34:17"},{"errorCall":{"arguments":[{"id":2112,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2094,"src":"18285:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2111,"name":"InvalidCallToConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":426,"src":"18264:20:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18264:29:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2114,"nodeType":"RevertStatement","src":"18257:36:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2117,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2103,"src":"18391:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2118,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"18401:16:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ConduitInterface_$343_$","typeString":"type(contract ConduitInterface)"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":310,"src":"18401:24:17","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_array$_t_struct$_ConduitTransfer_$52_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ConduitInterface.execute(struct ConduitTransfer calldata[] calldata) returns (bytes4)"}},"id":2120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"18401:33:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"18391:43:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2128,"nodeType":"IfStatement","src":"18387:116:17","trueBody":{"id":2127,"nodeType":"Block","src":"18436:67:17","statements":[{"errorCall":{"arguments":[{"id":2123,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"18472:10:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2124,"name":"conduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2094,"src":"18484:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2122,"name":"InvalidConduit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":418,"src":"18457:14:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) pure"}},"id":2125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18457:35:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2126,"nodeType":"RevertStatement","src":"18450:42:17"}]}}]},"documentation":{"id":2084,"nodeType":"StructuredDocumentation","src":"16490:659:17","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":2130,"implemented":true,"kind":"function","modifiers":[],"name":"_callConduitUsingOffsets","nameLocation":"17163:24:17","nodeType":"FunctionDefinition","parameters":{"id":2091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2086,"mutability":"mutable","name":"conduitKey","nameLocation":"17205:10:17","nodeType":"VariableDeclaration","scope":2130,"src":"17197:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2085,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17197:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"callDataOffset","nameLocation":"17233:14:17","nodeType":"VariableDeclaration","scope":2130,"src":"17225:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2087,"name":"uint256","nodeType":"ElementaryTypeName","src":"17225:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2090,"mutability":"mutable","name":"callDataSize","nameLocation":"17265:12:17","nodeType":"VariableDeclaration","scope":2130,"src":"17257:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2089,"name":"uint256","nodeType":"ElementaryTypeName","src":"17257:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17187:96:17"},"returnParameters":{"id":2092,"nodeType":"ParameterList","parameters":[],"src":"17293:0:17"},"scope":2186,"src":"17154:1355:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2139,"nodeType":"Block","src":"19070:221:17","statements":[{"AST":{"nodeType":"YulBlock","src":"19155:130:17","statements":[{"nodeType":"YulAssignment","src":"19169:106:17","value":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"19221:11:17"},{"name":"Accumulator_conduitKey_ptr","nodeType":"YulIdentifier","src":"19234:26:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19217:3:17"},"nodeType":"YulFunctionCall","src":"19217:44:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19194:5:17"},"nodeType":"YulFunctionCall","src":"19194:81:17"},"variableNames":[{"name":"accumulatorConduitKey","nodeType":"YulIdentifier","src":"19169:21:17"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1465,"isOffset":false,"isSlot":false,"src":"19234:26:17","valueSize":1},{"declaration":2133,"isOffset":false,"isSlot":false,"src":"19221:11:17","valueSize":1},{"declaration":2136,"isOffset":false,"isSlot":false,"src":"19169:21:17","valueSize":1}],"id":2138,"nodeType":"InlineAssembly","src":"19146:139:17"}]},"documentation":{"id":2131,"nodeType":"StructuredDocumentation","src":"18515:407:17","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":2140,"implemented":true,"kind":"function","modifiers":[],"name":"_getAccumulatorConduitKey","nameLocation":"18936:25:17","nodeType":"FunctionDefinition","parameters":{"id":2134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2133,"mutability":"mutable","name":"accumulator","nameLocation":"18975:11:17","nodeType":"VariableDeclaration","scope":2140,"src":"18962:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2132,"name":"bytes","nodeType":"ElementaryTypeName","src":"18962:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18961:26:17"},"returnParameters":{"id":2137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2136,"mutability":"mutable","name":"accumulatorConduitKey","nameLocation":"19043:21:17","nodeType":"VariableDeclaration","scope":2140,"src":"19035:29:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2135,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19035:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19034:31:17"},"scope":2186,"src":"18927:364:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2184,"nodeType":"Block","src":"20537:1904:17","statements":[{"assignments":[2162],"declarations":[{"constant":false,"id":2162,"mutability":"mutable","name":"elements","nameLocation":"20555:8:17","nodeType":"VariableDeclaration","scope":2184,"src":"20547:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2161,"name":"uint256","nodeType":"ElementaryTypeName","src":"20547:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2163,"nodeType":"VariableDeclarationStatement","src":"20547:16:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2164,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2145,"src":"20721:11:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"20721:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2166,"name":"AccumulatorDisarmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1459,"src":"20743:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20721:41:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2181,"nodeType":"Block","src":"21383:343:17","statements":[{"AST":{"nodeType":"YulBlock","src":"21472:244:17","statements":[{"nodeType":"YulAssignment","src":"21490:131:17","value":{"arguments":[{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21537:11:17"},{"name":"Accumulator_array_length_ptr","nodeType":"YulIdentifier","src":"21550:28:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21533:3:17"},"nodeType":"YulFunctionCall","src":"21533:46:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21527:5:17"},"nodeType":"YulFunctionCall","src":"21527:53:17"},{"kind":"number","nodeType":"YulLiteral","src":"21602:1:17","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21502:3:17"},"nodeType":"YulFunctionCall","src":"21502:119:17"},"variableNames":[{"name":"elements","nodeType":"YulIdentifier","src":"21490:8:17"}]},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21649:11:17"},{"name":"Accumulator_array_length_ptr","nodeType":"YulIdentifier","src":"21662:28:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21645:3:17"},"nodeType":"YulFunctionCall","src":"21645:46:17"},{"name":"elements","nodeType":"YulIdentifier","src":"21693:8:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21638:6:17"},"nodeType":"YulFunctionCall","src":"21638:64:17"},"nodeType":"YulExpressionStatement","src":"21638:64:17"}]},"evmVersion":"london","externalReferences":[{"declaration":1474,"isOffset":false,"isSlot":false,"src":"21550:28:17","valueSize":1},{"declaration":1474,"isOffset":false,"isSlot":false,"src":"21662:28:17","valueSize":1},{"declaration":2145,"isOffset":false,"isSlot":false,"src":"21537:11:17","valueSize":1},{"declaration":2145,"isOffset":false,"isSlot":false,"src":"21649:11:17","valueSize":1},{"declaration":2162,"isOffset":false,"isSlot":false,"src":"21490:8:17","valueSize":1},{"declaration":2162,"isOffset":false,"isSlot":false,"src":"21693:8:17","valueSize":1}],"id":2180,"nodeType":"InlineAssembly","src":"21463:253:17"}]},"id":2182,"nodeType":"IfStatement","src":"20717:1009:17","trueBody":{"id":2179,"nodeType":"Block","src":"20764:613:17","statements":[{"expression":{"id":2170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2168,"name":"elements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"20778:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20789:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20778:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2171,"nodeType":"ExpressionStatement","src":"20778:12:17"},{"assignments":[2173],"declarations":[{"constant":false,"id":2173,"mutability":"mutable","name":"selector","nameLocation":"20811:8:17","nodeType":"VariableDeclaration","scope":2179,"src":"20804:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2172,"name":"bytes4","nodeType":"ElementaryTypeName","src":"20804:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2177,"initialValue":{"expression":{"expression":{"id":2174,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"20822:16:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ConduitInterface_$343_$","typeString":"type(contract ConduitInterface)"}},"id":2175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":310,"src":"20822:24:17","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_array$_t_struct$_ConduitTransfer_$52_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes4_$","typeString":"function ConduitInterface.execute(struct ConduitTransfer calldata[] calldata) returns (bytes4)"}},"id":2176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"20822:33:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"20804:51:17"},{"AST":{"nodeType":"YulBlock","src":"20878:489:17","statements":[{"expression":{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"20903:11:17"},{"name":"AccumulatorArmed","nodeType":"YulIdentifier","src":"20916:16:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20896:6:17"},"nodeType":"YulFunctionCall","src":"20896:37:17"},"nodeType":"YulExpressionStatement","src":"20896:37:17"},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"20987:11:17"},{"name":"Accumulator_conduitKey_ptr","nodeType":"YulIdentifier","src":"21000:26:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20983:3:17"},"nodeType":"YulFunctionCall","src":"20983:44:17"},{"name":"conduitKey","nodeType":"YulIdentifier","src":"21029:10:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20976:6:17"},"nodeType":"YulFunctionCall","src":"20976:64:17"},"nodeType":"YulExpressionStatement","src":"20976:64:17"},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21068:11:17"},{"name":"Accumulator_selector_ptr","nodeType":"YulIdentifier","src":"21081:24:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21064:3:17"},"nodeType":"YulFunctionCall","src":"21064:42:17"},{"name":"selector","nodeType":"YulIdentifier","src":"21108:8:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21057:6:17"},"nodeType":"YulFunctionCall","src":"21057:60:17"},"nodeType":"YulExpressionStatement","src":"21057:60:17"},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21166:11:17"},{"name":"Accumulator_array_offset_ptr","nodeType":"YulIdentifier","src":"21179:28:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21162:3:17"},"nodeType":"YulFunctionCall","src":"21162:46:17"},{"name":"Accumulator_array_offset","nodeType":"YulIdentifier","src":"21230:24:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21134:6:17"},"nodeType":"YulFunctionCall","src":"21134:138:17"},"nodeType":"YulExpressionStatement","src":"21134:138:17"},{"expression":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21300:11:17"},{"name":"Accumulator_array_length_ptr","nodeType":"YulIdentifier","src":"21313:28:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21296:3:17"},"nodeType":"YulFunctionCall","src":"21296:46:17"},{"name":"elements","nodeType":"YulIdentifier","src":"21344:8:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21289:6:17"},"nodeType":"YulFunctionCall","src":"21289:64:17"},"nodeType":"YulExpressionStatement","src":"21289:64:17"}]},"evmVersion":"london","externalReferences":[{"declaration":1462,"isOffset":false,"isSlot":false,"src":"20916:16:17","valueSize":1},{"declaration":1474,"isOffset":false,"isSlot":false,"src":"21313:28:17","valueSize":1},{"declaration":1480,"isOffset":false,"isSlot":false,"src":"21230:24:17","valueSize":1},{"declaration":1471,"isOffset":false,"isSlot":false,"src":"21179:28:17","valueSize":1},{"declaration":1465,"isOffset":false,"isSlot":false,"src":"21000:26:17","valueSize":1},{"declaration":1468,"isOffset":false,"isSlot":false,"src":"21081:24:17","valueSize":1},{"declaration":2145,"isOffset":false,"isSlot":false,"src":"20903:11:17","valueSize":1},{"declaration":2145,"isOffset":false,"isSlot":false,"src":"20987:11:17","valueSize":1},{"declaration":2145,"isOffset":false,"isSlot":false,"src":"21068:11:17","valueSize":1},{"declaration":2145,"isOffset":false,"isSlot":false,"src":"21166:11:17","valueSize":1},{"declaration":2145,"isOffset":false,"isSlot":false,"src":"21300:11:17","valueSize":1},{"declaration":2143,"isOffset":false,"isSlot":false,"src":"21029:10:17","valueSize":1},{"declaration":2162,"isOffset":false,"isSlot":false,"src":"21344:8:17","valueSize":1},{"declaration":2173,"isOffset":false,"isSlot":false,"src":"21108:8:17","valueSize":1}],"id":2178,"nodeType":"InlineAssembly","src":"20869:498:17"}]}},{"AST":{"nodeType":"YulBlock","src":"21773:662:17","statements":[{"nodeType":"YulVariableDeclaration","src":"21787:166:17","value":{"arguments":[{"arguments":[{"name":"accumulator","nodeType":"YulIdentifier","src":"21831:11:17"},{"arguments":[{"name":"elements","nodeType":"YulIdentifier","src":"21848:8:17"},{"name":"Conduit_transferItem_size","nodeType":"YulIdentifier","src":"21858:25:17"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"21844:3:17"},"nodeType":"YulFunctionCall","src":"21844:40:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21827:3:17"},"nodeType":"YulFunctionCall","src":"21827:58:17"},{"name":"Accumulator_itemSizeOffsetDifference","nodeType":"YulIdentifier","src":"21903:36:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21806:3:17"},"nodeType":"YulFunctionCall","src":"21806:147:17"},"variables":[{"name":"itemPointer","nodeType":"YulTypedName","src":"21791:11:17","type":""}]},{"expression":{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"21973:11:17"},{"name":"itemType","nodeType":"YulIdentifier","src":"21986:8:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21966:6:17"},"nodeType":"YulFunctionCall","src":"21966:29:17"},"nodeType":"YulExpressionStatement","src":"21966:29:17"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22019:11:17"},{"name":"Conduit_transferItem_token_ptr","nodeType":"YulIdentifier","src":"22032:30:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22015:3:17"},"nodeType":"YulFunctionCall","src":"22015:48:17"},{"name":"token","nodeType":"YulIdentifier","src":"22065:5:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22008:6:17"},"nodeType":"YulFunctionCall","src":"22008:63:17"},"nodeType":"YulExpressionStatement","src":"22008:63:17"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22095:11:17"},{"name":"Conduit_transferItem_from_ptr","nodeType":"YulIdentifier","src":"22108:29:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22091:3:17"},"nodeType":"YulFunctionCall","src":"22091:47:17"},{"name":"from","nodeType":"YulIdentifier","src":"22140:4:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22084:6:17"},"nodeType":"YulFunctionCall","src":"22084:61:17"},"nodeType":"YulExpressionStatement","src":"22084:61:17"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22169:11:17"},{"name":"Conduit_transferItem_to_ptr","nodeType":"YulIdentifier","src":"22182:27:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22165:3:17"},"nodeType":"YulFunctionCall","src":"22165:45:17"},{"name":"to","nodeType":"YulIdentifier","src":"22212:2:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22158:6:17"},"nodeType":"YulFunctionCall","src":"22158:57:17"},"nodeType":"YulExpressionStatement","src":"22158:57:17"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22256:11:17"},{"name":"Conduit_transferItem_identifier_ptr","nodeType":"YulIdentifier","src":"22269:35:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22252:3:17"},"nodeType":"YulFunctionCall","src":"22252:53:17"},{"name":"identifier","nodeType":"YulIdentifier","src":"22323:10:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22228:6:17"},"nodeType":"YulFunctionCall","src":"22228:119:17"},"nodeType":"YulExpressionStatement","src":"22228:119:17"},{"expression":{"arguments":[{"arguments":[{"name":"itemPointer","nodeType":"YulIdentifier","src":"22371:11:17"},{"name":"Conduit_transferItem_amount_ptr","nodeType":"YulIdentifier","src":"22384:31:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22367:3:17"},"nodeType":"YulFunctionCall","src":"22367:49:17"},{"name":"amount","nodeType":"YulIdentifier","src":"22418:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22360:6:17"},"nodeType":"YulFunctionCall","src":"22360:65:17"},"nodeType":"YulExpressionStatement","src":"22360:65:17"}]},"evmVersion":"london","externalReferences":[{"declaration":1477,"isOffset":false,"isSlot":false,"src":"21903:36:17","valueSize":1},{"declaration":1498,"isOffset":false,"isSlot":false,"src":"22384:31:17","valueSize":1},{"declaration":1489,"isOffset":false,"isSlot":false,"src":"22108:29:17","valueSize":1},{"declaration":1495,"isOffset":false,"isSlot":false,"src":"22269:35:17","valueSize":1},{"declaration":1483,"isOffset":false,"isSlot":false,"src":"21858:25:17","valueSize":1},{"declaration":1492,"isOffset":false,"isSlot":false,"src":"22182:27:17","valueSize":1},{"declaration":1486,"isOffset":false,"isSlot":false,"src":"22032:30:17","valueSize":1},{"declaration":2145,"isOffset":false,"isSlot":false,"src":"21831:11:17","valueSize":1},{"declaration":2158,"isOffset":false,"isSlot":false,"src":"22418:6:17","valueSize":1},{"declaration":2162,"isOffset":false,"isSlot":false,"src":"21848:8:17","valueSize":1},{"declaration":2152,"isOffset":false,"isSlot":false,"src":"22140:4:17","valueSize":1},{"declaration":2156,"isOffset":false,"isSlot":false,"src":"22323:10:17","valueSize":1},{"declaration":2148,"isOffset":false,"isSlot":false,"src":"21986:8:17","valueSize":1},{"declaration":2154,"isOffset":false,"isSlot":false,"src":"22212:2:17","valueSize":1},{"declaration":2150,"isOffset":false,"isSlot":false,"src":"22065:5:17","valueSize":1}],"id":2183,"nodeType":"InlineAssembly","src":"21764:671:17"}]},"documentation":{"id":2141,"nodeType":"StructuredDocumentation","src":"19297:985:17","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":2185,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"20296:7:17","nodeType":"FunctionDefinition","parameters":{"id":2159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2143,"mutability":"mutable","name":"conduitKey","nameLocation":"20321:10:17","nodeType":"VariableDeclaration","scope":2185,"src":"20313:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2142,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20313:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2145,"mutability":"mutable","name":"accumulator","nameLocation":"20354:11:17","nodeType":"VariableDeclaration","scope":2185,"src":"20341:24:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2144,"name":"bytes","nodeType":"ElementaryTypeName","src":"20341:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2148,"mutability":"mutable","name":"itemType","nameLocation":"20391:8:17","nodeType":"VariableDeclaration","scope":2185,"src":"20375:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$34","typeString":"enum ConduitItemType"},"typeName":{"id":2147,"nodeType":"UserDefinedTypeName","pathNode":{"id":2146,"name":"ConduitItemType","nodeType":"IdentifierPath","referencedDeclaration":34,"src":"20375:15:17"},"referencedDeclaration":34,"src":"20375:15:17","typeDescriptions":{"typeIdentifier":"t_enum$_ConduitItemType_$34","typeString":"enum ConduitItemType"}},"visibility":"internal"},{"constant":false,"id":2150,"mutability":"mutable","name":"token","nameLocation":"20417:5:17","nodeType":"VariableDeclaration","scope":2185,"src":"20409:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2149,"name":"address","nodeType":"ElementaryTypeName","src":"20409:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2152,"mutability":"mutable","name":"from","nameLocation":"20440:4:17","nodeType":"VariableDeclaration","scope":2185,"src":"20432:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2151,"name":"address","nodeType":"ElementaryTypeName","src":"20432:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2154,"mutability":"mutable","name":"to","nameLocation":"20462:2:17","nodeType":"VariableDeclaration","scope":2185,"src":"20454:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2153,"name":"address","nodeType":"ElementaryTypeName","src":"20454:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2156,"mutability":"mutable","name":"identifier","nameLocation":"20482:10:17","nodeType":"VariableDeclaration","scope":2185,"src":"20474:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2155,"name":"uint256","nodeType":"ElementaryTypeName","src":"20474:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2158,"mutability":"mutable","name":"amount","nameLocation":"20510:6:17","nodeType":"VariableDeclaration","scope":2185,"src":"20502:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2157,"name":"uint256","nodeType":"ElementaryTypeName","src":"20502:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20303:219:17"},"returnParameters":{"id":2160,"nodeType":"ParameterList","parameters":[],"src":"20537:0:17"},"scope":2186,"src":"20287:2154:17","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2187,"src":"584:21859:17","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496,515,524,527,530,533,540,543,546,559,574,585,590,593]}],"src":"32:22412:17"},"id":17},"contracts/lib/GettersAndDerivers.sol":{"ast":{"absolutePath":"contracts/lib/GettersAndDerivers.sol","exportedSymbols":{"AccumulatorArmed":[1462],"AccumulatorDisarmed":[1459],"Accumulator_array_length_ptr":[1474],"Accumulator_array_offset":[1480],"Accumulator_array_offset_ptr":[1471],"Accumulator_conduitKey_ptr":[1465],"Accumulator_itemSizeOffsetDifference":[1477],"Accumulator_selector_ptr":[1468],"AdditionalRecipients_size":[1179],"AdvancedOrder_numerator_offset":[1131],"AlmostOneWord":[1134],"BadContractSignature_error_length":[1545],"BadContractSignature_error_signature":[1542],"BadSignatureV_error_length":[1524],"BadSignatureV_error_offset":[1521],"BadSignatureV_error_signature":[1518],"BasicOrder_additionalRecipients_data_cdPtr":[1270],"BasicOrder_additionalRecipients_head_cdPtr":[1261],"BasicOrder_additionalRecipients_head_ptr":[1330],"BasicOrder_additionalRecipients_length_cdPtr":[1267],"BasicOrder_basicOrderType_cdPtr":[1246],"BasicOrder_basicOrderType_range":[1276],"BasicOrder_common_params_size":[1170],"BasicOrder_considerationAmount_cdPtr":[1231],"BasicOrder_considerationHashesArray_ptr":[1173],"BasicOrder_considerationItem_endAmount_ptr":[1294],"BasicOrder_considerationItem_identifier_ptr":[1288],"BasicOrder_considerationItem_itemType_ptr":[1282],"BasicOrder_considerationItem_startAmount_ptr":[1291],"BasicOrder_considerationItem_token_ptr":[1285],"BasicOrder_considerationItem_typeHash_ptr":[1279],"BasicOrder_considerationToken_cdPtr":[1228],"BasicOrder_endAmount_cdPtr":[1167],"BasicOrder_fulfillerConduit_cdPtr":[1255],"BasicOrder_offerAmount_cdPtr":[1243],"BasicOrder_offerItem_endAmount_ptr":[1306],"BasicOrder_offerItem_itemType_ptr":[1300],"BasicOrder_offerItem_token_ptr":[1303],"BasicOrder_offerItem_typeHash_ptr":[1297],"BasicOrder_offerToken_cdPtr":[1240],"BasicOrder_offererConduit_cdPtr":[1252],"BasicOrder_offerer_cdPtr":[1234],"BasicOrder_order_considerationHashes_ptr":[1318],"BasicOrder_order_counter_ptr":[1327],"BasicOrder_order_offerHashes_ptr":[1315],"BasicOrder_order_offerer_ptr":[1312],"BasicOrder_order_orderType_ptr":[1321],"BasicOrder_order_startTime_ptr":[1324],"BasicOrder_order_typeHash_ptr":[1309],"BasicOrder_parameters_cdPtr":[1225],"BasicOrder_parameters_ptr":[1273],"BasicOrder_signature_cdPtr":[1264],"BasicOrder_signature_ptr":[1333],"BasicOrder_startTime_cdPtr":[1249],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[1258],"BasicOrder_zone_cdPtr":[1237],"Common_amount_offset":[1062],"Common_identifier_offset":[1059],"Common_token_offset":[1056],"Conduit_execute_ConduitTransfer_length":[1429],"Conduit_execute_ConduitTransfer_length_ptr":[1435],"Conduit_execute_ConduitTransfer_offset_ptr":[1432],"Conduit_execute_ConduitTransfer_ptr":[1426],"Conduit_execute_signature":[1417],"Conduit_execute_transferAmount_ptr":[1453],"Conduit_execute_transferFrom_ptr":[1444],"Conduit_execute_transferIdentifier_ptr":[1450],"Conduit_execute_transferItemType_ptr":[1438],"Conduit_execute_transferTo_ptr":[1447],"Conduit_execute_transferToken_ptr":[1441],"Conduit_transferItem_amount_ptr":[1498],"Conduit_transferItem_from_ptr":[1489],"Conduit_transferItem_identifier_ptr":[1495],"Conduit_transferItem_size":[1483],"Conduit_transferItem_to_ptr":[1492],"Conduit_transferItem_token_ptr":[1486],"ConsiderItem_recipient_offset":[1080],"ConsiderationBase":[1030],"ConsiderationItem_recipient_offset":[1077],"CostPerWord":[1392],"Create2AddressDerivation_length":[1401],"Create2AddressDerivation_ptr":[1398],"DefaultFreeMemoryPointer":[1158],"ECDSA_MaxLength":[1344],"ECDSA_signature_s_offset":[1347],"ECDSA_signature_v_offset":[1350],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[1341],"EIP1271_isValidSignature_calldata_baseLength":[1366],"EIP1271_isValidSignature_digest_negativeOffset":[1360],"EIP1271_isValidSignature_selector":[1354],"EIP1271_isValidSignature_selector_negativeOffset":[1363],"EIP1271_isValidSignature_signatureHead_negativeOffset":[1357],"EIP1271_isValidSignature_signature_head_offset":[1369],"EIP2098_allButHighestBitMask":[1337],"EIP712_DigestPayload_size":[1188],"EIP712_DomainSeparator_offset":[1182],"EIP712_OrderHash_offset":[1185],"EIP712_Order_size":[1176],"EIP_712_PREFIX":[1386],"Ecrecover_args_size":[1511],"Ecrecover_precompile":[1508],"Execution_conduit_offset":[1086],"Execution_offerer_offset":[1083],"ExtraGasBuffer":[1389],"FiveWords":[1149],"FourWords":[1146],"FreeMemoryPointerSlot":[1152],"Fulfillment_itemIndex_offset":[1128],"GettersAndDerivers":[2300],"InexactFraction_error_len":[1505],"InexactFraction_error_signature":[1502],"InvalidFulfillmentComponentData_error_len":[1093],"InvalidFulfillmentComponentData_error_signature":[1090],"InvalidSignature_error_length":[1538],"InvalidSignature_error_signature":[1535],"InvalidSigner_error_length":[1531],"InvalidSigner_error_signature":[1528],"MaskOverByteTwelve":[1405],"MaskOverFirstFourBytes":[1413],"MaskOverLastTwentyBytes":[1409],"MaxUint120":[1423],"MaxUint8":[1420],"MemoryExpansionCoefficient":[1395],"MissingItemAmount_error_len":[1113],"MissingItemAmount_error_signature":[1110],"NameLengthPtr":[1035],"NameWithLength":[1038],"NoContract_error_length":[1382],"NoContract_error_sig_ptr":[1376],"NoContract_error_signature":[1373],"NoContract_error_token_ptr":[1379],"NonMatchSelector_MagicModulus":[1551],"NonMatchSelector_MagicRemainder":[1554],"NumBitsAfterSelector":[1548],"OneConduitExecute_size":[1456],"OneWord":[1137],"OrderFulfilled_baseOffset":[1201],"OrderFulfilled_baseSize":[1194],"OrderFulfilled_consideration_body_offset":[1222],"OrderFulfilled_consideration_head_offset":[1219],"OrderFulfilled_consideration_length_baseOffset":[1204],"OrderFulfilled_fulfiller_offset":[1210],"OrderFulfilled_offer_body_offset":[1216],"OrderFulfilled_offer_head_offset":[1213],"OrderFulfilled_offer_length_baseOffset":[1207],"OrderFulfilled_selector":[1198],"OrderParameters":[1635],"OrderParameters_conduit_offset":[1122],"OrderParameters_consideration_head_offset":[1119],"OrderParameters_counter_offset":[1125],"OrderParameters_offer_head_offset":[1116],"Panic_arithmetic":[1106],"Panic_error_length":[1103],"Panic_error_offset":[1100],"Panic_error_signature":[1097],"ReceivedItem_CommonParams_size":[1074],"ReceivedItem_amount_offset":[1068],"ReceivedItem_recipient_offset":[1071],"ReceivedItem_size":[1065],"Signature_lower_v":[1514],"Slot0x80":[1161],"Slot0xA0":[1164],"ThreeWords":[1143],"TwoWords":[1140],"Version":[1041],"Version_length":[1044],"Version_shift":[1047],"ZeroSlot":[1155],"_ENTERED":[1053],"_NOT_ENTERED":[1050],"receivedItemsHash_ptr":[1191]},"id":2301,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2188,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:18"},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":2190,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2301,"sourceUnit":1659,"src":"58:61:18","symbolAliases":[{"foreign":{"id":2189,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"67:15:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationBase.sol","file":"./ConsiderationBase.sol","id":2192,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2301,"sourceUnit":1031,"src":"121:60:18","symbolAliases":[{"foreign":{"id":2191,"name":"ConsiderationBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"130:17:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":2193,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2301,"sourceUnit":1555,"src":"183:38:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2194,"name":"ConsiderationBase","nodeType":"IdentifierPath","referencedDeclaration":1030,"src":"254:17:18"},"id":2195,"nodeType":"InheritanceSpecifier","src":"254:17:18"}],"canonicalName":"GettersAndDerivers","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":2300,"linearizedBaseContracts":[2300,1030],"name":"GettersAndDerivers","nameLocation":"232:18:18","nodeType":"ContractDefinition","nodes":[{"body":{"id":2203,"nodeType":"Block","src":"367:2:18","statements":[]},"id":2204,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2200,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2197,"src":"344:17:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2201,"kind":"baseConstructorSpecifier","modifierName":{"id":2199,"name":"ConsiderationBase","nodeType":"IdentifierPath","referencedDeclaration":1030,"src":"326:17:18"},"nodeType":"ModifierInvocation","src":"326:36:18"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2197,"mutability":"mutable","name":"conduitController","nameLocation":"299:17:18","nodeType":"VariableDeclaration","scope":2204,"src":"291:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2196,"name":"address","nodeType":"ElementaryTypeName","src":"291:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"290:27:18"},"returnParameters":{"id":2202,"nodeType":"ParameterList","parameters":[],"src":"367:0:18"},"scope":2300,"src":"279:90:18","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2219,"nodeType":"Block","src":"522:626:18","statements":[{"assignments":[2215],"declarations":[{"constant":false,"id":2215,"mutability":"mutable","name":"typeHash","nameLocation":"540:8:18","nodeType":"VariableDeclaration","scope":2219,"src":"532:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2214,"name":"bytes32","nodeType":"ElementaryTypeName","src":"532:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2217,"initialValue":{"id":2216,"name":"_ORDER_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"551:15:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"532:34:18"},{"AST":{"nodeType":"YulBlock","src":"586:556:18","statements":[{"nodeType":"YulVariableDeclaration","src":"600:48:18","value":{"arguments":[{"name":"orderParameters","nodeType":"YulIdentifier","src":"623:15:18"},{"name":"OneWord","nodeType":"YulIdentifier","src":"640:7:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"619:3:18"},"nodeType":"YulFunctionCall","src":"619:29:18"},"variables":[{"name":"typeHashPtr","nodeType":"YulTypedName","src":"604:11:18","type":""}]},{"nodeType":"YulVariableDeclaration","src":"662:39:18","value":{"arguments":[{"name":"typeHashPtr","nodeType":"YulIdentifier","src":"689:11:18"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"683:5:18"},"nodeType":"YulFunctionCall","src":"683:18:18"},"variables":[{"name":"previousValue","nodeType":"YulTypedName","src":"666:13:18","type":""}]},{"expression":{"arguments":[{"name":"typeHashPtr","nodeType":"YulIdentifier","src":"722:11:18"},{"name":"typeHash","nodeType":"YulIdentifier","src":"735:8:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"715:6:18"},"nodeType":"YulFunctionCall","src":"715:29:18"},"nodeType":"YulExpressionStatement","src":"715:29:18"},{"nodeType":"YulVariableDeclaration","src":"758:116:18","value":{"arguments":[{"name":"orderParameters","nodeType":"YulIdentifier","src":"797:15:18"},{"name":"OrderParameters_counter_offset","nodeType":"YulIdentifier","src":"830:30:18"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"776:3:18"},"nodeType":"YulFunctionCall","src":"776:98:18"},"variables":[{"name":"counterPtr","nodeType":"YulTypedName","src":"762:10:18","type":""}]},{"nodeType":"YulVariableDeclaration","src":"888:39:18","value":{"arguments":[{"name":"counterPtr","nodeType":"YulIdentifier","src":"916:10:18"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"910:5:18"},"nodeType":"YulFunctionCall","src":"910:17:18"},"variables":[{"name":"counterDataPtr","nodeType":"YulTypedName","src":"892:14:18","type":""}]},{"expression":{"arguments":[{"name":"counterPtr","nodeType":"YulIdentifier","src":"948:10:18"},{"name":"counter","nodeType":"YulIdentifier","src":"960:7:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"941:6:18"},"nodeType":"YulFunctionCall","src":"941:27:18"},"nodeType":"YulExpressionStatement","src":"941:27:18"},{"nodeType":"YulAssignment","src":"982:54:18","value":{"arguments":[{"name":"typeHashPtr","nodeType":"YulIdentifier","src":"1005:11:18"},{"name":"EIP712_Order_size","nodeType":"YulIdentifier","src":"1018:17:18"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"995:9:18"},"nodeType":"YulFunctionCall","src":"995:41:18"},"variableNames":[{"name":"orderHash","nodeType":"YulIdentifier","src":"982:9:18"}]},{"expression":{"arguments":[{"name":"typeHashPtr","nodeType":"YulIdentifier","src":"1057:11:18"},{"name":"previousValue","nodeType":"YulIdentifier","src":"1070:13:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1050:6:18"},"nodeType":"YulFunctionCall","src":"1050:34:18"},"nodeType":"YulExpressionStatement","src":"1050:34:18"},{"expression":{"arguments":[{"name":"counterPtr","nodeType":"YulIdentifier","src":"1105:10:18"},{"name":"counterDataPtr","nodeType":"YulIdentifier","src":"1117:14:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1098:6:18"},"nodeType":"YulFunctionCall","src":"1098:34:18"},"nodeType":"YulExpressionStatement","src":"1098:34:18"}]},"evmVersion":"london","externalReferences":[{"declaration":1176,"isOffset":false,"isSlot":false,"src":"1018:17:18","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"640:7:18","valueSize":1},{"declaration":1125,"isOffset":false,"isSlot":false,"src":"830:30:18","valueSize":1},{"declaration":2209,"isOffset":false,"isSlot":false,"src":"960:7:18","valueSize":1},{"declaration":2212,"isOffset":false,"isSlot":false,"src":"982:9:18","valueSize":1},{"declaration":2207,"isOffset":false,"isSlot":false,"src":"623:15:18","valueSize":1},{"declaration":2207,"isOffset":false,"isSlot":false,"src":"797:15:18","valueSize":1},{"declaration":2215,"isOffset":false,"isSlot":false,"src":"735:8:18","valueSize":1}],"id":2218,"nodeType":"InlineAssembly","src":"577:565:18"}]},"id":2220,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveOrderHash","nameLocation":"384:16:18","nodeType":"FunctionDefinition","parameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"orderParameters","nameLocation":"433:15:18","nodeType":"VariableDeclaration","scope":2220,"src":"410:38:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_memory_ptr","typeString":"struct OrderParameters"},"typeName":{"id":2206,"nodeType":"UserDefinedTypeName","pathNode":{"id":2205,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"410:15:18"},"referencedDeclaration":1635,"src":"410:15:18","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"counter","nameLocation":"466:7:18","nodeType":"VariableDeclaration","scope":2220,"src":"458:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2208,"name":"uint256","nodeType":"ElementaryTypeName","src":"458:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"400:79:18"},"returnParameters":{"id":2213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2212,"mutability":"mutable","name":"orderHash","nameLocation":"511:9:18","nodeType":"VariableDeclaration","scope":2220,"src":"503:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2211,"name":"bytes32","nodeType":"ElementaryTypeName","src":"503:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"502:19:18"},"scope":2300,"src":"375:773:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2239,"nodeType":"Block","src":"1266:1697:18","statements":[{"assignments":[2228],"declarations":[{"constant":false,"id":2228,"mutability":"mutable","name":"conduitController","nameLocation":"1364:17:18","nodeType":"VariableDeclaration","scope":2239,"src":"1356:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2227,"name":"address","nodeType":"ElementaryTypeName","src":"1356:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2233,"initialValue":{"arguments":[{"id":2231,"name":"_CONDUIT_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"1392:19:18","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}],"id":2230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1384:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2229,"name":"address","nodeType":"ElementaryTypeName","src":"1384:7:18","typeDescriptions":{}}},"id":2232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1384:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1356:56:18"},{"assignments":[2235],"declarations":[{"constant":false,"id":2235,"mutability":"mutable","name":"conduitCreationCodeHash","nameLocation":"1511:23:18","nodeType":"VariableDeclaration","scope":2239,"src":"1503:31:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2234,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1503:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2237,"initialValue":{"id":2236,"name":"_CONDUIT_CREATION_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"1537:27:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1503:61:18"},{"AST":{"nodeType":"YulBlock","src":"1648:1309:18","statements":[{"nodeType":"YulVariableDeclaration","src":"1743:53:18","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"1774:21:18"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1768:5:18"},"nodeType":"YulFunctionCall","src":"1768:28:18"},"variables":[{"name":"freeMemoryPointer","nodeType":"YulTypedName","src":"1747:17:18","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1977:1:18","type":"","value":"0"},{"arguments":[{"name":"MaskOverByteTwelve","nodeType":"YulIdentifier","src":"1983:18:18"},{"name":"conduitController","nodeType":"YulIdentifier","src":"2003:17:18"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1980:2:18"},"nodeType":"YulFunctionCall","src":"1980:41:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1970:6:18"},"nodeType":"YulFunctionCall","src":"1970:52:18"},"nodeType":"YulExpressionStatement","src":"1970:52:18"},{"expression":{"arguments":[{"name":"OneWord","nodeType":"YulIdentifier","src":"2117:7:18"},{"name":"conduitKey","nodeType":"YulIdentifier","src":"2126:10:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2110:6:18"},"nodeType":"YulFunctionCall","src":"2110:27:18"},"nodeType":"YulExpressionStatement","src":"2110:27:18"},{"expression":{"arguments":[{"name":"TwoWords","nodeType":"YulIdentifier","src":"2239:8:18"},{"name":"conduitCreationCodeHash","nodeType":"YulIdentifier","src":"2249:23:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2232:6:18"},"nodeType":"YulFunctionCall","src":"2232:41:18"},"nodeType":"YulExpressionStatement","src":"2232:41:18"},{"nodeType":"YulAssignment","src":"2368:469:18","value":{"arguments":[{"arguments":[{"name":"Create2AddressDerivation_ptr","nodeType":"YulIdentifier","src":"2539:28:18"},{"name":"Create2AddressDerivation_length","nodeType":"YulIdentifier","src":"2660:31:18"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2445:9:18"},"nodeType":"YulFunctionCall","src":"2445:264:18"},{"name":"MaskOverLastTwentyBytes","nodeType":"YulIdentifier","src":"2800:23:18"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2379:3:18"},"nodeType":"YulFunctionCall","src":"2379:458:18"},"variableNames":[{"name":"conduit","nodeType":"YulIdentifier","src":"2368:7:18"}]},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"2906:21:18"},{"name":"freeMemoryPointer","nodeType":"YulIdentifier","src":"2929:17:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2899:6:18"},"nodeType":"YulFunctionCall","src":"2899:48:18"},"nodeType":"YulExpressionStatement","src":"2899:48:18"}]},"evmVersion":"london","externalReferences":[{"declaration":1401,"isOffset":false,"isSlot":false,"src":"2660:31:18","valueSize":1},{"declaration":1398,"isOffset":false,"isSlot":false,"src":"2539:28:18","valueSize":1},{"declaration":1152,"isOffset":false,"isSlot":false,"src":"1774:21:18","valueSize":1},{"declaration":1152,"isOffset":false,"isSlot":false,"src":"2906:21:18","valueSize":1},{"declaration":1405,"isOffset":false,"isSlot":false,"src":"1983:18:18","valueSize":1},{"declaration":1409,"isOffset":false,"isSlot":false,"src":"2800:23:18","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"2117:7:18","valueSize":1},{"declaration":1140,"isOffset":false,"isSlot":false,"src":"2239:8:18","valueSize":1},{"declaration":2225,"isOffset":false,"isSlot":false,"src":"2368:7:18","valueSize":1},{"declaration":2228,"isOffset":false,"isSlot":false,"src":"2003:17:18","valueSize":1},{"declaration":2235,"isOffset":false,"isSlot":false,"src":"2249:23:18","valueSize":1},{"declaration":2222,"isOffset":false,"isSlot":false,"src":"2126:10:18","valueSize":1}],"id":2238,"nodeType":"InlineAssembly","src":"1639:1318:18"}]},"id":2240,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveConduit","nameLocation":"1163:14:18","nodeType":"FunctionDefinition","parameters":{"id":2223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2222,"mutability":"mutable","name":"conduitKey","nameLocation":"1186:10:18","nodeType":"VariableDeclaration","scope":2240,"src":"1178:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2221,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1178:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1177:20:18"},"returnParameters":{"id":2226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2225,"mutability":"mutable","name":"conduit","nameLocation":"1253:7:18","nodeType":"VariableDeclaration","scope":2240,"src":"1245:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2224,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1244:17:18"},"scope":2300,"src":"1154:1809:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2255,"nodeType":"Block","src":"3341:148:18","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2246,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3385:5:18","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"chainid","nodeType":"MemberAccess","src":"3385:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2248,"name":"_CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"3402:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3385:26:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2251,"name":"_deriveDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"3458:22:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3458:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3385:97:18","trueExpression":{"id":2250,"name":"_DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":879,"src":"3426:17:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2245,"id":2254,"nodeType":"Return","src":"3378:104:18"}]},"documentation":{"id":2241,"nodeType":"StructuredDocumentation","src":"2969:307:18","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":2256,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparator","nameLocation":"3290:16:18","nodeType":"FunctionDefinition","parameters":{"id":2242,"nodeType":"ParameterList","parameters":[],"src":"3306:2:18"},"returnParameters":{"id":2245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2256,"src":"3332:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3332:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3331:9:18"},"scope":2300,"src":"3281:208:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2286,"nodeType":"Block","src":"4025:499:18","statements":[{"expression":{"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2266,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2262,"src":"4075:15:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2267,"name":"_domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"4093:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4093:18:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4075:36:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2270,"nodeType":"ExpressionStatement","src":"4075:36:18"},{"expression":{"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2271,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"4200:17:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2274,"name":"_CONDUIT_CONTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"4228:19:18","typeDescriptions":{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ConduitControllerInterface_$269","typeString":"contract ConduitControllerInterface"}],"id":2273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4220:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2272,"name":"address","nodeType":"ElementaryTypeName","src":"4220:7:18","typeDescriptions":{}}},"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4220:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4200:48:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2277,"nodeType":"ExpressionStatement","src":"4200:48:18"},{"expression":{"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2278,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"4314:7:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2281,"name":"Version_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"4335:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4324:10:18","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":2279,"name":"string","nodeType":"ElementaryTypeName","src":"4328:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4324:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"4314:36:18","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":2284,"nodeType":"ExpressionStatement","src":"4314:36:18"},{"AST":{"nodeType":"YulBlock","src":"4436:82:18","statements":[{"expression":{"arguments":[{"arguments":[{"name":"version","nodeType":"YulIdentifier","src":"4461:7:18"},{"name":"OneWord","nodeType":"YulIdentifier","src":"4470:7:18"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4457:3:18"},"nodeType":"YulFunctionCall","src":"4457:21:18"},{"arguments":[{"name":"Version_shift","nodeType":"YulIdentifier","src":"4484:13:18"},{"name":"Version","nodeType":"YulIdentifier","src":"4499:7:18"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4480:3:18"},"nodeType":"YulFunctionCall","src":"4480:27:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:18"},"nodeType":"YulFunctionCall","src":"4450:58:18"},"nodeType":"YulExpressionStatement","src":"4450:58:18"}]},"evmVersion":"london","externalReferences":[{"declaration":1137,"isOffset":false,"isSlot":false,"src":"4470:7:18","valueSize":1},{"declaration":1041,"isOffset":false,"isSlot":false,"src":"4499:7:18","valueSize":1},{"declaration":1047,"isOffset":false,"isSlot":false,"src":"4484:13:18","valueSize":1},{"declaration":2260,"isOffset":false,"isSlot":false,"src":"4461:7:18","valueSize":1}],"id":2285,"nodeType":"InlineAssembly","src":"4427:91:18"}]},"documentation":{"id":2257,"nodeType":"StructuredDocumentation","src":"3495:329:18","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":2287,"implemented":true,"kind":"function","modifiers":[],"name":"_information","nameLocation":"3838:12:18","nodeType":"FunctionDefinition","parameters":{"id":2258,"nodeType":"ParameterList","parameters":[],"src":"3850:2:18"},"returnParameters":{"id":2265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2260,"mutability":"mutable","name":"version","nameLocation":"3927:7:18","nodeType":"VariableDeclaration","scope":2287,"src":"3913:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2259,"name":"string","nodeType":"ElementaryTypeName","src":"3913:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2262,"mutability":"mutable","name":"domainSeparator","nameLocation":"3956:15:18","nodeType":"VariableDeclaration","scope":2287,"src":"3948:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3948:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2264,"mutability":"mutable","name":"conduitController","nameLocation":"3993:17:18","nodeType":"VariableDeclaration","scope":2287,"src":"3985:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2263,"name":"address","nodeType":"ElementaryTypeName","src":"3985:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3899:121:18"},"scope":2300,"src":"3829:695:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2298,"nodeType":"Block","src":"4956:923:18","statements":[{"AST":{"nodeType":"YulBlock","src":"5039:834:18","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5131:1:18","type":"","value":"0"},{"name":"EIP_712_PREFIX","nodeType":"YulIdentifier","src":"5134:14:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5124:6:18"},"nodeType":"YulFunctionCall","src":"5124:25:18"},"nodeType":"YulExpressionStatement","src":"5124:25:18"},{"expression":{"arguments":[{"name":"EIP712_DomainSeparator_offset","nodeType":"YulIdentifier","src":"5249:29:18"},{"name":"domainSeparator","nodeType":"YulIdentifier","src":"5280:15:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5242:6:18"},"nodeType":"YulFunctionCall","src":"5242:54:18"},"nodeType":"YulExpressionStatement","src":"5242:54:18"},{"expression":{"arguments":[{"name":"EIP712_OrderHash_offset","nodeType":"YulIdentifier","src":"5601:23:18"},{"name":"orderHash","nodeType":"YulIdentifier","src":"5626:9:18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5594:6:18"},"nodeType":"YulFunctionCall","src":"5594:42:18"},"nodeType":"YulExpressionStatement","src":"5594:42:18"},{"nodeType":"YulAssignment","src":"5702:48:18","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5721:1:18","type":"","value":"0"},{"name":"EIP712_DigestPayload_size","nodeType":"YulIdentifier","src":"5724:25:18"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"5711:9:18"},"nodeType":"YulFunctionCall","src":"5711:39:18"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5702:5:18"}]},{"expression":{"arguments":[{"name":"EIP712_OrderHash_offset","nodeType":"YulIdentifier","src":"5836:23:18"},{"kind":"number","nodeType":"YulLiteral","src":"5861:1:18","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5829:6:18"},"nodeType":"YulFunctionCall","src":"5829:34:18"},"nodeType":"YulExpressionStatement","src":"5829:34:18"}]},"evmVersion":"london","externalReferences":[{"declaration":1188,"isOffset":false,"isSlot":false,"src":"5724:25:18","valueSize":1},{"declaration":1182,"isOffset":false,"isSlot":false,"src":"5249:29:18","valueSize":1},{"declaration":1185,"isOffset":false,"isSlot":false,"src":"5601:23:18","valueSize":1},{"declaration":1185,"isOffset":false,"isSlot":false,"src":"5836:23:18","valueSize":1},{"declaration":1386,"isOffset":false,"isSlot":false,"src":"5134:14:18","valueSize":1},{"declaration":2290,"isOffset":false,"isSlot":false,"src":"5280:15:18","valueSize":1},{"declaration":2292,"isOffset":false,"isSlot":false,"src":"5626:9:18","valueSize":1},{"declaration":2295,"isOffset":false,"isSlot":false,"src":"5702:5:18","valueSize":1}],"id":2297,"nodeType":"InlineAssembly","src":"5030:843:18"}]},"documentation":{"id":2288,"nodeType":"StructuredDocumentation","src":"4530:282:18","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":2299,"implemented":true,"kind":"function","modifiers":[],"name":"_deriveEIP712Digest","nameLocation":"4826:19:18","nodeType":"FunctionDefinition","parameters":{"id":2293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"domainSeparator","nameLocation":"4854:15:18","nodeType":"VariableDeclaration","scope":2299,"src":"4846:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2289,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4846:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2292,"mutability":"mutable","name":"orderHash","nameLocation":"4879:9:18","nodeType":"VariableDeclaration","scope":2299,"src":"4871:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4871:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4845:44:18"},"returnParameters":{"id":2296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2295,"mutability":"mutable","name":"value","nameLocation":"4945:5:18","nodeType":"VariableDeclaration","scope":2299,"src":"4937:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2294,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4937:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4936:15:18"},"scope":2300,"src":"4817:1062:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2301,"src":"223:5658:18","usedErrors":[]}],"src":"32:5850:18"},"id":18},"contracts/lib/LowLevelHelpers.sol":{"ast":{"absolutePath":"contracts/lib/LowLevelHelpers.sol","exportedSymbols":{"AccumulatorArmed":[1462],"AccumulatorDisarmed":[1459],"Accumulator_array_length_ptr":[1474],"Accumulator_array_offset":[1480],"Accumulator_array_offset_ptr":[1471],"Accumulator_conduitKey_ptr":[1465],"Accumulator_itemSizeOffsetDifference":[1477],"Accumulator_selector_ptr":[1468],"AdditionalRecipients_size":[1179],"AdvancedOrder_numerator_offset":[1131],"AlmostOneWord":[1134],"BadContractSignature_error_length":[1545],"BadContractSignature_error_signature":[1542],"BadSignatureV_error_length":[1524],"BadSignatureV_error_offset":[1521],"BadSignatureV_error_signature":[1518],"BasicOrder_additionalRecipients_data_cdPtr":[1270],"BasicOrder_additionalRecipients_head_cdPtr":[1261],"BasicOrder_additionalRecipients_head_ptr":[1330],"BasicOrder_additionalRecipients_length_cdPtr":[1267],"BasicOrder_basicOrderType_cdPtr":[1246],"BasicOrder_basicOrderType_range":[1276],"BasicOrder_common_params_size":[1170],"BasicOrder_considerationAmount_cdPtr":[1231],"BasicOrder_considerationHashesArray_ptr":[1173],"BasicOrder_considerationItem_endAmount_ptr":[1294],"BasicOrder_considerationItem_identifier_ptr":[1288],"BasicOrder_considerationItem_itemType_ptr":[1282],"BasicOrder_considerationItem_startAmount_ptr":[1291],"BasicOrder_considerationItem_token_ptr":[1285],"BasicOrder_considerationItem_typeHash_ptr":[1279],"BasicOrder_considerationToken_cdPtr":[1228],"BasicOrder_endAmount_cdPtr":[1167],"BasicOrder_fulfillerConduit_cdPtr":[1255],"BasicOrder_offerAmount_cdPtr":[1243],"BasicOrder_offerItem_endAmount_ptr":[1306],"BasicOrder_offerItem_itemType_ptr":[1300],"BasicOrder_offerItem_token_ptr":[1303],"BasicOrder_offerItem_typeHash_ptr":[1297],"BasicOrder_offerToken_cdPtr":[1240],"BasicOrder_offererConduit_cdPtr":[1252],"BasicOrder_offerer_cdPtr":[1234],"BasicOrder_order_considerationHashes_ptr":[1318],"BasicOrder_order_counter_ptr":[1327],"BasicOrder_order_offerHashes_ptr":[1315],"BasicOrder_order_offerer_ptr":[1312],"BasicOrder_order_orderType_ptr":[1321],"BasicOrder_order_startTime_ptr":[1324],"BasicOrder_order_typeHash_ptr":[1309],"BasicOrder_parameters_cdPtr":[1225],"BasicOrder_parameters_ptr":[1273],"BasicOrder_signature_cdPtr":[1264],"BasicOrder_signature_ptr":[1333],"BasicOrder_startTime_cdPtr":[1249],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[1258],"BasicOrder_zone_cdPtr":[1237],"Common_amount_offset":[1062],"Common_identifier_offset":[1059],"Common_token_offset":[1056],"Conduit_execute_ConduitTransfer_length":[1429],"Conduit_execute_ConduitTransfer_length_ptr":[1435],"Conduit_execute_ConduitTransfer_offset_ptr":[1432],"Conduit_execute_ConduitTransfer_ptr":[1426],"Conduit_execute_signature":[1417],"Conduit_execute_transferAmount_ptr":[1453],"Conduit_execute_transferFrom_ptr":[1444],"Conduit_execute_transferIdentifier_ptr":[1450],"Conduit_execute_transferItemType_ptr":[1438],"Conduit_execute_transferTo_ptr":[1447],"Conduit_execute_transferToken_ptr":[1441],"Conduit_transferItem_amount_ptr":[1498],"Conduit_transferItem_from_ptr":[1489],"Conduit_transferItem_identifier_ptr":[1495],"Conduit_transferItem_size":[1483],"Conduit_transferItem_to_ptr":[1492],"Conduit_transferItem_token_ptr":[1486],"ConsiderItem_recipient_offset":[1080],"ConsiderationItem_recipient_offset":[1077],"CostPerWord":[1392],"Create2AddressDerivation_length":[1401],"Create2AddressDerivation_ptr":[1398],"DefaultFreeMemoryPointer":[1158],"ECDSA_MaxLength":[1344],"ECDSA_signature_s_offset":[1347],"ECDSA_signature_v_offset":[1350],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[1341],"EIP1271_isValidSignature_calldata_baseLength":[1366],"EIP1271_isValidSignature_digest_negativeOffset":[1360],"EIP1271_isValidSignature_selector":[1354],"EIP1271_isValidSignature_selector_negativeOffset":[1363],"EIP1271_isValidSignature_signatureHead_negativeOffset":[1357],"EIP1271_isValidSignature_signature_head_offset":[1369],"EIP2098_allButHighestBitMask":[1337],"EIP712_DigestPayload_size":[1188],"EIP712_DomainSeparator_offset":[1182],"EIP712_OrderHash_offset":[1185],"EIP712_Order_size":[1176],"EIP_712_PREFIX":[1386],"Ecrecover_args_size":[1511],"Ecrecover_precompile":[1508],"Execution_conduit_offset":[1086],"Execution_offerer_offset":[1083],"ExtraGasBuffer":[1389],"FiveWords":[1149],"FourWords":[1146],"FreeMemoryPointerSlot":[1152],"Fulfillment_itemIndex_offset":[1128],"InexactFraction_error_len":[1505],"InexactFraction_error_signature":[1502],"InvalidFulfillmentComponentData_error_len":[1093],"InvalidFulfillmentComponentData_error_signature":[1090],"InvalidSignature_error_length":[1538],"InvalidSignature_error_signature":[1535],"InvalidSigner_error_length":[1531],"InvalidSigner_error_signature":[1528],"LowLevelHelpers":[2340],"MaskOverByteTwelve":[1405],"MaskOverFirstFourBytes":[1413],"MaskOverLastTwentyBytes":[1409],"MaxUint120":[1423],"MaxUint8":[1420],"MemoryExpansionCoefficient":[1395],"MissingItemAmount_error_len":[1113],"MissingItemAmount_error_signature":[1110],"NameLengthPtr":[1035],"NameWithLength":[1038],"NoContract_error_length":[1382],"NoContract_error_sig_ptr":[1376],"NoContract_error_signature":[1373],"NoContract_error_token_ptr":[1379],"NonMatchSelector_MagicModulus":[1551],"NonMatchSelector_MagicRemainder":[1554],"NumBitsAfterSelector":[1548],"OneConduitExecute_size":[1456],"OneWord":[1137],"OrderFulfilled_baseOffset":[1201],"OrderFulfilled_baseSize":[1194],"OrderFulfilled_consideration_body_offset":[1222],"OrderFulfilled_consideration_head_offset":[1219],"OrderFulfilled_consideration_length_baseOffset":[1204],"OrderFulfilled_fulfiller_offset":[1210],"OrderFulfilled_offer_body_offset":[1216],"OrderFulfilled_offer_head_offset":[1213],"OrderFulfilled_offer_length_baseOffset":[1207],"OrderFulfilled_selector":[1198],"OrderParameters_conduit_offset":[1122],"OrderParameters_consideration_head_offset":[1119],"OrderParameters_counter_offset":[1125],"OrderParameters_offer_head_offset":[1116],"Panic_arithmetic":[1106],"Panic_error_length":[1103],"Panic_error_offset":[1100],"Panic_error_signature":[1097],"ReceivedItem_CommonParams_size":[1074],"ReceivedItem_amount_offset":[1068],"ReceivedItem_recipient_offset":[1071],"ReceivedItem_size":[1065],"Signature_lower_v":[1514],"Slot0x80":[1161],"Slot0xA0":[1164],"ThreeWords":[1143],"TwoWords":[1140],"Version":[1041],"Version_length":[1044],"Version_shift":[1047],"ZeroSlot":[1155],"_ENTERED":[1053],"_NOT_ENTERED":[1050],"receivedItemsHash_ptr":[1191]},"id":2341,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2302,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:19"},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":2303,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2341,"sourceUnit":1555,"src":"58:38:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"LowLevelHelpers","contractDependencies":[],"contractKind":"contract","documentation":{"id":2304,"nodeType":"StructuredDocumentation","src":"98:147:19","text":" @title LowLevelHelpers\n @author 0age\n @notice LowLevelHelpers contains logic for performing various low-level\n         operations."},"fullyImplemented":true,"id":2340,"linearizedBaseContracts":[2340],"name":"LowLevelHelpers","nameLocation":"255:15:19","nodeType":"ContractDefinition","nodes":[{"body":{"id":2315,"nodeType":"Block","src":"820:281:19","statements":[{"AST":{"nodeType":"YulBlock","src":"839:256:19","statements":[{"nodeType":"YulAssignment","src":"892:193:19","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"931:3:19"},"nodeType":"YulFunctionCall","src":"931:5:19"},{"name":"target","nodeType":"YulIdentifier","src":"954:6:19"},{"arguments":[{"name":"callData","nodeType":"YulIdentifier","src":"982:8:19"},{"name":"OneWord","nodeType":"YulIdentifier","src":"992:7:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"978:3:19"},"nodeType":"YulFunctionCall","src":"978:22:19"},{"arguments":[{"name":"callData","nodeType":"YulIdentifier","src":"1024:8:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1018:5:19"},"nodeType":"YulFunctionCall","src":"1018:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"1051:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1070:1:19","type":"","value":"0"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"903:10:19"},"nodeType":"YulFunctionCall","src":"903:182:19"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"892:7:19"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1137,"isOffset":false,"isSlot":false,"src":"992:7:19","valueSize":1},{"declaration":2309,"isOffset":false,"isSlot":false,"src":"1024:8:19","valueSize":1},{"declaration":2309,"isOffset":false,"isSlot":false,"src":"982:8:19","valueSize":1},{"declaration":2312,"isOffset":false,"isSlot":false,"src":"892:7:19","valueSize":1},{"declaration":2307,"isOffset":false,"isSlot":false,"src":"954:6:19","valueSize":1}],"id":2314,"nodeType":"InlineAssembly","src":"830:265:19"}]},"documentation":{"id":2305,"nodeType":"StructuredDocumentation","src":"277:413:19","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":2316,"implemented":true,"kind":"function","modifiers":[],"name":"_staticcall","nameLocation":"704:11:19","nodeType":"FunctionDefinition","parameters":{"id":2310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2307,"mutability":"mutable","name":"target","nameLocation":"724:6:19","nodeType":"VariableDeclaration","scope":2316,"src":"716:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2306,"name":"address","nodeType":"ElementaryTypeName","src":"716:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2309,"mutability":"mutable","name":"callData","nameLocation":"745:8:19","nodeType":"VariableDeclaration","scope":2316,"src":"732:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2308,"name":"bytes","nodeType":"ElementaryTypeName","src":"732:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"715:39:19"},"returnParameters":{"id":2313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2312,"mutability":"mutable","name":"success","nameLocation":"807:7:19","nodeType":"VariableDeclaration","scope":2316,"src":"802:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2311,"name":"bool","nodeType":"ElementaryTypeName","src":"802:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"801:14:19"},"scope":2340,"src":"695:406:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2321,"nodeType":"Block","src":"1405:2179:19","statements":[{"AST":{"nodeType":"YulBlock","src":"1424:2154:19","statements":[{"body":{"nodeType":"YulBlock","src":"1571:1997:19","statements":[{"nodeType":"YulVariableDeclaration","src":"1814:131:19","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1866:14:19"},"nodeType":"YulFunctionCall","src":"1866:16:19"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"1884:13:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1862:3:19"},"nodeType":"YulFunctionCall","src":"1862:36:19"},{"name":"OneWord","nodeType":"YulIdentifier","src":"1920:7:19"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1837:3:19"},"nodeType":"YulFunctionCall","src":"1837:108:19"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"1818:15:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2177:60:19","value":{"arguments":[{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"2205:21:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2199:5:19"},"nodeType":"YulFunctionCall","src":"2199:28:19"},{"name":"OneWord","nodeType":"YulIdentifier","src":"2229:7:19"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2195:3:19"},"nodeType":"YulFunctionCall","src":"2195:42:19"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"2181:10:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2320:45:19","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"2336:11:19"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2349:15:19"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2332:3:19"},"nodeType":"YulFunctionCall","src":"2332:33:19"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"2324:4:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2482:572:19","statements":[{"nodeType":"YulAssignment","src":"2504:532:19","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"2541:4:19"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2612:15:19"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"2629:10:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2608:3:19"},"nodeType":"YulFunctionCall","src":"2608:32:19"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"2642:11:19"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2604:3:19"},"nodeType":"YulFunctionCall","src":"2604:50:19"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2766:15:19"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2783:15:19"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2762:3:19"},"nodeType":"YulFunctionCall","src":"2762:37:19"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"2841:10:19"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"2853:10:19"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2837:3:19"},"nodeType":"YulFunctionCall","src":"2837:27:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2721:3:19"},"nodeType":"YulFunctionCall","src":"2721:177:19"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"2932:26:19"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2684:3:19"},"nodeType":"YulFunctionCall","src":"2684:304:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2571:3:19"},"nodeType":"YulFunctionCall","src":"2571:443:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2512:3:19"},"nodeType":"YulFunctionCall","src":"2512:524:19"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"2504:4:19"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"2453:15:19"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"2470:10:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2450:2:19"},"nodeType":"YulFunctionCall","src":"2450:31:19"},"nodeType":"YulIf","src":"2447:607:19"},{"body":{"nodeType":"YulBlock","src":"3270:284:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3384:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3387:1:19","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3390:14:19"},"nodeType":"YulFunctionCall","src":"3390:16:19"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"3369:14:19"},"nodeType":"YulFunctionCall","src":"3369:38:19"},"nodeType":"YulExpressionStatement","src":"3369:38:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3516:1:19","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3519:14:19"},"nodeType":"YulFunctionCall","src":"3519:16:19"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3509:6:19"},"nodeType":"YulFunctionCall","src":"3509:27:19"},"nodeType":"YulExpressionStatement","src":"3509:27:19"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"3240:4:19"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"3246:14:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3236:3:19"},"nodeType":"YulFunctionCall","src":"3236:25:19"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"3263:3:19"},"nodeType":"YulFunctionCall","src":"3263:5:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3233:2:19"},"nodeType":"YulFunctionCall","src":"3233:36:19"},"nodeType":"YulIf","src":"3230:324:19"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1554:14:19"},"nodeType":"YulFunctionCall","src":"1554:16:19"},"nodeType":"YulIf","src":"1551:2017:19"}]},"evmVersion":"london","externalReferences":[{"declaration":1134,"isOffset":false,"isSlot":false,"src":"1884:13:19","valueSize":1},{"declaration":1392,"isOffset":false,"isSlot":false,"src":"2336:11:19","valueSize":1},{"declaration":1392,"isOffset":false,"isSlot":false,"src":"2642:11:19","valueSize":1},{"declaration":1389,"isOffset":false,"isSlot":false,"src":"3246:14:19","valueSize":1},{"declaration":1152,"isOffset":false,"isSlot":false,"src":"2205:21:19","valueSize":1},{"declaration":1395,"isOffset":false,"isSlot":false,"src":"2932:26:19","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"1920:7:19","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"2229:7:19","valueSize":1}],"id":2320,"nodeType":"InlineAssembly","src":"1415:2163:19"}]},"documentation":{"id":2317,"nodeType":"StructuredDocumentation","src":"1107:235:19","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":2322,"implemented":true,"kind":"function","modifiers":[],"name":"_revertWithReasonIfOneIsReturned","nameLocation":"1356:32:19","nodeType":"FunctionDefinition","parameters":{"id":2318,"nodeType":"ParameterList","parameters":[],"src":"1388:2:19"},"returnParameters":{"id":2319,"nodeType":"ParameterList","parameters":[],"src":"1405:0:19"},"scope":2340,"src":"1347:2237:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2338,"nodeType":"Block","src":"4003:705:19","statements":[{"assignments":[2331],"declarations":[{"constant":false,"id":2331,"mutability":"mutable","name":"result","nameLocation":"4096:6:19","nodeType":"VariableDeclaration","scope":2338,"src":"4089:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2330,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4089:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":2332,"nodeType":"VariableDeclarationStatement","src":"4089:13:19"},{"AST":{"nodeType":"YulBlock","src":"4200:385:19","statements":[{"body":{"nodeType":"YulBlock","src":"4323:252:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4435:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4438:1:19","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"4441:7:19"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"4420:14:19"},"nodeType":"YulFunctionCall","src":"4420:29:19"},"nodeType":"YulExpressionStatement","src":"4420:29:19"},{"nodeType":"YulAssignment","src":"4543:18:19","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4559:1:19","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4553:5:19"},"nodeType":"YulFunctionCall","src":"4553:8:19"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"4543:6:19"}]}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4296:14:19"},"nodeType":"YulFunctionCall","src":"4296:16:19"},{"name":"OneWord","nodeType":"YulIdentifier","src":"4314:7:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4293:2:19"},"nodeType":"YulFunctionCall","src":"4293:29:19"},"nodeType":"YulIf","src":"4290:285:19"}]},"evmVersion":"london","externalReferences":[{"declaration":1137,"isOffset":false,"isSlot":false,"src":"4314:7:19","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"4441:7:19","valueSize":1},{"declaration":2331,"isOffset":false,"isSlot":false,"src":"4543:6:19","valueSize":1}],"id":2333,"nodeType":"InlineAssembly","src":"4191:394:19"},{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2334,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2331,"src":"4683:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2335,"name":"expected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"4693:8:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4683:18:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2329,"id":2337,"nodeType":"Return","src":"4676:25:19"}]},"documentation":{"id":2323,"nodeType":"StructuredDocumentation","src":"3590:334:19","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":2339,"implemented":true,"kind":"function","modifiers":[],"name":"_doesNotMatchMagic","nameLocation":"3938:18:19","nodeType":"FunctionDefinition","parameters":{"id":2326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2325,"mutability":"mutable","name":"expected","nameLocation":"3964:8:19","nodeType":"VariableDeclaration","scope":2339,"src":"3957:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2324,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3957:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3956:17:19"},"returnParameters":{"id":2329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2328,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2339,"src":"3997:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2327,"name":"bool","nodeType":"ElementaryTypeName","src":"3997:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3996:6:19"},"scope":2340,"src":"3929:779:19","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2341,"src":"246:4464:19","usedErrors":[]}],"src":"32:4679:19"},"id":19},"contracts/lib/OrderFulfiller.sol":{"ast":{"absolutePath":"contracts/lib/OrderFulfiller.sol","exportedSymbols":{"AccumulatorArmed":[1462],"AccumulatorDisarmed":[1459],"Accumulator_array_length_ptr":[1474],"Accumulator_array_offset":[1480],"Accumulator_array_offset_ptr":[1471],"Accumulator_conduitKey_ptr":[1465],"Accumulator_itemSizeOffsetDifference":[1477],"Accumulator_selector_ptr":[1468],"AdditionalRecipients_size":[1179],"AdvancedOrder_numerator_offset":[1131],"AlmostOneWord":[1134],"BadContractSignature_error_length":[1545],"BadContractSignature_error_signature":[1542],"BadSignatureV_error_length":[1524],"BadSignatureV_error_offset":[1521],"BadSignatureV_error_signature":[1518],"BasicOrder_additionalRecipients_data_cdPtr":[1270],"BasicOrder_additionalRecipients_head_cdPtr":[1261],"BasicOrder_additionalRecipients_head_ptr":[1330],"BasicOrder_additionalRecipients_length_cdPtr":[1267],"BasicOrder_basicOrderType_cdPtr":[1246],"BasicOrder_basicOrderType_range":[1276],"BasicOrder_common_params_size":[1170],"BasicOrder_considerationAmount_cdPtr":[1231],"BasicOrder_considerationHashesArray_ptr":[1173],"BasicOrder_considerationItem_endAmount_ptr":[1294],"BasicOrder_considerationItem_identifier_ptr":[1288],"BasicOrder_considerationItem_itemType_ptr":[1282],"BasicOrder_considerationItem_startAmount_ptr":[1291],"BasicOrder_considerationItem_token_ptr":[1285],"BasicOrder_considerationItem_typeHash_ptr":[1279],"BasicOrder_considerationToken_cdPtr":[1228],"BasicOrder_endAmount_cdPtr":[1167],"BasicOrder_fulfillerConduit_cdPtr":[1255],"BasicOrder_offerAmount_cdPtr":[1243],"BasicOrder_offerItem_endAmount_ptr":[1306],"BasicOrder_offerItem_itemType_ptr":[1300],"BasicOrder_offerItem_token_ptr":[1303],"BasicOrder_offerItem_typeHash_ptr":[1297],"BasicOrder_offerToken_cdPtr":[1240],"BasicOrder_offererConduit_cdPtr":[1252],"BasicOrder_offerer_cdPtr":[1234],"BasicOrder_order_considerationHashes_ptr":[1318],"BasicOrder_order_counter_ptr":[1327],"BasicOrder_order_offerHashes_ptr":[1315],"BasicOrder_order_offerer_ptr":[1312],"BasicOrder_order_orderType_ptr":[1321],"BasicOrder_order_startTime_ptr":[1324],"BasicOrder_order_typeHash_ptr":[1309],"BasicOrder_parameters_cdPtr":[1225],"BasicOrder_parameters_ptr":[1273],"BasicOrder_signature_cdPtr":[1264],"BasicOrder_signature_ptr":[1333],"BasicOrder_startTime_cdPtr":[1249],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[1258],"BasicOrder_zone_cdPtr":[1237],"Common_amount_offset":[1062],"Common_identifier_offset":[1059],"Common_token_offset":[1056],"ConduitInterface":[343],"Conduit_execute_ConduitTransfer_length":[1429],"Conduit_execute_ConduitTransfer_length_ptr":[1435],"Conduit_execute_ConduitTransfer_offset_ptr":[1432],"Conduit_execute_ConduitTransfer_ptr":[1426],"Conduit_execute_signature":[1417],"Conduit_execute_transferAmount_ptr":[1453],"Conduit_execute_transferFrom_ptr":[1444],"Conduit_execute_transferIdentifier_ptr":[1450],"Conduit_execute_transferItemType_ptr":[1438],"Conduit_execute_transferTo_ptr":[1447],"Conduit_execute_transferToken_ptr":[1441],"Conduit_transferItem_amount_ptr":[1498],"Conduit_transferItem_from_ptr":[1489],"Conduit_transferItem_identifier_ptr":[1495],"Conduit_transferItem_size":[1483],"Conduit_transferItem_to_ptr":[1492],"Conduit_transferItem_token_ptr":[1486],"ConsiderItem_recipient_offset":[1080],"ConsiderationItem_recipient_offset":[1077],"CostPerWord":[1392],"Create2AddressDerivation_length":[1401],"Create2AddressDerivation_ptr":[1398],"DefaultFreeMemoryPointer":[1158],"ECDSA_MaxLength":[1344],"ECDSA_signature_s_offset":[1347],"ECDSA_signature_v_offset":[1350],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[1341],"EIP1271_isValidSignature_calldata_baseLength":[1366],"EIP1271_isValidSignature_digest_negativeOffset":[1360],"EIP1271_isValidSignature_selector":[1354],"EIP1271_isValidSignature_selector_negativeOffset":[1363],"EIP1271_isValidSignature_signatureHead_negativeOffset":[1357],"EIP1271_isValidSignature_signature_head_offset":[1369],"EIP2098_allButHighestBitMask":[1337],"EIP712_DigestPayload_size":[1188],"EIP712_DomainSeparator_offset":[1182],"EIP712_OrderHash_offset":[1185],"EIP712_Order_size":[1176],"EIP_712_PREFIX":[1386],"Ecrecover_args_size":[1511],"Ecrecover_precompile":[1508],"Execution_conduit_offset":[1086],"Execution_offerer_offset":[1083],"ExtraGasBuffer":[1389],"FiveWords":[1149],"FourWords":[1146],"FreeMemoryPointerSlot":[1152],"Fulfillment_itemIndex_offset":[1128],"InexactFraction_error_len":[1505],"InexactFraction_error_signature":[1502],"InvalidFulfillmentComponentData_error_len":[1093],"InvalidFulfillmentComponentData_error_signature":[1090],"InvalidSignature_error_length":[1538],"InvalidSignature_error_signature":[1535],"InvalidSigner_error_length":[1531],"InvalidSigner_error_signature":[1528],"ItemType":[1561],"MaskOverByteTwelve":[1405],"MaskOverFirstFourBytes":[1413],"MaskOverLastTwentyBytes":[1409],"MaxUint120":[1423],"MaxUint8":[1420],"MemoryExpansionCoefficient":[1395],"MissingItemAmount_error_len":[1113],"MissingItemAmount_error_signature":[1110],"NameLengthPtr":[1035],"NameWithLength":[1038],"NoContract_error_length":[1382],"NoContract_error_sig_ptr":[1376],"NoContract_error_signature":[1373],"NoContract_error_token_ptr":[1379],"NonMatchSelector_MagicModulus":[1551],"NonMatchSelector_MagicRemainder":[1554],"NumBitsAfterSelector":[1548],"OneConduitExecute_size":[1456],"OneWord":[1137],"Order":[1641],"OrderFulfilled_baseOffset":[1201],"OrderFulfilled_baseSize":[1194],"OrderFulfilled_consideration_body_offset":[1222],"OrderFulfilled_consideration_head_offset":[1219],"OrderFulfilled_consideration_length_baseOffset":[1204],"OrderFulfilled_fulfiller_offset":[1210],"OrderFulfilled_offer_body_offset":[1216],"OrderFulfilled_offer_head_offset":[1213],"OrderFulfilled_offer_length_baseOffset":[1207],"OrderFulfilled_selector":[1198],"OrderFulfiller":[3157],"OrderParameters":[1635],"OrderParameters_conduit_offset":[1122],"OrderParameters_consideration_head_offset":[1119],"OrderParameters_counter_offset":[1125],"OrderParameters_offer_head_offset":[1116],"OrderValidator":[3984],"Panic_arithmetic":[1106],"Panic_error_length":[1103],"Panic_error_offset":[1100],"Panic_error_signature":[1097],"ReceivedItem_CommonParams_size":[1074],"ReceivedItem_amount_offset":[1068],"ReceivedItem_recipient_offset":[1071],"ReceivedItem_size":[1065],"Signature_lower_v":[1514],"Slot0x80":[1161],"Slot0xA0":[1164],"ThreeWords":[1143],"TwoWords":[1140],"Version":[1041],"Version_length":[1044],"Version_shift":[1047],"ZeroSlot":[1155],"_ENTERED":[1053],"_NOT_ENTERED":[1050],"receivedItemsHash_ptr":[1191]},"id":3158,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2342,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:20"},{"absolutePath":"contracts/interfaces/ConduitInterface.sol","file":"../interfaces/ConduitInterface.sol","id":2344,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3158,"sourceUnit":344,"src":"58:70:20","symbolAliases":[{"foreign":{"id":2343,"name":"ConduitInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"67:16:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationEnums.sol","file":"./ConsiderationEnums.sol","id":2346,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3158,"sourceUnit":1562,"src":"130:56:20","symbolAliases":[{"foreign":{"id":2345,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"143:8:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":2349,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3158,"sourceUnit":1659,"src":"188:76:20","symbolAliases":[{"foreign":{"id":2347,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"201:5:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2348,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"212:15:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/OrderValidator.sol","file":"./OrderValidator.sol","id":2351,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3158,"sourceUnit":3985,"src":"266:54:20","symbolAliases":[{"foreign":{"id":2350,"name":"OrderValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"275:14:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":2352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3158,"sourceUnit":1555,"src":"322:38:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2353,"name":"OrderValidator","nodeType":"IdentifierPath","referencedDeclaration":3984,"src":"389:14:20"},"id":2354,"nodeType":"InheritanceSpecifier","src":"389:14:20"}],"canonicalName":"OrderFulfiller","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3157,"linearizedBaseContracts":[3157,3984,4152,2186,4266,4709,4190,2340,534,632,594,1711,4038,516,497,2300,1030],"name":"OrderFulfiller","nameLocation":"371:14:20","nodeType":"ContractDefinition","nodes":[{"canonicalName":"OrderFulfiller.Dispatch","id":2363,"members":[{"constant":false,"id":2356,"mutability":"mutable","name":"payment","nameLocation":"445:7:20","nodeType":"VariableDeclaration","scope":2363,"src":"437:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2355,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2358,"mutability":"mutable","name":"toOfferer","nameLocation":"470:9:20","nodeType":"VariableDeclaration","scope":2363,"src":"462:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2357,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2360,"mutability":"mutable","name":"toPlatform","nameLocation":"497:10:20","nodeType":"VariableDeclaration","scope":2363,"src":"489:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2359,"name":"uint256","nodeType":"ElementaryTypeName","src":"489:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2362,"mutability":"mutable","name":"toArtist","nameLocation":"525:8:20","nodeType":"VariableDeclaration","scope":2363,"src":"517:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2361,"name":"uint256","nodeType":"ElementaryTypeName","src":"517:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Dispatch","nameLocation":"418:8:20","nodeType":"StructDefinition","scope":3157,"src":"411:129:20","visibility":"public"},{"body":{"id":2374,"nodeType":"Block","src":"653:2:20","statements":[]},"id":2375,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2370,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"621:17:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2371,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"640:11:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2372,"kind":"baseConstructorSpecifier","modifierName":{"id":2369,"name":"OrderValidator","nodeType":"IdentifierPath","referencedDeclaration":3984,"src":"606:14:20"},"nodeType":"ModifierInvocation","src":"606:46:20"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2365,"mutability":"mutable","name":"conduitController","nameLocation":"566:17:20","nodeType":"VariableDeclaration","scope":2375,"src":"558:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2364,"name":"address","nodeType":"ElementaryTypeName","src":"558:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2367,"mutability":"mutable","name":"shadowToken","nameLocation":"593:11:20","nodeType":"VariableDeclaration","scope":2375,"src":"585:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2366,"name":"address","nodeType":"ElementaryTypeName","src":"585:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"557:48:20"},"returnParameters":{"id":2373,"nodeType":"ParameterList","parameters":[],"src":"653:0:20"},"scope":3157,"src":"546:109:20","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2532,"nodeType":"Block","src":"881:914:20","statements":[{"assignments":[2391],"declarations":[{"constant":false,"id":2391,"mutability":"mutable","name":"royalty","nameLocation":"899:7:20","nodeType":"VariableDeclaration","scope":2532,"src":"891:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2390,"name":"uint256","nodeType":"ElementaryTypeName","src":"891:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2392,"nodeType":"VariableDeclarationStatement","src":"891:15:20"},{"assignments":[2394],"declarations":[{"constant":false,"id":2394,"mutability":"mutable","name":"paidTimes","nameLocation":"924:9:20","nodeType":"VariableDeclaration","scope":2532,"src":"916:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2393,"name":"uint256","nodeType":"ElementaryTypeName","src":"916:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2399,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2395,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"936:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"936:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2397,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"953:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"936:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"916:45:20"},{"expression":{"id":2405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2400,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"972:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2402,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":2360,"src":"972:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2403,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"989:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawFee","nodeType":"MemberAccess","referencedDeclaration":1630,"src":"989:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"972:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2406,"nodeType":"ExpressionStatement","src":"972:35:20"},{"condition":{"id":2407,"name":"isFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2384,"src":"1021:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2530,"nodeType":"Block","src":"1406:383:20","statements":[{"expression":{"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2472,"name":"royalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"1420:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2473,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"1430:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2474,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1442:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1626,"src":"1442:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2476,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1459:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"1459:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1442:31:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2479,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1441:33:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1430:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1420:54:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2482,"nodeType":"ExpressionStatement","src":"1420:54:20"},{"expression":{"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2483,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1488:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"1488:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2486,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"1502:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2487,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1514:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1622,"src":"1514:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2489,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1530:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"1530:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1514:30:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2492,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1513:32:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1502:43:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1488:57:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2495,"nodeType":"ExpressionStatement","src":"1488:57:20"},{"expression":{"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2496,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1571:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2498,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":2358,"src":"1571:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2499,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1587:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"1587:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":2501,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1601:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":1624,"src":"1601:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":2504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1616:5:20","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"1587:34:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2506,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1624:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":2360,"src":"1624:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2509,"name":"royalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"1641:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:61:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1571:77:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2512,"nodeType":"ExpressionStatement","src":"1571:77:20"},{"condition":{"id":2513,"name":"isFirst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"1666:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2529,"nodeType":"IfStatement","src":"1662:117:20","trueBody":{"id":2528,"nodeType":"Block","src":"1675:104:20","statements":[{"expression":{"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2514,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1693:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"1693:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":2517,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1708:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":1628,"src":"1708:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1693:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2520,"nodeType":"ExpressionStatement","src":"1693:25:20"},{"expression":{"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2521,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1736:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":2360,"src":"1736:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":2524,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1754:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":1628,"src":"1754:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1736:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2527,"nodeType":"ExpressionStatement","src":"1736:28:20"}]}}]},"id":2531,"nodeType":"IfStatement","src":"1017:772:20","trueBody":{"id":2471,"nodeType":"Block","src":"1033:367:20","statements":[{"expression":{"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2408,"name":"royalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"1047:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2409,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1057:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1626,"src":"1057:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2411,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2394,"src":"1074:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2412,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1087:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1626,"src":"1087:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2414,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1104:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"1104:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1087:31:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2417,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1086:33:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:45:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1057:62:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1047:72:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2421,"nodeType":"ExpressionStatement","src":"1047:72:20"},{"expression":{"id":2436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2422,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1133:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"1133:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2425,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1147:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1622,"src":"1147:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2427,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2394,"src":"1163:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2428,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1175:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1622,"src":"1175:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2430,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1191:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"1191:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1175:30:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2433,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1174:32:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1163:43:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1147:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1133:73:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2437,"nodeType":"ExpressionStatement","src":"1133:73:20"},{"expression":{"id":2462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2438,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1220:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":2358,"src":"1220:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2441,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1236:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1622,"src":"1236:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2443,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1253:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1622,"src":"1253:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2445,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1269:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"1269:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1253:30:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2448,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1252:32:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":2449,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1287:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":1624,"src":"1287:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1252:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":2452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1302:5:20","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"1252:55:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2454,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2394,"src":"1310:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1252:67:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1236:83:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2457,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1322:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":2360,"src":"1322:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1236:100:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2460,"name":"royalty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"1339:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1236:110:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1220:126:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2463,"nodeType":"ExpressionStatement","src":"1220:126:20"},{"expression":{"id":2469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2464,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"1360:3:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":2362,"src":"1360:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2467,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2378,"src":"1375:6:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1626,"src":"1375:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1360:29:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2470,"nodeType":"ExpressionStatement","src":"1360:29:20"}]}}]},"id":2533,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateDispatch","nameLocation":"670:18:20","nodeType":"FunctionDefinition","parameters":{"id":2385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2378,"mutability":"mutable","name":"params","nameLocation":"723:6:20","nodeType":"VariableDeclaration","scope":2533,"src":"698:31:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":2377,"nodeType":"UserDefinedTypeName","pathNode":{"id":2376,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"698:15:20"},"referencedDeclaration":1635,"src":"698:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"payTimes","nameLocation":"747:8:20","nodeType":"VariableDeclaration","scope":2533,"src":"739:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"739:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"isFirst","nameLocation":"770:7:20","nodeType":"VariableDeclaration","scope":2533,"src":"765:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2381,"name":"bool","nodeType":"ElementaryTypeName","src":"765:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2384,"mutability":"mutable","name":"isFinalize","nameLocation":"792:10:20","nodeType":"VariableDeclaration","scope":2533,"src":"787:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2383,"name":"bool","nodeType":"ElementaryTypeName","src":"787:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"688:120:20"},"returnParameters":{"id":2389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2388,"mutability":"mutable","name":"ret","nameLocation":"872:3:20","nodeType":"VariableDeclaration","scope":2533,"src":"856:19:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":2387,"nodeType":"UserDefinedTypeName","pathNode":{"id":2386,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":2363,"src":"856:8:20"},"referencedDeclaration":2363,"src":"856:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"}],"src":"855:21:20"},"scope":3157,"src":"661:1134:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2651,"nodeType":"Block","src":"1930:1574:20","statements":[{"assignments":[2544,2546,2548],"declarations":[{"constant":false,"id":2544,"mutability":"mutable","name":"orderHash","nameLocation":"1962:9:20","nodeType":"VariableDeclaration","scope":2651,"src":"1954:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1954:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2546,"mutability":"mutable","name":"valid","nameLocation":"1990:5:20","nodeType":"VariableDeclaration","scope":2651,"src":"1985:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2545,"name":"bool","nodeType":"ElementaryTypeName","src":"1985:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2548,"mutability":"mutable","name":"shadowId","nameLocation":"2017:8:20","nodeType":"VariableDeclaration","scope":2651,"src":"2009:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2547,"name":"uint256","nodeType":"ElementaryTypeName","src":"2009:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2553,"initialValue":{"arguments":[{"id":2550,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2081:5:20","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"}},{"hexValue":"74727565","id":2551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2100:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2549,"name":"_validateOrderAndUpdateStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3356,"src":"2038:29:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Order_$1641_calldata_ptr_$_t_bool_$returns$_t_bytes32_$_t_bool_$_t_uint256_$","typeString":"function (struct Order calldata,bool) returns (bytes32,bool,uint256)"}},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2038:76:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bool_$_t_uint256_$","typeString":"tuple(bytes32,bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1940:174:20"},{"condition":{"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2129:6:20","subExpression":{"id":2554,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2546,"src":"2130:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2559,"nodeType":"IfStatement","src":"2125:49:20","trueBody":{"id":2558,"nodeType":"Block","src":"2137:37:20","statements":[{"expression":{"hexValue":"66616c7365","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2158:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2542,"id":2557,"nodeType":"Return","src":"2151:12:20"}]}},{"assignments":[2562],"declarations":[{"constant":false,"id":2562,"mutability":"mutable","name":"orderParameters","nameLocation":"2209:15:20","nodeType":"VariableDeclaration","scope":2651,"src":"2184:40:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":2561,"nodeType":"UserDefinedTypeName","pathNode":{"id":2560,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"2184:15:20"},"referencedDeclaration":1635,"src":"2184:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"id":2565,"initialValue":{"expression":{"id":2563,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"2227:5:20","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"}},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":1638,"src":"2227:16:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"nodeType":"VariableDeclarationStatement","src":"2184:59:20"},{"assignments":[2568],"declarations":[{"constant":false,"id":2568,"mutability":"mutable","name":"dispatch","nameLocation":"2269:8:20","nodeType":"VariableDeclaration","scope":2651,"src":"2253:24:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":2567,"nodeType":"UserDefinedTypeName","pathNode":{"id":2566,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":2363,"src":"2253:8:20"},"referencedDeclaration":2363,"src":"2253:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"}],"id":2575,"initialValue":{"arguments":[{"id":2570,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2299:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"hexValue":"31","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2316:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"74727565","id":2572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2319:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"66616c7365","id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2325:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_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":2569,"name":"_calculateDispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"2280:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_uint256_$_t_bool_$_t_bool_$returns$_t_struct$_Dispatch_$2363_memory_ptr_$","typeString":"function (struct OrderParameters calldata,uint256,bool,bool) pure returns (struct OrderFulfiller.Dispatch memory)"}},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2280:51:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"nodeType":"VariableDeclarationStatement","src":"2253:78:20"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2576,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2346:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"2346:24:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2382:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2374:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2578,"name":"address","nodeType":"ElementaryTypeName","src":"2374:7:20","typeDescriptions":{}}},"id":2581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2374:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2346:38:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2638,"nodeType":"Block","src":"2779:551:20","statements":[{"assignments":[2608],"declarations":[{"constant":false,"id":2608,"mutability":"mutable","name":"accumulator","nameLocation":"2806:11:20","nodeType":"VariableDeclaration","scope":2638,"src":"2793:24:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2607,"name":"bytes","nodeType":"ElementaryTypeName","src":"2793:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2613,"initialValue":{"arguments":[{"id":2611,"name":"AccumulatorDisarmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1459,"src":"2830:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2820:9:20","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2609,"name":"bytes","nodeType":"ElementaryTypeName","src":"2824:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2820:30:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2793:57:20"},{"expression":{"arguments":[{"expression":{"id":2615,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2897:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1604,"src":"2897:21:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2617,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2936:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"2936:23:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2621,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2985:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}],"id":2620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2977:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2619,"name":"address","nodeType":"ElementaryTypeName","src":"2977:7:20","typeDescriptions":{}}},"id":2622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2977:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2623,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"3008:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":1606,"src":"3008:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":2625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3052:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"id":2626,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"3071:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":1634,"src":"3071:26:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2628,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2608,"src":"3115:11:20","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":2614,"name":"_transferERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"2864:15:20","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":2629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2864:276:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2630,"nodeType":"ExpressionStatement","src":"2864:276:20"},{"expression":{"arguments":[{"id":2632,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"3198:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":2633,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"3231:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},{"id":2634,"name":"fulfillerConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3257:19:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2635,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2608,"src":"3294:11:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2631,"name":"_transferERC20AndFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"3155:25:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_struct$_Dispatch_$2363_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory,bytes32,bytes memory)"}},"id":2636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3155:164:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2637,"nodeType":"ExpressionStatement","src":"3155:164:20"}]},"id":2639,"nodeType":"IfStatement","src":"2342:988:20","trueBody":{"id":2606,"nodeType":"Block","src":"2386:387:20","statements":[{"expression":{"arguments":[{"expression":{"id":2584,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"2450:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ItemType_$1561_$","typeString":"type(enum ItemType)"}},"id":2585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":1559,"src":"2450:15:20","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$1561","typeString":"enum ItemType"}},{"expression":{"id":2586,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2483:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1604,"src":"2483:21:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2588,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2522:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"2522:23:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2592,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2571:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}],"id":2591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2563:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2590,"name":"address","nodeType":"ElementaryTypeName","src":"2563:7:20","typeDescriptions":{}}},"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2563:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2594,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2594:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":1606,"src":"2594:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":2596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2638:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"id":2597,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2657:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":1634,"src":"2657:26:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ItemType_$1561","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":2583,"name":"_transferIndividual721Or1155Item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"2400:32:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_ItemType_$1561_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (enum ItemType,address,address,address,uint256,uint256,bytes32)"}},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2400:297:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2600,"nodeType":"ExpressionStatement","src":"2400:297:20"},{"expression":{"arguments":[{"id":2602,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"2736:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":2603,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"2753:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}],"id":2601,"name":"_transferEthAndFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3025,"src":"2712:23:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_struct$_Dispatch_$2363_memory_ptr_$returns$__$","typeString":"function (struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory)"}},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2712:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2605,"nodeType":"ExpressionStatement","src":"2712:50:20"}]}},{"eventCall":{"arguments":[{"id":2641,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2544,"src":"3373:9:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2642,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"3396:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"3396:23:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2644,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3433:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3433:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2646,"name":"shadowId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"3457:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2640,"name":"OrderFulfilled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"3345:14:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,address,uint256)"}},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3345:130:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2648,"nodeType":"EmitStatement","src":"3340:135:20"},{"expression":{"hexValue":"74727565","id":2649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3493:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2542,"id":2650,"nodeType":"Return","src":"3486:11:20"}]},"id":2652,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndFulfillOrder","nameLocation":"1810:24:20","nodeType":"FunctionDefinition","parameters":{"id":2539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2536,"mutability":"mutable","name":"order","nameLocation":"1850:5:20","nodeType":"VariableDeclaration","scope":2652,"src":"1835:20:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order"},"typeName":{"id":2535,"nodeType":"UserDefinedTypeName","pathNode":{"id":2534,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":1641,"src":"1835:5:20"},"referencedDeclaration":1641,"src":"1835:5:20","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_storage_ptr","typeString":"struct Order"}},"visibility":"internal"},{"constant":false,"id":2538,"mutability":"mutable","name":"fulfillerConduitKey","nameLocation":"1865:19:20","nodeType":"VariableDeclaration","scope":2652,"src":"1857:27:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2537,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1857:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1834:51:20"},"returnParameters":{"id":2542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2652,"src":"1920:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2540,"name":"bool","nodeType":"ElementaryTypeName","src":"1920:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1919:6:20"},"scope":3157,"src":"1801:1703:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2764,"nodeType":"Block","src":"3670:1379:20","statements":[{"assignments":[2665],"declarations":[{"constant":false,"id":2665,"mutability":"mutable","name":"orderHash","nameLocation":"3688:9:20","nodeType":"VariableDeclaration","scope":2764,"src":"3680:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3680:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2666,"nodeType":"VariableDeclarationStatement","src":"3680:17:20"},{"assignments":[2668],"declarations":[{"constant":false,"id":2668,"mutability":"mutable","name":"fulfiller","nameLocation":"3715:9:20","nodeType":"VariableDeclaration","scope":2764,"src":"3707:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"3707:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2669,"nodeType":"VariableDeclarationStatement","src":"3707:17:20"},{"assignments":[2671],"declarations":[{"constant":false,"id":2671,"mutability":"mutable","name":"isFinalized","nameLocation":"3739:11:20","nodeType":"VariableDeclaration","scope":2764,"src":"3734:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2670,"name":"bool","nodeType":"ElementaryTypeName","src":"3734:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2672,"nodeType":"VariableDeclarationStatement","src":"3734:16:20"},{"id":2694,"nodeType":"Block","src":"3760:367:20","statements":[{"assignments":[2674],"declarations":[{"constant":false,"id":2674,"mutability":"mutable","name":"valid","nameLocation":"3779:5:20","nodeType":"VariableDeclaration","scope":2694,"src":"3774:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2673,"name":"bool","nodeType":"ElementaryTypeName","src":"3774:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2675,"nodeType":"VariableDeclarationStatement","src":"3774:10:20"},{"expression":{"id":2686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2676,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"3816:9:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2677,"name":"fulfiller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"3843:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2678,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2674,"src":"3870:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2679,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"3893:11:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2680,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3798:120:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2682,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"3973:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":2683,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"4001:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":2684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4027:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2681,"name":"_validateOrderAndUpdateRepayStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3542,"src":"3921:34:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_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":2685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3921:124:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"src":"3798:247:20","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2687,"nodeType":"ExpressionStatement","src":"3798:247:20"},{"condition":{"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4064:6:20","subExpression":{"id":2688,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2674,"src":"4065:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2693,"nodeType":"IfStatement","src":"4060:57:20","trueBody":{"id":2692,"nodeType":"Block","src":"4072:45:20","statements":[{"expression":{"hexValue":"66616c7365","id":2690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4097:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2663,"id":2691,"nodeType":"Return","src":"4090:12:20"}]}}]},{"assignments":[2697],"declarations":[{"constant":false,"id":2697,"mutability":"mutable","name":"dispatch","nameLocation":"4153:8:20","nodeType":"VariableDeclaration","scope":2764,"src":"4137:24:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":2696,"nodeType":"UserDefinedTypeName","pathNode":{"id":2695,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":2363,"src":"4137:8:20"},"referencedDeclaration":2363,"src":"4137:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"}],"id":2704,"initialValue":{"arguments":[{"id":2699,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4183:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":2700,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"4195:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":2701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4205:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":2702,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"4212:11:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2698,"name":"_calculateDispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"4164:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_uint256_$_t_bool_$_t_bool_$returns$_t_struct$_Dispatch_$2363_memory_ptr_$","typeString":"function (struct OrderParameters calldata,uint256,bool,bool) pure returns (struct OrderFulfiller.Dispatch memory)"}},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4164:60:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"nodeType":"VariableDeclarationStatement","src":"4137:87:20"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2705,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4239:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"4239:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4270:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4262:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2707,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:20","typeDescriptions":{}}},"id":2710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4262:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4239:33:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2732,"nodeType":"Block","src":"4350:255:20","statements":[{"assignments":[2719],"declarations":[{"constant":false,"id":2719,"mutability":"mutable","name":"accumulator","nameLocation":"4377:11:20","nodeType":"VariableDeclaration","scope":2732,"src":"4364:24:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2718,"name":"bytes","nodeType":"ElementaryTypeName","src":"4364:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2724,"initialValue":{"arguments":[{"id":2722,"name":"AccumulatorDisarmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1459,"src":"4401:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4391:9:20","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2720,"name":"bytes","nodeType":"ElementaryTypeName","src":"4395:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4391:30:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4364:57:20"},{"expression":{"arguments":[{"id":2726,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4478:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":2727,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"4506:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},{"id":2728,"name":"fulfillerConduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2657,"src":"4532:19:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2729,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2719,"src":"4569:11:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2725,"name":"_transferERC20AndFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"4435:25:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_struct$_Dispatch_$2363_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory,bytes32,bytes memory)"}},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4435:159:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2731,"nodeType":"ExpressionStatement","src":"4435:159:20"}]},"id":2733,"nodeType":"IfStatement","src":"4235:370:20","trueBody":{"id":2717,"nodeType":"Block","src":"4274:70:20","statements":[{"expression":{"arguments":[{"id":2713,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4312:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":2714,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"4324:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}],"id":2712,"name":"_transferEthAndFinalize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3025,"src":"4288:23:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_struct$_Dispatch_$2363_memory_ptr_$returns$__$","typeString":"function (struct OrderParameters calldata,struct OrderFulfiller.Dispatch memory)"}},"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4288:45:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2716,"nodeType":"ExpressionStatement","src":"4288:45:20"}]}},{"condition":{"id":2734,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"4619:11:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2755,"nodeType":"IfStatement","src":"4615:299:20","trueBody":{"id":2754,"nodeType":"Block","src":"4632:282:20","statements":[{"expression":{"arguments":[{"expression":{"id":2736,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"4696:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ItemType_$1561_$","typeString":"type(enum ItemType)"}},"id":2737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":1559,"src":"4696:15:20","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$1561","typeString":"enum ItemType"}},{"expression":{"id":2738,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4729:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1604,"src":"4729:16:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2742,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4771:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}],"id":2741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4763:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2740,"name":"address","nodeType":"ElementaryTypeName","src":"4763:7:20","typeDescriptions":{}}},"id":2743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4763:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2744,"name":"fulfiller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"4794:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2745,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"4821:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":1606,"src":"4821:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":2747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4860:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"arguments":[{"hexValue":"30","id":2750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4887:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4879:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4879:7:20","typeDescriptions":{}}},"id":2751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4879:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ItemType_$1561","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":2735,"name":"_transferIndividual721Or1155Item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"4646:32:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_ItemType_$1561_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (enum ItemType,address,address,address,uint256,uint256,bytes32)"}},"id":2752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4646:257:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2753,"nodeType":"ExpressionStatement","src":"4646:257:20"}]}},{"eventCall":{"arguments":[{"id":2757,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"4954:9:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2758,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"4977:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2759,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"4999:11:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2756,"name":"OrderRepaid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"4929:11:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (bytes32,uint256,bool)"}},"id":2760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4929:91:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2761,"nodeType":"EmitStatement","src":"4924:96:20"},{"expression":{"hexValue":"74727565","id":2762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5038:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2663,"id":2763,"nodeType":"Return","src":"5031:11:20"}]},"id":2765,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndRepayOrder","nameLocation":"3519:22:20","nodeType":"FunctionDefinition","parameters":{"id":2660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2655,"mutability":"mutable","name":"parameters","nameLocation":"3567:10:20","nodeType":"VariableDeclaration","scope":2765,"src":"3542:35:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":2654,"nodeType":"UserDefinedTypeName","pathNode":{"id":2653,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"3542:15:20"},"referencedDeclaration":1635,"src":"3542:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":2657,"mutability":"mutable","name":"fulfillerConduitKey","nameLocation":"3587:19:20","nodeType":"VariableDeclaration","scope":2765,"src":"3579:27:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2656,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3579:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2659,"mutability":"mutable","name":"payTimes","nameLocation":"3616:8:20","nodeType":"VariableDeclaration","scope":2765,"src":"3608:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2658,"name":"uint256","nodeType":"ElementaryTypeName","src":"3608:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3541:84:20"},"returnParameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2765,"src":"3660:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2661,"name":"bool","nodeType":"ElementaryTypeName","src":"3660:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3659:6:20"},"scope":3157,"src":"3510:1539:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2838,"nodeType":"Block","src":"5168:855:20","statements":[{"assignments":[2774,2776,2778],"declarations":[{"constant":false,"id":2774,"mutability":"mutable","name":"orderHash","nameLocation":"5200:9:20","nodeType":"VariableDeclaration","scope":2838,"src":"5192:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2773,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5192:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2776,"mutability":"mutable","name":"paidTimes","nameLocation":"5231:9:20","nodeType":"VariableDeclaration","scope":2838,"src":"5223:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2775,"name":"uint256","nodeType":"ElementaryTypeName","src":"5223:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2778,"mutability":"mutable","name":"valid","nameLocation":"5259:5:20","nodeType":"VariableDeclaration","scope":2838,"src":"5254:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2777,"name":"bool","nodeType":"ElementaryTypeName","src":"5254:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2783,"initialValue":{"arguments":[{"id":2780,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5325:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"hexValue":"74727565","id":2781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5349:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2779,"name":"_validateOrderAndUpdateBreakStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3655,"src":"5277:34:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_bool_$returns$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"function (struct OrderParameters calldata,bool) returns (bytes32,uint256,bool)"}},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5277:86:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"tuple(bytes32,uint256,bool)"}},"nodeType":"VariableDeclarationStatement","src":"5178:185:20"},{"condition":{"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5378:6:20","subExpression":{"id":2784,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"5379:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2789,"nodeType":"IfStatement","src":"5374:49:20","trueBody":{"id":2788,"nodeType":"Block","src":"5386:37:20","statements":[{"expression":{"hexValue":"66616c7365","id":2786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5407:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2772,"id":2787,"nodeType":"Return","src":"5400:12:20"}]}},{"expression":{"arguments":[{"expression":{"id":2791,"name":"ItemType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1561,"src":"5479:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ItemType_$1561_$","typeString":"type(enum ItemType)"}},"id":2792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ERC721","nodeType":"MemberAccess","referencedDeclaration":1559,"src":"5479:15:20","typeDescriptions":{"typeIdentifier":"t_enum$_ItemType_$1561","typeString":"enum ItemType"}},{"expression":{"id":2793,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5508:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1604,"src":"5508:16:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2797,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5546:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}],"id":2796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5538:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2795,"name":"address","nodeType":"ElementaryTypeName","src":"5538:7:20","typeDescriptions":{}}},"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5538:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2799,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5565:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"5565:18:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2801,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5597:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":1606,"src":"5597:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5632:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"arguments":[{"hexValue":"30","id":2806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5655:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5647:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2804,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5647:7:20","typeDescriptions":{}}},"id":2807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5647:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ItemType_$1561","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":2790,"name":"_transferIndividual721Or1155Item","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"5433:32:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_ItemType_$1561_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (enum ItemType,address,address,address,uint256,uint256,bytes32)"}},"id":2808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5433:234:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2809,"nodeType":"ExpressionStatement","src":"5433:234:20"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2810,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5682:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"5682:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5713:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5705:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2812,"name":"address","nodeType":"ElementaryTypeName","src":"5705:7:20","typeDescriptions":{}}},"id":2815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5705:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5682:33:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2828,"nodeType":"Block","src":"5789:114:20","statements":[{"expression":{"arguments":[{"id":2824,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5841:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":2825,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2776,"src":"5869:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2823,"name":"_transferERC20Broken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2945,"src":"5803:20:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_uint256_$returns$__$","typeString":"function (struct OrderParameters calldata,uint256)"}},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5803:89:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2827,"nodeType":"ExpressionStatement","src":"5803:89:20"}]},"id":2829,"nodeType":"IfStatement","src":"5678:225:20","trueBody":{"id":2822,"nodeType":"Block","src":"5717:66:20","statements":[{"expression":{"arguments":[{"id":2818,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5750:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"id":2819,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2776,"src":"5762:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2817,"name":"_transferEthBroken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"5731:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_OrderParameters_$1635_calldata_ptr_$_t_uint256_$returns$__$","typeString":"function (struct OrderParameters calldata,uint256)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5731:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2821,"nodeType":"ExpressionStatement","src":"5731:41:20"}]}},{"eventCall":{"arguments":[{"id":2831,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"5943:9:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2832,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5966:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"5966:18:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2830,"name":"OrderBroken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"5918:11:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5918:76:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2835,"nodeType":"EmitStatement","src":"5913:81:20"},{"expression":{"hexValue":"74727565","id":2836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6012:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2772,"id":2837,"nodeType":"Return","src":"6005:11:20"}]},"id":2839,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndBreakOrder","nameLocation":"5064:22:20","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2768,"mutability":"mutable","name":"parameters","nameLocation":"5112:10:20","nodeType":"VariableDeclaration","scope":2839,"src":"5087:35:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":2767,"nodeType":"UserDefinedTypeName","pathNode":{"id":2766,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"5087:15:20"},"referencedDeclaration":1635,"src":"5087:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"src":"5086:37:20"},"returnParameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2839,"src":"5158:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2770,"name":"bool","nodeType":"ElementaryTypeName","src":"5158:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5157:6:20"},"scope":3157,"src":"5055:968:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2892,"nodeType":"Block","src":"6149:432:20","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":2850,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"6193:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"6193:23:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6185:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":2848,"name":"address","nodeType":"ElementaryTypeName","src":"6185:8:20","stateMutability":"payable","typeDescriptions":{}}},"id":2852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6185:32:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2853,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"6231:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1626,"src":"6231:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2855,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"6257:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"6257:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6231:49:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2858,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"6283:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6231:61:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2847,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"6159:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":2860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6159:143:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2861,"nodeType":"ExpressionStatement","src":"6159:143:20"},{"assignments":[2863],"declarations":[{"constant":false,"id":2863,"mutability":"mutable","name":"toPlatform","nameLocation":"6320:10:20","nodeType":"VariableDeclaration","scope":2892,"src":"6312:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2862,"name":"uint256","nodeType":"ElementaryTypeName","src":"6312:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2871,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2864,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"6333:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1622,"src":"6333:22:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2866,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"6358:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"6358:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6333:48:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2869,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"6384:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6333:60:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6312:81:20"},{"expression":{"id":2881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2872,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"6403:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2873,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"6416:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2874,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"6429:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":2875,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"6442:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":1624,"src":"6442:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6429:34:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":2878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6466:5:20","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"6429:42:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6416:55:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6403:68:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2882,"nodeType":"ExpressionStatement","src":"6403:68:20"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":2886,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"6515:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":1612,"src":"6515:24:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6507:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":2884,"name":"address","nodeType":"ElementaryTypeName","src":"6507:8:20","stateMutability":"payable","typeDescriptions":{}}},"id":2888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6507:33:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":2889,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"6554:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2883,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"6481:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":2890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6481:93:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2891,"nodeType":"ExpressionStatement","src":"6481:93:20"}]},"id":2893,"implemented":true,"kind":"function","modifiers":[],"name":"_transferEthBroken","nameLocation":"6038:18:20","nodeType":"FunctionDefinition","parameters":{"id":2845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2842,"mutability":"mutable","name":"orderParameters","nameLocation":"6091:15:20","nodeType":"VariableDeclaration","scope":2893,"src":"6066:40:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":2841,"nodeType":"UserDefinedTypeName","pathNode":{"id":2840,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"6066:15:20"},"referencedDeclaration":1635,"src":"6066:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":2844,"mutability":"mutable","name":"paidTimes","nameLocation":"6124:9:20","nodeType":"VariableDeclaration","scope":2893,"src":"6116:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2843,"name":"uint256","nodeType":"ElementaryTypeName","src":"6116:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6056:83:20"},"returnParameters":{"id":2846,"nodeType":"ParameterList","parameters":[],"src":"6149:0:20"},"scope":3157,"src":"6029:552:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2944,"nodeType":"Block","src":"6704:380:20","statements":[{"expression":{"arguments":[{"expression":{"id":2902,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"6740:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"6740:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2904,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"6761:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"6761:18:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2906,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"6781:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1626,"src":"6781:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2908,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"6802:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"6802:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6781:39:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2911,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"6823:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6781:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2901,"name":"_performSelfERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"6714:25:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6714:119:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2914,"nodeType":"ExpressionStatement","src":"6714:119:20"},{"assignments":[2916],"declarations":[{"constant":false,"id":2916,"mutability":"mutable","name":"toPlatform","nameLocation":"6852:10:20","nodeType":"VariableDeclaration","scope":2944,"src":"6844:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2915,"name":"uint256","nodeType":"ElementaryTypeName","src":"6844:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2924,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2917,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"6865:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1622,"src":"6865:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":2919,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"6885:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"6885:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6865:38:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2922,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"6906:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6865:50:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6844:71:20"},{"expression":{"id":2934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2925,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"6925:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2926,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"6938:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2927,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"6951:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":2928,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"6964:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":1624,"src":"6964:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6951:29:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":2931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6983:5:20","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"6951:37:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6938:50:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6925:63:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2935,"nodeType":"ExpressionStatement","src":"6925:63:20"},{"expression":{"arguments":[{"expression":{"id":2937,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"7024:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"7024:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2939,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"7045:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":1612,"src":"7045:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2941,"name":"toPlatform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"7066:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2936,"name":"_performSelfERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"6998:25:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6998:79:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2943,"nodeType":"ExpressionStatement","src":"6998:79:20"}]},"id":2945,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC20Broken","nameLocation":"6596:20:20","nodeType":"FunctionDefinition","parameters":{"id":2899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2896,"mutability":"mutable","name":"parameters","nameLocation":"6651:10:20","nodeType":"VariableDeclaration","scope":2945,"src":"6626:35:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":2895,"nodeType":"UserDefinedTypeName","pathNode":{"id":2894,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"6626:15:20"},"referencedDeclaration":1635,"src":"6626:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":2898,"mutability":"mutable","name":"paidTimes","nameLocation":"6679:9:20","nodeType":"VariableDeclaration","scope":2945,"src":"6671:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2897,"name":"uint256","nodeType":"ElementaryTypeName","src":"6671:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6616:78:20"},"returnParameters":{"id":2900,"nodeType":"ParameterList","parameters":[],"src":"6704:0:20"},"scope":3157,"src":"6587:497:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3024,"nodeType":"Block","src":"7222:750:20","statements":[{"assignments":[2955],"declarations":[{"constant":false,"id":2955,"mutability":"mutable","name":"etherRemaining","nameLocation":"7240:14:20","nodeType":"VariableDeclaration","scope":3024,"src":"7232:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2954,"name":"uint256","nodeType":"ElementaryTypeName","src":"7232:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2958,"initialValue":{"expression":{"id":2956,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7257:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"7257:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7232:34:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2959,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"7281:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2960,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"7281:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2961,"name":"etherRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2955,"src":"7300:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7281:33:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2967,"nodeType":"IfStatement","src":"7277:98:20","trueBody":{"id":2966,"nodeType":"Block","src":"7316:59:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2963,"name":"InsufficientEtherSupplied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":438,"src":"7337:25:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7337:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2965,"nodeType":"RevertStatement","src":"7330:34:20"}]}},{"expression":{"arguments":[{"arguments":[{"expression":{"id":2971,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2948,"src":"7419:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"7419:23:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7411:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":2969,"name":"address","nodeType":"ElementaryTypeName","src":"7411:8:20","stateMutability":"payable","typeDescriptions":{}}},"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7411:32:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":2974,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"7457:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":2358,"src":"7457:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2968,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"7385:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":2976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7385:100:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2977,"nodeType":"ExpressionStatement","src":"7385:100:20"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":2981,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2948,"src":"7530:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":1612,"src":"7530:24:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7522:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":2979,"name":"address","nodeType":"ElementaryTypeName","src":"7522:8:20","stateMutability":"payable","typeDescriptions":{}}},"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7522:33:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":2984,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"7569:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":2360,"src":"7569:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2978,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"7496:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":2986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7496:102:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2987,"nodeType":"ExpressionStatement","src":"7496:102:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2988,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"7613:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":2362,"src":"7613:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7633:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7613:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3003,"nodeType":"IfStatement","src":"7609:162:20","trueBody":{"id":3002,"nodeType":"Block","src":"7636:135:20","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":2995,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2948,"src":"7688:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":1610,"src":"7688:22:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7680:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":2993,"name":"address","nodeType":"ElementaryTypeName","src":"7680:8:20","stateMutability":"payable","typeDescriptions":{}}},"id":2997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7680:31:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":2998,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"7729:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":2999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":2362,"src":"7729:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2992,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"7650:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7650:110:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3001,"nodeType":"ExpressionStatement","src":"7650:110:20"}]}},{"expression":{"id":3007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3004,"name":"etherRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2955,"src":"7781:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"expression":{"id":3005,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"7799:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"7799:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7781:34:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3008,"nodeType":"ExpressionStatement","src":"7781:34:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3009,"name":"etherRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2955,"src":"7830:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7847:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7830:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3023,"nodeType":"IfStatement","src":"7826:140:20","trueBody":{"id":3022,"nodeType":"Block","src":"7850:116:20","statements":[{"id":3021,"nodeType":"UncheckedBlock","src":"7864:92:20","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":3015,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7913:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7913:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7905:8:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":3013,"name":"address","nodeType":"ElementaryTypeName","src":"7905:8:20","stateMutability":"payable","typeDescriptions":{}}},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7905:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":3018,"name":"etherRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2955,"src":"7926:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3012,"name":"_transferEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"7892:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$","typeString":"function (address payable,uint256)"}},"id":3019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7892:49:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3020,"nodeType":"ExpressionStatement","src":"7892:49:20"}]}]}}]},"id":3025,"implemented":true,"kind":"function","modifiers":[],"name":"_transferEthAndFinalize","nameLocation":"7099:23:20","nodeType":"FunctionDefinition","parameters":{"id":2952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2948,"mutability":"mutable","name":"orderParameters","nameLocation":"7157:15:20","nodeType":"VariableDeclaration","scope":3025,"src":"7132:40:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":2947,"nodeType":"UserDefinedTypeName","pathNode":{"id":2946,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"7132:15:20"},"referencedDeclaration":1635,"src":"7132:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":2951,"mutability":"mutable","name":"dispatch","nameLocation":"7198:8:20","nodeType":"VariableDeclaration","scope":3025,"src":"7182:24:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":2950,"nodeType":"UserDefinedTypeName","pathNode":{"id":2949,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":2363,"src":"7182:8:20"},"referencedDeclaration":2363,"src":"7182:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"}],"src":"7122:90:20"},"returnParameters":{"id":2953,"nodeType":"ParameterList","parameters":[],"src":"7222:0:20"},"scope":3157,"src":"7090:882:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3155,"nodeType":"Block","src":"8169:1596:20","statements":[{"assignments":[3039],"declarations":[{"constant":false,"id":3039,"mutability":"mutable","name":"from","nameLocation":"8187:4:20","nodeType":"VariableDeclaration","scope":3155,"src":"8179:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3038,"name":"address","nodeType":"ElementaryTypeName","src":"8179:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3042,"initialValue":{"expression":{"id":3040,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8194:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8194:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8179:25:20"},{"assignments":[3044],"declarations":[{"constant":false,"id":3044,"mutability":"mutable","name":"token","nameLocation":"8222:5:20","nodeType":"VariableDeclaration","scope":3155,"src":"8214:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3043,"name":"address","nodeType":"ElementaryTypeName","src":"8214:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3047,"initialValue":{"expression":{"id":3045,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"8230:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"8230:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8214:35:20"},{"expression":{"arguments":[{"id":3049,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"8288:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3050,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"8307:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3051,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"8325:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":1612,"src":"8325:19:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3053,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8358:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":2360,"src":"8358:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3055,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"8391:10:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3056,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"8415:11:20","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":3048,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"8260:14:20","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":3057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8260:176:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3058,"nodeType":"ExpressionStatement","src":"8260:176:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3059,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8451:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":2362,"src":"8451:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8471:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8451:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3075,"nodeType":"IfStatement","src":"8447:252:20","trueBody":{"id":3074,"nodeType":"Block","src":"8474:225:20","statements":[{"expression":{"arguments":[{"id":3064,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"8520:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3065,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"8543:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3066,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"8565:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":1610,"src":"8565:17:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3068,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8600:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":2362,"src":"8600:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3070,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"8635:10:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3071,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"8663:11:20","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":3063,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"8488:14:20","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":3072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8488:200:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3073,"nodeType":"ExpressionStatement","src":"8488:200:20"}]}},{"assignments":[3077],"declarations":[{"constant":false,"id":3077,"mutability":"mutable","name":"left","nameLocation":"8717:4:20","nodeType":"VariableDeclaration","scope":3155,"src":"8709:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3076,"name":"uint256","nodeType":"ElementaryTypeName","src":"8709:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3086,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3078,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8724:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"payment","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"8724:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":3080,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8743:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toPlatform","nodeType":"MemberAccess","referencedDeclaration":2360,"src":"8743:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8724:38:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":3083,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8765:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toArtist","nodeType":"MemberAccess","referencedDeclaration":2362,"src":"8765:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8724:58:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8709:73:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3087,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"8796:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":3088,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8804:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":2358,"src":"8804:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8796:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3153,"nodeType":"Block","src":"9410:349:20","statements":[{"expression":{"arguments":[{"id":3130,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"9456:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3131,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"9479:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3132,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"9501:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"9501:18:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3134,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"9537:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3135,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"9559:10:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3136,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"9587:11:20","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":3129,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"9424:14:20","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":3137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9424:188:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3138,"nodeType":"ExpressionStatement","src":"9424:188:20"},{"expression":{"arguments":[{"id":3140,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"9642:11:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3139,"name":"_triggerIfArmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"9626:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":3141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9626:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3142,"nodeType":"ExpressionStatement","src":"9626:28:20"},{"expression":{"arguments":[{"id":3144,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"9695:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3145,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"9702:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"9702:18:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3147,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"9722:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":2358,"src":"9722:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3149,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"9743:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9722:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3143,"name":"_performSelfERC20Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"9669:25:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9669:79:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3152,"nodeType":"ExpressionStatement","src":"9669:79:20"}]},"id":3154,"nodeType":"IfStatement","src":"8792:967:20","trueBody":{"id":3128,"nodeType":"Block","src":"8824:580:20","statements":[{"expression":{"arguments":[{"id":3092,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"8870:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3093,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"8893:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3094,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"8915:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"8915:18:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3096,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"8951:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3097,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":2358,"src":"8951:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3098,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"8987:10:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3099,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"9015:11:20","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":3091,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"8838:14:20","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":3100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8838:202:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3101,"nodeType":"ExpressionStatement","src":"8838:202:20"},{"expression":{"id":3105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3102,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"9054:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"expression":{"id":3103,"name":"dispatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"9062:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch memory"}},"id":3104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toOfferer","nodeType":"MemberAccess","referencedDeclaration":2358,"src":"9062:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9054:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3106,"nodeType":"ExpressionStatement","src":"9054:26:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3107,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"9098:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9105:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9098:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3123,"nodeType":"IfStatement","src":"9094:258:20","trueBody":{"id":3122,"nodeType":"Block","src":"9108:244:20","statements":[{"expression":{"arguments":[{"id":3111,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"9162:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3112,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"9189:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3115,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9223:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OrderFulfiller_$3157","typeString":"contract OrderFulfiller"}],"id":3114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9215:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3113,"name":"address","nodeType":"ElementaryTypeName","src":"9215:7:20","typeDescriptions":{}}},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9215:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3117,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"9250:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3118,"name":"conduitKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"9276:10:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3119,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"9308:11:20","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":3110,"name":"_transferERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"9126:14:20","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":3120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9126:211:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3121,"nodeType":"ExpressionStatement","src":"9126:211:20"}]}},{"expression":{"arguments":[{"id":3125,"name":"accumulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"9381:11:20","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3124,"name":"_triggerIfArmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"9365:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9365:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3127,"nodeType":"ExpressionStatement","src":"9365:28:20"}]}}]},"id":3156,"implemented":true,"kind":"function","modifiers":[],"name":"_transferERC20AndFinalize","nameLocation":"7987:25:20","nodeType":"FunctionDefinition","parameters":{"id":3036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3028,"mutability":"mutable","name":"parameters","nameLocation":"8047:10:20","nodeType":"VariableDeclaration","scope":3156,"src":"8022:35:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":3027,"nodeType":"UserDefinedTypeName","pathNode":{"id":3026,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"8022:15:20"},"referencedDeclaration":1635,"src":"8022:15:20","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":3031,"mutability":"mutable","name":"dispatch","nameLocation":"8083:8:20","nodeType":"VariableDeclaration","scope":3156,"src":"8067:24:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_memory_ptr","typeString":"struct OrderFulfiller.Dispatch"},"typeName":{"id":3030,"nodeType":"UserDefinedTypeName","pathNode":{"id":3029,"name":"Dispatch","nodeType":"IdentifierPath","referencedDeclaration":2363,"src":"8067:8:20"},"referencedDeclaration":2363,"src":"8067:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Dispatch_$2363_storage_ptr","typeString":"struct OrderFulfiller.Dispatch"}},"visibility":"internal"},{"constant":false,"id":3033,"mutability":"mutable","name":"conduitKey","nameLocation":"8109:10:20","nodeType":"VariableDeclaration","scope":3156,"src":"8101:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8101:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"accumulator","nameLocation":"8142:11:20","nodeType":"VariableDeclaration","scope":3156,"src":"8129:24:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3034,"name":"bytes","nodeType":"ElementaryTypeName","src":"8129:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8012:147:20"},"returnParameters":{"id":3037,"nodeType":"ParameterList","parameters":[],"src":"8169:0:20"},"scope":3157,"src":"7978:1787:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3158,"src":"362:9405:20","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496,515,524,527,530,533,540,543,546,559,574,585,590,593]}],"src":"32:9736:20"},"id":20},"contracts/lib/OrderValidator.sol":{"ast":{"absolutePath":"contracts/lib/OrderValidator.sol","exportedSymbols":{"AccumulatorArmed":[1462],"AccumulatorDisarmed":[1459],"Accumulator_array_length_ptr":[1474],"Accumulator_array_offset":[1480],"Accumulator_array_offset_ptr":[1471],"Accumulator_conduitKey_ptr":[1465],"Accumulator_itemSizeOffsetDifference":[1477],"Accumulator_selector_ptr":[1468],"AdditionalRecipients_size":[1179],"AdvancedOrder_numerator_offset":[1131],"AlmostOneWord":[1134],"BadContractSignature_error_length":[1545],"BadContractSignature_error_signature":[1542],"BadSignatureV_error_length":[1524],"BadSignatureV_error_offset":[1521],"BadSignatureV_error_signature":[1518],"BasicOrder_additionalRecipients_data_cdPtr":[1270],"BasicOrder_additionalRecipients_head_cdPtr":[1261],"BasicOrder_additionalRecipients_head_ptr":[1330],"BasicOrder_additionalRecipients_length_cdPtr":[1267],"BasicOrder_basicOrderType_cdPtr":[1246],"BasicOrder_basicOrderType_range":[1276],"BasicOrder_common_params_size":[1170],"BasicOrder_considerationAmount_cdPtr":[1231],"BasicOrder_considerationHashesArray_ptr":[1173],"BasicOrder_considerationItem_endAmount_ptr":[1294],"BasicOrder_considerationItem_identifier_ptr":[1288],"BasicOrder_considerationItem_itemType_ptr":[1282],"BasicOrder_considerationItem_startAmount_ptr":[1291],"BasicOrder_considerationItem_token_ptr":[1285],"BasicOrder_considerationItem_typeHash_ptr":[1279],"BasicOrder_considerationToken_cdPtr":[1228],"BasicOrder_endAmount_cdPtr":[1167],"BasicOrder_fulfillerConduit_cdPtr":[1255],"BasicOrder_offerAmount_cdPtr":[1243],"BasicOrder_offerItem_endAmount_ptr":[1306],"BasicOrder_offerItem_itemType_ptr":[1300],"BasicOrder_offerItem_token_ptr":[1303],"BasicOrder_offerItem_typeHash_ptr":[1297],"BasicOrder_offerToken_cdPtr":[1240],"BasicOrder_offererConduit_cdPtr":[1252],"BasicOrder_offerer_cdPtr":[1234],"BasicOrder_order_considerationHashes_ptr":[1318],"BasicOrder_order_counter_ptr":[1327],"BasicOrder_order_offerHashes_ptr":[1315],"BasicOrder_order_offerer_ptr":[1312],"BasicOrder_order_orderType_ptr":[1321],"BasicOrder_order_startTime_ptr":[1324],"BasicOrder_order_typeHash_ptr":[1309],"BasicOrder_parameters_cdPtr":[1225],"BasicOrder_parameters_ptr":[1273],"BasicOrder_signature_cdPtr":[1264],"BasicOrder_signature_ptr":[1333],"BasicOrder_startTime_cdPtr":[1249],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[1258],"BasicOrder_zone_cdPtr":[1237],"Common_amount_offset":[1062],"Common_identifier_offset":[1059],"Common_token_offset":[1056],"Conduit_execute_ConduitTransfer_length":[1429],"Conduit_execute_ConduitTransfer_length_ptr":[1435],"Conduit_execute_ConduitTransfer_offset_ptr":[1432],"Conduit_execute_ConduitTransfer_ptr":[1426],"Conduit_execute_signature":[1417],"Conduit_execute_transferAmount_ptr":[1453],"Conduit_execute_transferFrom_ptr":[1444],"Conduit_execute_transferIdentifier_ptr":[1450],"Conduit_execute_transferItemType_ptr":[1438],"Conduit_execute_transferTo_ptr":[1447],"Conduit_execute_transferToken_ptr":[1441],"Conduit_transferItem_amount_ptr":[1498],"Conduit_transferItem_from_ptr":[1489],"Conduit_transferItem_identifier_ptr":[1495],"Conduit_transferItem_size":[1483],"Conduit_transferItem_to_ptr":[1492],"Conduit_transferItem_token_ptr":[1486],"ConsiderItem_recipient_offset":[1080],"ConsiderationItem_recipient_offset":[1077],"CostPerWord":[1392],"Create2AddressDerivation_length":[1401],"Create2AddressDerivation_ptr":[1398],"DefaultFreeMemoryPointer":[1158],"ECDSA_MaxLength":[1344],"ECDSA_signature_s_offset":[1347],"ECDSA_signature_v_offset":[1350],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[1341],"EIP1271_isValidSignature_calldata_baseLength":[1366],"EIP1271_isValidSignature_digest_negativeOffset":[1360],"EIP1271_isValidSignature_selector":[1354],"EIP1271_isValidSignature_selector_negativeOffset":[1363],"EIP1271_isValidSignature_signatureHead_negativeOffset":[1357],"EIP1271_isValidSignature_signature_head_offset":[1369],"EIP2098_allButHighestBitMask":[1337],"EIP712_DigestPayload_size":[1188],"EIP712_DomainSeparator_offset":[1182],"EIP712_OrderHash_offset":[1185],"EIP712_Order_size":[1176],"EIP_712_PREFIX":[1386],"Ecrecover_args_size":[1511],"Ecrecover_precompile":[1508],"Execution_conduit_offset":[1086],"Execution_offerer_offset":[1083],"Executor":[2186],"ExtraGasBuffer":[1389],"FiveWords":[1149],"FourWords":[1146],"FreeMemoryPointerSlot":[1152],"Fulfillment_itemIndex_offset":[1128],"InexactFraction_error_len":[1505],"InexactFraction_error_signature":[1502],"InvalidFulfillmentComponentData_error_len":[1093],"InvalidFulfillmentComponentData_error_signature":[1090],"InvalidSignature_error_length":[1538],"InvalidSignature_error_signature":[1535],"InvalidSigner_error_length":[1531],"InvalidSigner_error_signature":[1528],"MaskOverByteTwelve":[1405],"MaskOverFirstFourBytes":[1413],"MaskOverLastTwentyBytes":[1409],"MaxUint120":[1423],"MaxUint8":[1420],"MemoryExpansionCoefficient":[1395],"MissingItemAmount_error_len":[1113],"MissingItemAmount_error_signature":[1110],"NameLengthPtr":[1035],"NameWithLength":[1038],"NoContract_error_length":[1382],"NoContract_error_sig_ptr":[1376],"NoContract_error_signature":[1373],"NoContract_error_token_ptr":[1379],"NonMatchSelector_MagicModulus":[1551],"NonMatchSelector_MagicRemainder":[1554],"NumBitsAfterSelector":[1548],"OneConduitExecute_size":[1456],"OneWord":[1137],"Order":[1641],"OrderComponents":[1600],"OrderFulfilled_baseOffset":[1201],"OrderFulfilled_baseSize":[1194],"OrderFulfilled_consideration_body_offset":[1222],"OrderFulfilled_consideration_head_offset":[1219],"OrderFulfilled_consideration_length_baseOffset":[1204],"OrderFulfilled_fulfiller_offset":[1210],"OrderFulfilled_offer_body_offset":[1216],"OrderFulfilled_offer_head_offset":[1213],"OrderFulfilled_offer_length_baseOffset":[1207],"OrderFulfilled_selector":[1198],"OrderParameters":[1635],"OrderParameters_conduit_offset":[1122],"OrderParameters_consideration_head_offset":[1119],"OrderParameters_counter_offset":[1125],"OrderParameters_offer_head_offset":[1116],"OrderStatus":[1658],"OrderValidator":[3984],"Panic_arithmetic":[1106],"Panic_error_length":[1103],"Panic_error_offset":[1100],"Panic_error_signature":[1097],"ReceivedItem_CommonParams_size":[1074],"ReceivedItem_amount_offset":[1068],"ReceivedItem_recipient_offset":[1071],"ReceivedItem_size":[1065],"Shadow":[4152],"Signature_lower_v":[1514],"Slot0x80":[1161],"Slot0xA0":[1164],"ThreeWords":[1143],"TwoWords":[1140],"Version":[1041],"Version_length":[1044],"Version_shift":[1047],"ZeroSlot":[1155],"_ENTERED":[1053],"_NOT_ENTERED":[1050],"receivedItemsHash_ptr":[1191]},"id":3985,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3159,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:21"},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":3164,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3985,"sourceUnit":1659,"src":"58:114:21","symbolAliases":[{"foreign":{"id":3160,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"71:15:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3161,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"92:5:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3162,"name":"OrderComponents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"103:15:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3163,"name":"OrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"124:11:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":3165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3985,"sourceUnit":1555,"src":"174:38:21","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/Executor.sol","file":"./Executor.sol","id":3167,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3985,"sourceUnit":2187,"src":"214:42:21","symbolAliases":[{"foreign":{"id":3166,"name":"Executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"223:8:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/Shadow.sol","file":"./Shadow.sol","id":3169,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3985,"sourceUnit":4153,"src":"257:38:21","symbolAliases":[{"foreign":{"id":3168,"name":"Shadow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"266:6:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3170,"name":"Executor","nodeType":"IdentifierPath","referencedDeclaration":2186,"src":"324:8:21"},"id":3171,"nodeType":"InheritanceSpecifier","src":"324:8:21"},{"baseName":{"id":3172,"name":"Shadow","nodeType":"IdentifierPath","referencedDeclaration":4152,"src":"334:6:21"},"id":3173,"nodeType":"InheritanceSpecifier","src":"334:6:21"}],"canonicalName":"OrderValidator","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3984,"linearizedBaseContracts":[3984,4152,2186,4266,4709,4190,2340,534,632,594,1711,4038,516,497,2300,1030],"name":"OrderValidator","nameLocation":"306:14:21","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3178,"mutability":"mutable","name":"_orderStatus","nameLocation":"388:12:21","nodeType":"VariableDeclaration","scope":3984,"src":"348:52:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus)"},"typeName":{"id":3177,"keyType":{"id":3174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"356:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"348:31:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus)"},"valueType":{"id":3176,"nodeType":"UserDefinedTypeName","pathNode":{"id":3175,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"367:11:21"},"referencedDeclaration":1658,"src":"367:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}}},"visibility":"private"},{"body":{"id":3191,"nodeType":"Block","src":"515:2:21","statements":[]},"id":3192,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":3185,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"476:17:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3186,"kind":"baseConstructorSpecifier","modifierName":{"id":3184,"name":"Executor","nodeType":"IdentifierPath","referencedDeclaration":2186,"src":"467:8:21"},"nodeType":"ModifierInvocation","src":"467:27:21"},{"arguments":[{"id":3188,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3182,"src":"502:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3189,"kind":"baseConstructorSpecifier","modifierName":{"id":3187,"name":"Shadow","nodeType":"IdentifierPath","referencedDeclaration":4152,"src":"495:6:21"},"nodeType":"ModifierInvocation","src":"495:19:21"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3180,"mutability":"mutable","name":"conduitController","nameLocation":"427:17:21","nodeType":"VariableDeclaration","scope":3192,"src":"419:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3179,"name":"address","nodeType":"ElementaryTypeName","src":"419:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3182,"mutability":"mutable","name":"shadowToken","nameLocation":"454:11:21","nodeType":"VariableDeclaration","scope":3192,"src":"446:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3181,"name":"address","nodeType":"ElementaryTypeName","src":"446:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"418:48:21"},"returnParameters":{"id":3190,"nodeType":"ParameterList","parameters":[],"src":"515:0:21"},"scope":3984,"src":"407:110:21","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":3355,"nodeType":"Block","src":"761:1623:21","statements":[{"assignments":[3208],"declarations":[{"constant":false,"id":3208,"mutability":"mutable","name":"orderParameters","nameLocation":"796:15:21","nodeType":"VariableDeclaration","scope":3355,"src":"771:40:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":3207,"nodeType":"UserDefinedTypeName","pathNode":{"id":3206,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"771:15:21"},"referencedDeclaration":1635,"src":"771:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"id":3211,"initialValue":{"expression":{"id":3209,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"814:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"}},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":1638,"src":"814:16:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"nodeType":"VariableDeclarationStatement","src":"771:59:21"},{"condition":{"id":3219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"857:143:21","subExpression":{"arguments":[{"expression":{"id":3213,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"887:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":1614,"src":"887:25:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3215,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"930:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"endTime","nodeType":"MemberAccess","referencedDeclaration":1616,"src":"930:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3217,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3197,"src":"971:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3212,"name":"_verifyTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"858:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (uint256,uint256,bool) view returns (bool)"}},"id":3218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"858:142:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3229,"nodeType":"IfStatement","src":"840:225:21","trueBody":{"id":3228,"nodeType":"Block","src":"1011:54:21","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":3222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1041:1:21","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":3221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1033:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1033:7:21","typeDescriptions":{}}},"id":3223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1033:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":3224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1045:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1052:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3226,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1032:22:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bytes32,bool,int_const 0)"}},"functionReturnParameters":3205,"id":3227,"nodeType":"Return","src":"1025:29:21"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3230,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"1079:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"1079:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":3232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1105:1:21","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1079:27:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3249,"nodeType":"IfStatement","src":"1075:185:21","trueBody":{"id":3248,"nodeType":"Block","src":"1108:152:21","statements":[{"condition":{"id":3234,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3197,"src":"1126:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3239,"nodeType":"IfStatement","src":"1122:85:21","trueBody":{"id":3238,"nodeType":"Block","src":"1143:64:21","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3235,"name":"InvalidOrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"1168:22:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1168:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3237,"nodeType":"RevertStatement","src":"1161:31:21"}]}},{"expression":{"components":[{"arguments":[{"hexValue":"30","id":3242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:1:21","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":"1228:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3240,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1228:7:21","typeDescriptions":{}}},"id":3243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1228:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":3244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1240:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1247:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3246,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1227:22:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bytes32,bool,int_const 0)"}},"functionReturnParameters":3205,"id":3247,"nodeType":"Return","src":"1220:29:21"}]}},{"expression":{"id":3258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3250,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"1270:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3252,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"1312:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"arguments":[{"expression":{"id":3254,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"1353:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"1353:23:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3253,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"1341:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1341:36:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3251,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"1282:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$1635_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1282:105:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1270:117:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3259,"nodeType":"ExpressionStatement","src":"1270:117:21"},{"assignments":[3262],"declarations":[{"constant":false,"id":3262,"mutability":"mutable","name":"orderStatus","nameLocation":"1418:11:21","nodeType":"VariableDeclaration","scope":3355,"src":"1398:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":3261,"nodeType":"UserDefinedTypeName","pathNode":{"id":3260,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"1398:11:21"},"referencedDeclaration":1658,"src":"1398:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":3266,"initialValue":{"baseExpression":{"id":3263,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"1432:12:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":3265,"indexExpression":{"id":3264,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"1445:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1432:23:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage","typeString":"struct OrderStatus storage ref"}},"nodeType":"VariableDeclarationStatement","src":"1398:57:21"},{"condition":{"id":3273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1483:144:21","subExpression":{"arguments":[{"id":3268,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"1520:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3269,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"1547:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},{"hexValue":"74727565","id":3270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1576:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":3271,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3197,"src":"1598:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3267,"name":"_verifyOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"1484:18:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$","typeString":"function (bytes32,struct OrderStatus storage pointer,bool,bool) view returns (bool)"}},"id":3272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:143:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3280,"nodeType":"IfStatement","src":"1466:225:21","trueBody":{"id":3279,"nodeType":"Block","src":"1638:53:21","statements":[{"expression":{"components":[{"id":3274,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"1660:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":3275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1671:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1678:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1659:21:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bytes32,bool,int_const 0)"}},"functionReturnParameters":3205,"id":3278,"nodeType":"Return","src":"1652:28:21"}]}},{"condition":{"id":3283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1705:24:21","subExpression":{"expression":{"id":3281,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"1706:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"1706:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3293,"nodeType":"IfStatement","src":"1701:186:21","trueBody":{"id":3292,"nodeType":"Block","src":"1731:156:21","statements":[{"expression":{"arguments":[{"expression":{"id":3285,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"1779:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"1779:23:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3287,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"1820:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3288,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"1847:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"}},"id":3289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"signature","nodeType":"MemberAccess","referencedDeclaration":1640,"src":"1847:15:21","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":3284,"name":"_verifySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"1745:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,bytes memory) view"}},"id":3290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1745:131:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3291,"nodeType":"ExpressionStatement","src":"1745:131:21"}]}},{"expression":{"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3294,"name":"shadowId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3204,"src":"1897:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3296,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1932:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1932:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3298,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"1956:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1604,"src":"1956:21:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3300,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"1991:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":1606,"src":"1991:26:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3302,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"2031:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":1618,"src":"2031:24:21","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":3295,"name":"_mintToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4116,"src":"1908:10:21","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":3304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:157:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1897:168:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3306,"nodeType":"ExpressionStatement","src":"1897:168:21"},{"expression":{"id":3311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3307,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2076:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3309,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"2076:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2102:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2076:30:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3312,"nodeType":"ExpressionStatement","src":"2076:30:21"},{"expression":{"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3313,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2116:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isCancelled","nodeType":"MemberAccess","referencedDeclaration":1645,"src":"2116:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2142:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2116:31:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3318,"nodeType":"ExpressionStatement","src":"2116:31:21"},{"expression":{"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3319,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2157:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isBroken","nodeType":"MemberAccess","referencedDeclaration":1649,"src":"2157:20:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2180:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2157:28:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3324,"nodeType":"ExpressionStatement","src":"2157:28:21"},{"expression":{"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3325,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2195:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"fulfiller","nodeType":"MemberAccess","referencedDeclaration":1651,"src":"2195:21:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3328,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2219:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2219:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2195:34:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3331,"nodeType":"ExpressionStatement","src":"2195:34:21"},{"expression":{"id":3337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3332,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2239:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":1653,"src":"2239:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3335,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2263:5:21","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2263:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2239:39:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3338,"nodeType":"ExpressionStatement","src":"2239:39:21"},{"expression":{"id":3343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3339,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2288:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":1655,"src":"2288:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3342,"name":"shadowId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3204,"src":"2311:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2288:31:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3344,"nodeType":"ExpressionStatement","src":"2288:31:21"},{"expression":{"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3345,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"2329:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"2329:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2353:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2329:25:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3350,"nodeType":"ExpressionStatement","src":"2329:25:21"},{"expression":{"id":3353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3351,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"2365:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2373:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2365:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3354,"nodeType":"ExpressionStatement","src":"2365:12:21"}]},"id":3356,"implemented":true,"kind":"function","modifiers":[],"name":"_validateOrderAndUpdateStatus","nameLocation":"532:29:21","nodeType":"FunctionDefinition","parameters":{"id":3198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3195,"mutability":"mutable","name":"order","nameLocation":"586:5:21","nodeType":"VariableDeclaration","scope":3356,"src":"571:20:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order"},"typeName":{"id":3194,"nodeType":"UserDefinedTypeName","pathNode":{"id":3193,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":1641,"src":"571:5:21"},"referencedDeclaration":1641,"src":"571:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_storage_ptr","typeString":"struct Order"}},"visibility":"internal"},{"constant":false,"id":3197,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"606:15:21","nodeType":"VariableDeclaration","scope":3356,"src":"601:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3196,"name":"bool","nodeType":"ElementaryTypeName","src":"601:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"561:66:21"},"returnParameters":{"id":3205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3200,"mutability":"mutable","name":"orderHash","nameLocation":"683:9:21","nodeType":"VariableDeclaration","scope":3356,"src":"675:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3199,"name":"bytes32","nodeType":"ElementaryTypeName","src":"675:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3202,"mutability":"mutable","name":"valid","nameLocation":"711:5:21","nodeType":"VariableDeclaration","scope":3356,"src":"706:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3201,"name":"bool","nodeType":"ElementaryTypeName","src":"706:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3204,"mutability":"mutable","name":"shadowId","nameLocation":"738:8:21","nodeType":"VariableDeclaration","scope":3356,"src":"730:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3203,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"661:95:21"},"scope":3984,"src":"523:1861:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3541,"nodeType":"Block","src":"2705:1707:21","statements":[{"expression":{"id":3382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3374,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"2715:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3376,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3359,"src":"2757:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"arguments":[{"expression":{"id":3378,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3359,"src":"2793:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"2793:18:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3377,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"2781:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2781:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3375,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"2727:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$1635_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":3381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2727:95:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2715:107:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3383,"nodeType":"ExpressionStatement","src":"2715:107:21"},{"assignments":[3386],"declarations":[{"constant":false,"id":3386,"mutability":"mutable","name":"orderStatus","nameLocation":"2853:11:21","nodeType":"VariableDeclaration","scope":3541,"src":"2833:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":3385,"nodeType":"UserDefinedTypeName","pathNode":{"id":3384,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"2833:11:21"},"referencedDeclaration":1658,"src":"2833:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":3390,"initialValue":{"baseExpression":{"id":3387,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"2867:12:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":3389,"indexExpression":{"id":3388,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"2880:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2867:23:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage","typeString":"struct OrderStatus storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2833:57:21"},{"condition":{"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2904:24:21","subExpression":{"expression":{"id":3391,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"2905:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"2905:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3411,"nodeType":"IfStatement","src":"2900:201:21","trueBody":{"id":3410,"nodeType":"Block","src":"2930:171:21","statements":[{"condition":{"id":3394,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3363,"src":"2948:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3400,"nodeType":"IfStatement","src":"2944:89:21","trueBody":{"id":3399,"nodeType":"Block","src":"2965:68:21","statements":[{"errorCall":{"arguments":[{"id":3396,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3008:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3395,"name":"OrderNotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2990:17:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":3397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2990:28:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3398,"nodeType":"RevertStatement","src":"2983:35:21"}]}},{"expression":{"components":[{"id":3401,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3054:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":3404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3073:1:21","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":3403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3065:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3402,"name":"address","nodeType":"ElementaryTypeName","src":"3065:7:21","typeDescriptions":{}}},"id":3405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3065:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":3406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3077:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":3407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3084:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3053:37:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"functionReturnParameters":3373,"id":3409,"nodeType":"Return","src":"3046:44:21"}]}},{"condition":{"id":3418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3128:145:21","subExpression":{"arguments":[{"id":3413,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3165:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3414,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"3192:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},{"hexValue":"66616c7365","id":3415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3221:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":3416,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3363,"src":"3244:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3412,"name":"_verifyOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"3129:18:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$","typeString":"function (bytes32,struct OrderStatus storage pointer,bool,bool) view returns (bool)"}},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3129:144:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3429,"nodeType":"IfStatement","src":"3111:242:21","trueBody":{"id":3428,"nodeType":"Block","src":"3284:69:21","statements":[{"expression":{"components":[{"id":3419,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3306:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":3422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3325:1:21","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":3421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3317:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3420,"name":"address","nodeType":"ElementaryTypeName","src":"3317:7:21","typeDescriptions":{}}},"id":3423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3317:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":3424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3329:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":3425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3336:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3426,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3305:37:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"functionReturnParameters":3373,"id":3427,"nodeType":"Return","src":"3298:44:21"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3430,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"3367:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"3367:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3432,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"3391:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:32:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":3434,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3359,"src":"3402:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"3402:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:53:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3437,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"3424:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":3438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3435:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3424:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3367:69:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3458,"nodeType":"IfStatement","src":"3363:256:21","trueBody":{"id":3457,"nodeType":"Block","src":"3438:181:21","statements":[{"condition":{"id":3441,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3363,"src":"3456:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3447,"nodeType":"IfStatement","src":"3452:99:21","trueBody":{"id":3446,"nodeType":"Block","src":"3473:78:21","statements":[{"errorCall":{"arguments":[{"id":3443,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3526:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3442,"name":"OrderInvalidRepayParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":494,"src":"3498:27:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":3444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3498:38:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3445,"nodeType":"RevertStatement","src":"3491:45:21"}]}},{"expression":{"components":[{"id":3448,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3572:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":3451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3591:1:21","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":3450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3583:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3449,"name":"address","nodeType":"ElementaryTypeName","src":"3583:7:21","typeDescriptions":{}}},"id":3452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3583:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":3453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3595:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":3454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3602:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3455,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3571:37:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"functionReturnParameters":3373,"id":3456,"nodeType":"Return","src":"3564:44:21"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3459,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"3633:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":1653,"src":"3633:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3461,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"3657:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"3657:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":3463,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3359,"src":"3681:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":1618,"src":"3681:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3657:43:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3633:67:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3467,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3703:5:21","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3703:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3633:85:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3487,"nodeType":"IfStatement","src":"3629:257:21","trueBody":{"id":3486,"nodeType":"Block","src":"3720:166:21","statements":[{"condition":{"id":3470,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3363,"src":"3738:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3476,"nodeType":"IfStatement","src":"3734:84:21","trueBody":{"id":3475,"nodeType":"Block","src":"3755:63:21","statements":[{"errorCall":{"arguments":[{"id":3472,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3793:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3471,"name":"OrderExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"3780:12:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3780:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3474,"nodeType":"RevertStatement","src":"3773:30:21"}]}},{"expression":{"components":[{"id":3477,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"3839:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":3480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3858:1:21","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":3479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3850:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3478,"name":"address","nodeType":"ElementaryTypeName","src":"3850:7:21","typeDescriptions":{}}},"id":3481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3850:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":3482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3862:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":3483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3869:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3484,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3838:37:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$_t_bool_$_t_bool_$","typeString":"tuple(bytes32,address,bool,bool)"}},"functionReturnParameters":3373,"id":3485,"nodeType":"Return","src":"3831:44:21"}]}},{"expression":{"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3488,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"3896:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3490,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"3896:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3491,"name":"payTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"3921:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3896:33:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3493,"nodeType":"ExpressionStatement","src":"3896:33:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3494,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"3943:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"3943:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3496,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3359,"src":"3968:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"3968:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3943:43:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3530,"nodeType":"Block","src":"4127:213:21","statements":[{"expression":{"arguments":[{"expression":{"id":3516,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4171:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fulfiller","nodeType":"MemberAccess","referencedDeclaration":1651,"src":"4171:21:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3518,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4210:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":1655,"src":"4210:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3520,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4248:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":1653,"src":"4248:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3522,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4272:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"4272:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":3524,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3359,"src":"4296:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":1618,"src":"4296:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4272:43:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:67:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3515,"name":"_extendToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4138,"src":"4141:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4141:188:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3529,"nodeType":"ExpressionStatement","src":"4141:188:21"}]},"id":3531,"nodeType":"IfStatement","src":"3939:401:21","trueBody":{"id":3514,"nodeType":"Block","src":"3988:133:21","statements":[{"expression":{"id":3503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3499,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4002:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isFinalized","nodeType":"MemberAccess","referencedDeclaration":1647,"src":"4002:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4028:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4002:30:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3504,"nodeType":"ExpressionStatement","src":"4002:30:21"},{"expression":{"id":3507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3505,"name":"isFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3372,"src":"4046:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4060:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4046:18:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3508,"nodeType":"ExpressionStatement","src":"4046:18:21"},{"expression":{"arguments":[{"expression":{"id":3510,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4089:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3511,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":1655,"src":"4089:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3509,"name":"_burnToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4151,"src":"4078:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":3512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4078:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3513,"nodeType":"ExpressionStatement","src":"4078:32:21"}]}},{"expression":{"id":3534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3532,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3370,"src":"4350:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4358:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4350:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3535,"nodeType":"ExpressionStatement","src":"4350:12:21"},{"expression":{"id":3539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3536,"name":"fulfiller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"4372:9:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3537,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4384:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fulfiller","nodeType":"MemberAccess","referencedDeclaration":1651,"src":"4384:21:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4372:33:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3540,"nodeType":"ExpressionStatement","src":"4372:33:21"}]},"id":3542,"implemented":true,"kind":"function","modifiers":[],"name":"_validateOrderAndUpdateRepayStatus","nameLocation":"2399:34:21","nodeType":"FunctionDefinition","parameters":{"id":3364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3359,"mutability":"mutable","name":"parameters","nameLocation":"2468:10:21","nodeType":"VariableDeclaration","scope":3542,"src":"2443:35:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":3358,"nodeType":"UserDefinedTypeName","pathNode":{"id":3357,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"2443:15:21"},"referencedDeclaration":1635,"src":"2443:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":3361,"mutability":"mutable","name":"payTimes","nameLocation":"2496:8:21","nodeType":"VariableDeclaration","scope":3542,"src":"2488:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3360,"name":"uint256","nodeType":"ElementaryTypeName","src":"2488:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3363,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"2519:15:21","nodeType":"VariableDeclaration","scope":3542,"src":"2514:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3362,"name":"bool","nodeType":"ElementaryTypeName","src":"2514:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2433:107:21"},"returnParameters":{"id":3373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3366,"mutability":"mutable","name":"orderHash","nameLocation":"2596:9:21","nodeType":"VariableDeclaration","scope":3542,"src":"2588:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3365,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2588:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3368,"mutability":"mutable","name":"fulfiller","nameLocation":"2627:9:21","nodeType":"VariableDeclaration","scope":3542,"src":"2619:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3367,"name":"address","nodeType":"ElementaryTypeName","src":"2619:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3370,"mutability":"mutable","name":"valid","nameLocation":"2655:5:21","nodeType":"VariableDeclaration","scope":3542,"src":"2650:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3369,"name":"bool","nodeType":"ElementaryTypeName","src":"2650:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3372,"mutability":"mutable","name":"isFinalized","nameLocation":"2679:11:21","nodeType":"VariableDeclaration","scope":3542,"src":"2674:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3371,"name":"bool","nodeType":"ElementaryTypeName","src":"2674:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2574:126:21"},"scope":3984,"src":"2390:2022:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3654,"nodeType":"Block","src":"4677:1075:21","statements":[{"expression":{"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3556,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"4687:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3558,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3545,"src":"4729:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},{"arguments":[{"expression":{"id":3560,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3545,"src":"4765:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"4765:18:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3559,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"4753:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4753:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3557,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"4699:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$1635_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4699:95:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4687:107:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3565,"nodeType":"ExpressionStatement","src":"4687:107:21"},{"assignments":[3568],"declarations":[{"constant":false,"id":3568,"mutability":"mutable","name":"orderStatus","nameLocation":"4825:11:21","nodeType":"VariableDeclaration","scope":3654,"src":"4805:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":3567,"nodeType":"UserDefinedTypeName","pathNode":{"id":3566,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"4805:11:21"},"referencedDeclaration":1658,"src":"4805:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":3572,"initialValue":{"baseExpression":{"id":3569,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"4839:12:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":3571,"indexExpression":{"id":3570,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"4852:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4839:23:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage","typeString":"struct OrderStatus storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4805:57:21"},{"condition":{"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4876:24:21","subExpression":{"expression":{"id":3573,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"4877:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"4877:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3589,"nodeType":"IfStatement","src":"4872:193:21","trueBody":{"id":3588,"nodeType":"Block","src":"4902:163:21","statements":[{"condition":{"id":3576,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3547,"src":"4920:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3582,"nodeType":"IfStatement","src":"4916:89:21","trueBody":{"id":3581,"nodeType":"Block","src":"4937:68:21","statements":[{"errorCall":{"arguments":[{"id":3578,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"4980:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3577,"name":"OrderNotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"4962:17:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":3579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4962:28:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3580,"nodeType":"RevertStatement","src":"4955:35:21"}]}},{"expression":{"components":[{"id":3583,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"5026:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3584,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"5037:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":3585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5048:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3586,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5025:29:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"tuple(bytes32,uint256,bool)"}},"functionReturnParameters":3555,"id":3587,"nodeType":"Return","src":"5018:36:21"}]}},{"expression":{"id":3593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3590,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"5075:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3591,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"5087:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"5087:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5075:33:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3594,"nodeType":"ExpressionStatement","src":"5075:33:21"},{"condition":{"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5136:145:21","subExpression":{"arguments":[{"id":3596,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"5173:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3597,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"5200:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},{"hexValue":"66616c7365","id":3598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5229:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":3599,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3547,"src":"5252:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3595,"name":"_verifyOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"5137:18:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$","typeString":"function (bytes32,struct OrderStatus storage pointer,bool,bool) view returns (bool)"}},"id":3600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5137:144:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3608,"nodeType":"IfStatement","src":"5119:234:21","trueBody":{"id":3607,"nodeType":"Block","src":"5292:61:21","statements":[{"expression":{"components":[{"id":3602,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"5314:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3603,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"5325:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":3604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5336:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3605,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5313:29:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"tuple(bytes32,uint256,bool)"}},"functionReturnParameters":3555,"id":3606,"nodeType":"Return","src":"5306:36:21"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3609,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"5367:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":1653,"src":"5367:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3611,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"5391:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":3612,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3545,"src":"5403:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":1618,"src":"5403:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5391:31:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5367:55:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":3616,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5425:5:21","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"5425:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5367:73:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3632,"nodeType":"IfStatement","src":"5363:240:21","trueBody":{"id":3631,"nodeType":"Block","src":"5442:161:21","statements":[{"condition":{"id":3619,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3547,"src":"5460:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3625,"nodeType":"IfStatement","src":"5456:87:21","trueBody":{"id":3624,"nodeType":"Block","src":"5477:66:21","statements":[{"errorCall":{"arguments":[{"id":3621,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"5518:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3620,"name":"OrderNotExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":490,"src":"5502:15:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5502:26:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3623,"nodeType":"RevertStatement","src":"5495:33:21"}]}},{"expression":{"components":[{"id":3626,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"5564:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3627,"name":"paidTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"5575:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":3628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5586:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"id":3629,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5563:29:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$_t_bool_$","typeString":"tuple(bytes32,uint256,bool)"}},"functionReturnParameters":3555,"id":3630,"nodeType":"Return","src":"5556:36:21"}]}},{"expression":{"arguments":[{"expression":{"id":3634,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"5624:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":1655,"src":"5624:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3633,"name":"_burnToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4151,"src":"5613:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":3636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5613:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3637,"nodeType":"ExpressionStatement","src":"5613:32:21"},{"expression":{"id":3642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3638,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"5656:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isFinalized","nodeType":"MemberAccess","referencedDeclaration":1647,"src":"5656:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5682:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5656:30:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3643,"nodeType":"ExpressionStatement","src":"5656:30:21"},{"expression":{"id":3648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3644,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"5696:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isBroken","nodeType":"MemberAccess","referencedDeclaration":1649,"src":"5696:20:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5719:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5696:27:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3649,"nodeType":"ExpressionStatement","src":"5696:27:21"},{"expression":{"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3650,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"5733:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5741:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5733:12:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3653,"nodeType":"ExpressionStatement","src":"5733:12:21"}]},"id":3655,"implemented":true,"kind":"function","modifiers":[],"name":"_validateOrderAndUpdateBreakStatus","nameLocation":"4427:34:21","nodeType":"FunctionDefinition","parameters":{"id":3548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3545,"mutability":"mutable","name":"parameters","nameLocation":"4496:10:21","nodeType":"VariableDeclaration","scope":3655,"src":"4471:35:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":3544,"nodeType":"UserDefinedTypeName","pathNode":{"id":3543,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"4471:15:21"},"referencedDeclaration":1635,"src":"4471:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"},{"constant":false,"id":3547,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"4521:15:21","nodeType":"VariableDeclaration","scope":3655,"src":"4516:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3546,"name":"bool","nodeType":"ElementaryTypeName","src":"4516:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4461:81:21"},"returnParameters":{"id":3555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3550,"mutability":"mutable","name":"orderHash","nameLocation":"4598:9:21","nodeType":"VariableDeclaration","scope":3655,"src":"4590:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4590:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3552,"mutability":"mutable","name":"paidTimes","nameLocation":"4629:9:21","nodeType":"VariableDeclaration","scope":3655,"src":"4621:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3551,"name":"uint256","nodeType":"ElementaryTypeName","src":"4621:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3554,"mutability":"mutable","name":"valid","nameLocation":"4657:5:21","nodeType":"VariableDeclaration","scope":3655,"src":"4652:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3553,"name":"bool","nodeType":"ElementaryTypeName","src":"4652:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4576:96:21"},"scope":3984,"src":"4418:1334:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3792,"nodeType":"Block","src":"5864:2489:21","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3664,"name":"_assertNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"5940:19:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5940:21:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3666,"nodeType":"ExpressionStatement","src":"5940:21:21"},{"assignments":[3669],"declarations":[{"constant":false,"id":3669,"mutability":"mutable","name":"orderStatus","nameLocation":"6042:11:21","nodeType":"VariableDeclaration","scope":3792,"src":"6022:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":3668,"nodeType":"UserDefinedTypeName","pathNode":{"id":3667,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"6022:11:21"},"referencedDeclaration":1658,"src":"6022:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":3670,"nodeType":"VariableDeclarationStatement","src":"6022:31:21"},{"assignments":[3672],"declarations":[{"constant":false,"id":3672,"mutability":"mutable","name":"offerer","nameLocation":"6071:7:21","nodeType":"VariableDeclaration","scope":3792,"src":"6063:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3671,"name":"address","nodeType":"ElementaryTypeName","src":"6063:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3673,"nodeType":"VariableDeclarationStatement","src":"6063:15:21"},{"id":3787,"nodeType":"UncheckedBlock","src":"6161:2079:21","statements":[{"assignments":[3675],"declarations":[{"constant":false,"id":3675,"mutability":"mutable","name":"totalOrders","nameLocation":"6272:11:21","nodeType":"VariableDeclaration","scope":3787,"src":"6264:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3674,"name":"uint256","nodeType":"ElementaryTypeName","src":"6264:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3678,"initialValue":{"expression":{"id":3676,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3659,"src":"6286:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents calldata[] calldata"}},"id":3677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6286:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6264:35:21"},{"body":{"id":3785,"nodeType":"Block","src":"6393:1837:21","statements":[{"assignments":[3688],"declarations":[{"constant":false,"id":3688,"mutability":"mutable","name":"order","nameLocation":"6475:5:21","nodeType":"VariableDeclaration","scope":3785,"src":"6450:30:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents"},"typeName":{"id":3687,"nodeType":"UserDefinedTypeName","pathNode":{"id":3686,"name":"OrderComponents","nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"6450:15:21"},"referencedDeclaration":1600,"src":"6450:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_storage_ptr","typeString":"struct OrderComponents"}},"visibility":"internal"}],"id":3692,"initialValue":{"baseExpression":{"id":3689,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3659,"src":"6483:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents calldata[] calldata"}},"id":3691,"indexExpression":{"id":3690,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"6490:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6483:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"nodeType":"VariableDeclarationStatement","src":"6450:42:21"},{"expression":{"id":3696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3693,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"6511:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3694,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"6521:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1565,"src":"6521:13:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6511:23:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3697,"nodeType":"ExpressionStatement","src":"6511:23:21"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3698,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6557:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6557:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3700,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"6571:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6557:21:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3706,"nodeType":"IfStatement","src":"6553:93:21","trueBody":{"id":3705,"nodeType":"Block","src":"6580:66:21","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3702,"name":"InvalidCanceller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"6609:16:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6609:18:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3704,"nodeType":"RevertStatement","src":"6602:25:21"}]}},{"assignments":[3708],"declarations":[{"constant":false,"id":3708,"mutability":"mutable","name":"orderHash","nameLocation":"6753:9:21","nodeType":"VariableDeclaration","scope":3785,"src":"6745:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6745:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3748,"initialValue":{"arguments":[{"arguments":[{"id":3711,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"6844:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3712,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"6877:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1567,"src":"6877:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3714,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"6914:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":1569,"src":"6914:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3716,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"6956:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1571,"src":"6956:14:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3718,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"6996:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":1573,"src":"6996:12:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3720,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7034:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":1575,"src":"7034:14:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3722,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7074:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":1577,"src":"7074:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3724,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7115:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"endTime","nodeType":"MemberAccess","referencedDeclaration":1579,"src":"7115:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3726,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7154:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":1581,"src":"7154:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3728,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7194:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1583,"src":"7194:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3730,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7233:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1585,"src":"7233:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3732,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7271:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":1587,"src":"7271:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3734,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7308:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1589,"src":"7308:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3736,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7347:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":1591,"src":"7347:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3738,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7382:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawFee","nodeType":"MemberAccess","referencedDeclaration":1593,"src":"7382:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3740,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7425:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":1595,"src":"7425:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3742,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7461:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":1597,"src":"7461:16:21","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":3710,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"6803:15:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OrderParameters_$1635_storage_ptr_$","typeString":"type(struct OrderParameters storage pointer)"}},"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6803:696:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_memory_ptr","typeString":"struct OrderParameters memory"}},{"expression":{"id":3745,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"7521:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_calldata_ptr","typeString":"struct OrderComponents calldata"}},"id":3746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"counter","nodeType":"MemberAccess","referencedDeclaration":1599,"src":"7521:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_memory_ptr","typeString":"struct OrderParameters memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3709,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"6765:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$1635_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":3747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6765:787:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6745:807:21"},{"expression":{"id":3753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3749,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3669,"src":"7646:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3750,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"7660:12:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":3752,"indexExpression":{"id":3751,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"7673:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7660:23:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage","typeString":"struct OrderStatus storage ref"}},"src":"7646:37:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3754,"nodeType":"ExpressionStatement","src":"7646:37:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3755,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3669,"src":"7706:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":1653,"src":"7706:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7730:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7706:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3764,"nodeType":"IfStatement","src":"7702:109:21","trueBody":{"id":3763,"nodeType":"Block","src":"7733:78:21","statements":[{"errorCall":{"arguments":[{"id":3760,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"7782:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3759,"name":"OrderAlreadyStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"7762:19:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":3761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7762:30:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3762,"nodeType":"RevertStatement","src":"7755:37:21"}]}},{"expression":{"id":3769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3765,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3669,"src":"7900:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"7900:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7926:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"7900:31:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3770,"nodeType":"ExpressionStatement","src":"7900:31:21"},{"expression":{"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3771,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3669,"src":"7949:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isCancelled","nodeType":"MemberAccess","referencedDeclaration":1645,"src":"7949:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7975:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7949:30:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3776,"nodeType":"ExpressionStatement","src":"7949:30:21"},{"eventCall":{"arguments":[{"id":3778,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"8097:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3779,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"8108:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3777,"name":"OrderCancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":377,"src":"8082:14:21","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8082:34:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3781,"nodeType":"EmitStatement","src":"8077:39:21"},{"expression":{"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8212:3:21","subExpression":{"id":3782,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"8214:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3784,"nodeType":"ExpressionStatement","src":"8212:3:21"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3683,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"6374:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3684,"name":"totalOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3675,"src":"6378:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6374:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3786,"initializationExpression":{"assignments":[3680],"declarations":[{"constant":false,"id":3680,"mutability":"mutable","name":"i","nameLocation":"6367:1:21","nodeType":"VariableDeclaration","scope":3786,"src":"6359:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3679,"name":"uint256","nodeType":"ElementaryTypeName","src":"6359:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3682,"initialValue":{"hexValue":"30","id":3681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6371:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6359:13:21"},"nodeType":"ForStatement","src":"6354:1876:21"}]},{"expression":{"id":3790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3788,"name":"cancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3662,"src":"8330:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8342:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8330:16:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3791,"nodeType":"ExpressionStatement","src":"8330:16:21"}]},"id":3793,"implemented":true,"kind":"function","modifiers":[],"name":"_cancel","nameLocation":"5767:7:21","nodeType":"FunctionDefinition","parameters":{"id":3660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3659,"mutability":"mutable","name":"orders","nameLocation":"5802:6:21","nodeType":"VariableDeclaration","scope":3793,"src":"5775:33:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr","typeString":"struct OrderComponents[]"},"typeName":{"baseType":{"id":3657,"nodeType":"UserDefinedTypeName","pathNode":{"id":3656,"name":"OrderComponents","nodeType":"IdentifierPath","referencedDeclaration":1600,"src":"5775:15:21"},"referencedDeclaration":1600,"src":"5775:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderComponents_$1600_storage_ptr","typeString":"struct OrderComponents"}},"id":3658,"nodeType":"ArrayTypeName","src":"5775:17:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OrderComponents_$1600_storage_$dyn_storage_ptr","typeString":"struct OrderComponents[]"}},"visibility":"internal"}],"src":"5774:35:21"},"returnParameters":{"id":3663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3662,"mutability":"mutable","name":"cancelled","nameLocation":"5849:9:21","nodeType":"VariableDeclaration","scope":3793,"src":"5844:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3661,"name":"bool","nodeType":"ElementaryTypeName","src":"5844:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5843:16:21"},"scope":3984,"src":"5758:2595:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3935,"nodeType":"Block","src":"8457:3280:21","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3802,"name":"_assertNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"8533:19:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8533:21:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3804,"nodeType":"ExpressionStatement","src":"8533:21:21"},{"assignments":[3807],"declarations":[{"constant":false,"id":3807,"mutability":"mutable","name":"orderStatus","nameLocation":"8635:11:21","nodeType":"VariableDeclaration","scope":3935,"src":"8615:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":3806,"nodeType":"UserDefinedTypeName","pathNode":{"id":3805,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"8615:11:21"},"referencedDeclaration":1658,"src":"8615:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":3808,"nodeType":"VariableDeclarationStatement","src":"8615:31:21"},{"assignments":[3810],"declarations":[{"constant":false,"id":3810,"mutability":"mutable","name":"orderHash","nameLocation":"8664:9:21","nodeType":"VariableDeclaration","scope":3935,"src":"8656:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3809,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8656:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3811,"nodeType":"VariableDeclarationStatement","src":"8656:17:21"},{"assignments":[3813],"declarations":[{"constant":false,"id":3813,"mutability":"mutable","name":"offerer","nameLocation":"8691:7:21","nodeType":"VariableDeclaration","scope":3935,"src":"8683:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3812,"name":"address","nodeType":"ElementaryTypeName","src":"8683:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3814,"nodeType":"VariableDeclarationStatement","src":"8683:15:21"},{"id":3930,"nodeType":"UncheckedBlock","src":"8781:2843:21","statements":[{"assignments":[3816],"declarations":[{"constant":false,"id":3816,"mutability":"mutable","name":"totalOrders","nameLocation":"8892:11:21","nodeType":"VariableDeclaration","scope":3930,"src":"8884:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3815,"name":"uint256","nodeType":"ElementaryTypeName","src":"8884:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3819,"initialValue":{"expression":{"id":3817,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"8906:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order calldata[] calldata"}},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8906:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8884:35:21"},{"body":{"id":3928,"nodeType":"Block","src":"9013:2601:21","statements":[{"assignments":[3829],"declarations":[{"constant":false,"id":3829,"mutability":"mutable","name":"order","nameLocation":"9085:5:21","nodeType":"VariableDeclaration","scope":3928,"src":"9070:20:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order"},"typeName":{"id":3828,"nodeType":"UserDefinedTypeName","pathNode":{"id":3827,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":1641,"src":"9070:5:21"},"referencedDeclaration":1641,"src":"9070:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_storage_ptr","typeString":"struct Order"}},"visibility":"internal"}],"id":3833,"initialValue":{"baseExpression":{"id":3830,"name":"orders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"9093:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order calldata[] calldata"}},"id":3832,"indexExpression":{"id":3831,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"9100:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9093:9:21","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"}},"nodeType":"VariableDeclarationStatement","src":"9070:32:21"},{"assignments":[3836],"declarations":[{"constant":false,"id":3836,"mutability":"mutable","name":"orderParameters","nameLocation":"9196:15:21","nodeType":"VariableDeclaration","scope":3928,"src":"9171:40:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters"},"typeName":{"id":3835,"nodeType":"UserDefinedTypeName","pathNode":{"id":3834,"name":"OrderParameters","nodeType":"IdentifierPath","referencedDeclaration":1635,"src":"9171:15:21"},"referencedDeclaration":1635,"src":"9171:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_storage_ptr","typeString":"struct OrderParameters"}},"visibility":"internal"}],"id":3839,"initialValue":{"expression":{"id":3837,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"9214:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"}},"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":1638,"src":"9214:16:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"nodeType":"VariableDeclarationStatement","src":"9171:59:21"},{"expression":{"id":3843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3840,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"9307:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3841,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9317:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"9317:23:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9307:33:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3844,"nodeType":"ExpressionStatement","src":"9307:33:21"},{"expression":{"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3845,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3810,"src":"9439:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3848,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"9530:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3849,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9563:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1604,"src":"9563:21:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3851,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9610:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"identifier","nodeType":"MemberAccess","referencedDeclaration":1606,"src":"9610:26:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3853,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9662:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"9662:24:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3855,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9712:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"artist","nodeType":"MemberAccess","referencedDeclaration":1610,"src":"9712:22:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3857,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9760:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"platform","nodeType":"MemberAccess","referencedDeclaration":1612,"src":"9760:24:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3859,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9810:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"startTime","nodeType":"MemberAccess","referencedDeclaration":1614,"src":"9810:25:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3861,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9861:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"endTime","nodeType":"MemberAccess","referencedDeclaration":1616,"src":"9861:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3863,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9910:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"duration","nodeType":"MemberAccess","referencedDeclaration":1618,"src":"9910:24:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3865,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"9960:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"periods","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"9960:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3867,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"10009:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":1622,"src":"10009:22:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3869,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"10057:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ratio","nodeType":"MemberAccess","referencedDeclaration":1624,"src":"10057:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3871,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"10104:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"royalty","nodeType":"MemberAccess","referencedDeclaration":1626,"src":"10104:23:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3873,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"10153:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fee","nodeType":"MemberAccess","referencedDeclaration":1628,"src":"10153:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3875,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"10198:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawFee","nodeType":"MemberAccess","referencedDeclaration":1630,"src":"10198:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3877,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"10251:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":1632,"src":"10251:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3879,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"10297:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"conduitKey","nodeType":"MemberAccess","referencedDeclaration":1634,"src":"10297:26:21","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":3847,"name":"OrderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"9489:15:21","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OrderParameters_$1635_storage_ptr_$","typeString":"type(struct OrderParameters storage pointer)"}},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9489:856:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_memory_ptr","typeString":"struct OrderParameters memory"}},{"arguments":[{"expression":{"id":3883,"name":"orderParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"10379:15:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderParameters_$1635_calldata_ptr","typeString":"struct OrderParameters calldata"}},"id":3884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"offerer","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"10379:23:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3882,"name":"_getCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"10367:11:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10367:36:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OrderParameters_$1635_memory_ptr","typeString":"struct OrderParameters memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3846,"name":"_deriveOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"9451:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_OrderParameters_$1635_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct OrderParameters memory,uint256) view returns (bytes32)"}},"id":3886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9451:970:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9439:982:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3888,"nodeType":"ExpressionStatement","src":"9439:982:21"},{"expression":{"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3889,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"10515:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3890,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"10529:12:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":3892,"indexExpression":{"id":3891,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3810,"src":"10542:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10529:23:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage","typeString":"struct OrderStatus storage ref"}},"src":"10515:37:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3894,"nodeType":"ExpressionStatement","src":"10515:37:21"},{"expression":{"arguments":[{"id":3896,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3810,"src":"10687:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3897,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"10718:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},{"hexValue":"74727565","id":3898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10751:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"74727565","id":3899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10830:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3895,"name":"_verifyOrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"10647:18:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$","typeString":"function (bytes32,struct OrderStatus storage pointer,bool,bool) view returns (bool)"}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10647:253:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3901,"nodeType":"ExpressionStatement","src":"10647:253:21"},{"condition":{"id":3904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10989:24:21","subExpression":{"expression":{"id":3902,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"10990:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"10990:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3924,"nodeType":"IfStatement","src":"10985:512:21","trueBody":{"id":3923,"nodeType":"Block","src":"11015:482:21","statements":[{"expression":{"arguments":[{"id":3906,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"11108:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3907,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3810,"src":"11117:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3908,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"11128:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_calldata_ptr","typeString":"struct Order calldata"}},"id":3909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"signature","nodeType":"MemberAccess","referencedDeclaration":1640,"src":"11128:15:21","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":3905,"name":"_verifySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"11091:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,bytes memory) view"}},"id":3910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11091:53:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3911,"nodeType":"ExpressionStatement","src":"11091:53:21"},{"expression":{"id":3916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3912,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"11238:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"11238:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11264:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11238:30:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3917,"nodeType":"ExpressionStatement","src":"11238:30:21"},{"eventCall":{"arguments":[{"id":3919,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3810,"src":"11414:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3920,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"11449:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3918,"name":"OrderValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"11374:14:21","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11374:104:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3922,"nodeType":"EmitStatement","src":"11369:109:21"}]}},{"expression":{"id":3926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11596:3:21","subExpression":{"id":3925,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"11598:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3927,"nodeType":"ExpressionStatement","src":"11596:3:21"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"8994:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3825,"name":"totalOrders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3816,"src":"8998:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8994:15:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3929,"initializationExpression":{"assignments":[3821],"declarations":[{"constant":false,"id":3821,"mutability":"mutable","name":"i","nameLocation":"8987:1:21","nodeType":"VariableDeclaration","scope":3929,"src":"8979:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3820,"name":"uint256","nodeType":"ElementaryTypeName","src":"8979:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3823,"initialValue":{"hexValue":"30","id":3822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8991:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8979:13:21"},"nodeType":"ForStatement","src":"8974:2640:21"}]},{"expression":{"id":3933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3931,"name":"validated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3800,"src":"11714:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11726:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11714:16:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3934,"nodeType":"ExpressionStatement","src":"11714:16:21"}]},"id":3936,"implemented":true,"kind":"function","modifiers":[],"name":"_validate","nameLocation":"8368:9:21","nodeType":"FunctionDefinition","parameters":{"id":3798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3797,"mutability":"mutable","name":"orders","nameLocation":"8395:6:21","nodeType":"VariableDeclaration","scope":3936,"src":"8378:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Order[]"},"typeName":{"baseType":{"id":3795,"nodeType":"UserDefinedTypeName","pathNode":{"id":3794,"name":"Order","nodeType":"IdentifierPath","referencedDeclaration":1641,"src":"8378:5:21"},"referencedDeclaration":1641,"src":"8378:5:21","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$1641_storage_ptr","typeString":"struct Order"}},"id":3796,"nodeType":"ArrayTypeName","src":"8378:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Order_$1641_storage_$dyn_storage_ptr","typeString":"struct Order[]"}},"visibility":"internal"}],"src":"8377:25:21"},"returnParameters":{"id":3801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3800,"mutability":"mutable","name":"validated","nameLocation":"8442:9:21","nodeType":"VariableDeclaration","scope":3936,"src":"8437:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3799,"name":"bool","nodeType":"ElementaryTypeName","src":"8437:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8436:16:21"},"scope":3984,"src":"8359:3378:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3982,"nodeType":"Block","src":"12088:385:21","statements":[{"assignments":[3959],"declarations":[{"constant":false,"id":3959,"mutability":"mutable","name":"orderStatus","nameLocation":"12118:11:21","nodeType":"VariableDeclaration","scope":3982,"src":"12098:31:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":3958,"nodeType":"UserDefinedTypeName","pathNode":{"id":3957,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"12098:11:21"},"referencedDeclaration":1658,"src":"12098:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"}],"id":3963,"initialValue":{"baseExpression":{"id":3960,"name":"_orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"12132:12:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$1658_storage_$","typeString":"mapping(bytes32 => struct OrderStatus storage ref)"}},"id":3962,"indexExpression":{"id":3961,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"12145:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12132:23:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage","typeString":"struct OrderStatus storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12098:57:21"},{"expression":{"components":[{"expression":{"id":3964,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"12186:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isValidated","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"12186:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3966,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"12223:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isCancelled","nodeType":"MemberAccess","referencedDeclaration":1645,"src":"12223:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3968,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"12260:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isFinalized","nodeType":"MemberAccess","referencedDeclaration":1647,"src":"12260:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3970,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"12297:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isBroken","nodeType":"MemberAccess","referencedDeclaration":1649,"src":"12297:20:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3972,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"12331:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3973,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fulfiller","nodeType":"MemberAccess","referencedDeclaration":1651,"src":"12331:21:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3974,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"12366:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startedAt","nodeType":"MemberAccess","referencedDeclaration":1653,"src":"12366:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3976,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"12401:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"shadowId","nodeType":"MemberAccess","referencedDeclaration":1655,"src":"12401:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3978,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"12435:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":3979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"12435:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3980,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12172:294:21","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":3956,"id":3981,"nodeType":"Return","src":"12165:301:21"}]},"id":3983,"implemented":true,"kind":"function","modifiers":[],"name":"_getOrderStatus","nameLocation":"11752:15:21","nodeType":"FunctionDefinition","parameters":{"id":3939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3938,"mutability":"mutable","name":"orderHash","nameLocation":"11776:9:21","nodeType":"VariableDeclaration","scope":3983,"src":"11768:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3937,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11768:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11767:19:21"},"returnParameters":{"id":3956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3941,"mutability":"mutable","name":"isValidated","nameLocation":"11852:11:21","nodeType":"VariableDeclaration","scope":3983,"src":"11847:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3940,"name":"bool","nodeType":"ElementaryTypeName","src":"11847:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3943,"mutability":"mutable","name":"isCancelled","nameLocation":"11882:11:21","nodeType":"VariableDeclaration","scope":3983,"src":"11877:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3942,"name":"bool","nodeType":"ElementaryTypeName","src":"11877:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3945,"mutability":"mutable","name":"isFinalized","nameLocation":"11912:11:21","nodeType":"VariableDeclaration","scope":3983,"src":"11907:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3944,"name":"bool","nodeType":"ElementaryTypeName","src":"11907:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3947,"mutability":"mutable","name":"isBroken","nameLocation":"11942:8:21","nodeType":"VariableDeclaration","scope":3983,"src":"11937:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3946,"name":"bool","nodeType":"ElementaryTypeName","src":"11937:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3949,"mutability":"mutable","name":"fulfiller","nameLocation":"11972:9:21","nodeType":"VariableDeclaration","scope":3983,"src":"11964:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3948,"name":"address","nodeType":"ElementaryTypeName","src":"11964:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3951,"mutability":"mutable","name":"startedAt","nameLocation":"12003:9:21","nodeType":"VariableDeclaration","scope":3983,"src":"11995:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3950,"name":"uint256","nodeType":"ElementaryTypeName","src":"11995:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3953,"mutability":"mutable","name":"shadowId","nameLocation":"12034:8:21","nodeType":"VariableDeclaration","scope":3983,"src":"12026:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3952,"name":"uint256","nodeType":"ElementaryTypeName","src":"12026:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3955,"mutability":"mutable","name":"paidTimes","nameLocation":"12064:9:21","nodeType":"VariableDeclaration","scope":3983,"src":"12056:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3954,"name":"uint256","nodeType":"ElementaryTypeName","src":"12056:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11833:250:21"},"scope":3984,"src":"11743:730:21","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":3985,"src":"297:12178:21","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496,515,524,527,530,533,540,543,546,559,574,585,590,593]}],"src":"32:12444:21"},"id":21},"contracts/lib/ReentrancyGuard.sol":{"ast":{"absolutePath":"contracts/lib/ReentrancyGuard.sol","exportedSymbols":{"AccumulatorArmed":[1462],"AccumulatorDisarmed":[1459],"Accumulator_array_length_ptr":[1474],"Accumulator_array_offset":[1480],"Accumulator_array_offset_ptr":[1471],"Accumulator_conduitKey_ptr":[1465],"Accumulator_itemSizeOffsetDifference":[1477],"Accumulator_selector_ptr":[1468],"AdditionalRecipients_size":[1179],"AdvancedOrder_numerator_offset":[1131],"AlmostOneWord":[1134],"BadContractSignature_error_length":[1545],"BadContractSignature_error_signature":[1542],"BadSignatureV_error_length":[1524],"BadSignatureV_error_offset":[1521],"BadSignatureV_error_signature":[1518],"BasicOrder_additionalRecipients_data_cdPtr":[1270],"BasicOrder_additionalRecipients_head_cdPtr":[1261],"BasicOrder_additionalRecipients_head_ptr":[1330],"BasicOrder_additionalRecipients_length_cdPtr":[1267],"BasicOrder_basicOrderType_cdPtr":[1246],"BasicOrder_basicOrderType_range":[1276],"BasicOrder_common_params_size":[1170],"BasicOrder_considerationAmount_cdPtr":[1231],"BasicOrder_considerationHashesArray_ptr":[1173],"BasicOrder_considerationItem_endAmount_ptr":[1294],"BasicOrder_considerationItem_identifier_ptr":[1288],"BasicOrder_considerationItem_itemType_ptr":[1282],"BasicOrder_considerationItem_startAmount_ptr":[1291],"BasicOrder_considerationItem_token_ptr":[1285],"BasicOrder_considerationItem_typeHash_ptr":[1279],"BasicOrder_considerationToken_cdPtr":[1228],"BasicOrder_endAmount_cdPtr":[1167],"BasicOrder_fulfillerConduit_cdPtr":[1255],"BasicOrder_offerAmount_cdPtr":[1243],"BasicOrder_offerItem_endAmount_ptr":[1306],"BasicOrder_offerItem_itemType_ptr":[1300],"BasicOrder_offerItem_token_ptr":[1303],"BasicOrder_offerItem_typeHash_ptr":[1297],"BasicOrder_offerToken_cdPtr":[1240],"BasicOrder_offererConduit_cdPtr":[1252],"BasicOrder_offerer_cdPtr":[1234],"BasicOrder_order_considerationHashes_ptr":[1318],"BasicOrder_order_counter_ptr":[1327],"BasicOrder_order_offerHashes_ptr":[1315],"BasicOrder_order_offerer_ptr":[1312],"BasicOrder_order_orderType_ptr":[1321],"BasicOrder_order_startTime_ptr":[1324],"BasicOrder_order_typeHash_ptr":[1309],"BasicOrder_parameters_cdPtr":[1225],"BasicOrder_parameters_ptr":[1273],"BasicOrder_signature_cdPtr":[1264],"BasicOrder_signature_ptr":[1333],"BasicOrder_startTime_cdPtr":[1249],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[1258],"BasicOrder_zone_cdPtr":[1237],"Common_amount_offset":[1062],"Common_identifier_offset":[1059],"Common_token_offset":[1056],"Conduit_execute_ConduitTransfer_length":[1429],"Conduit_execute_ConduitTransfer_length_ptr":[1435],"Conduit_execute_ConduitTransfer_offset_ptr":[1432],"Conduit_execute_ConduitTransfer_ptr":[1426],"Conduit_execute_signature":[1417],"Conduit_execute_transferAmount_ptr":[1453],"Conduit_execute_transferFrom_ptr":[1444],"Conduit_execute_transferIdentifier_ptr":[1450],"Conduit_execute_transferItemType_ptr":[1438],"Conduit_execute_transferTo_ptr":[1447],"Conduit_execute_transferToken_ptr":[1441],"Conduit_transferItem_amount_ptr":[1498],"Conduit_transferItem_from_ptr":[1489],"Conduit_transferItem_identifier_ptr":[1495],"Conduit_transferItem_size":[1483],"Conduit_transferItem_to_ptr":[1492],"Conduit_transferItem_token_ptr":[1486],"ConsiderItem_recipient_offset":[1080],"ConsiderationItem_recipient_offset":[1077],"CostPerWord":[1392],"Create2AddressDerivation_length":[1401],"Create2AddressDerivation_ptr":[1398],"DefaultFreeMemoryPointer":[1158],"ECDSA_MaxLength":[1344],"ECDSA_signature_s_offset":[1347],"ECDSA_signature_v_offset":[1350],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[1341],"EIP1271_isValidSignature_calldata_baseLength":[1366],"EIP1271_isValidSignature_digest_negativeOffset":[1360],"EIP1271_isValidSignature_selector":[1354],"EIP1271_isValidSignature_selector_negativeOffset":[1363],"EIP1271_isValidSignature_signatureHead_negativeOffset":[1357],"EIP1271_isValidSignature_signature_head_offset":[1369],"EIP2098_allButHighestBitMask":[1337],"EIP712_DigestPayload_size":[1188],"EIP712_DomainSeparator_offset":[1182],"EIP712_OrderHash_offset":[1185],"EIP712_Order_size":[1176],"EIP_712_PREFIX":[1386],"Ecrecover_args_size":[1511],"Ecrecover_precompile":[1508],"Execution_conduit_offset":[1086],"Execution_offerer_offset":[1083],"ExtraGasBuffer":[1389],"FiveWords":[1149],"FourWords":[1146],"FreeMemoryPointerSlot":[1152],"Fulfillment_itemIndex_offset":[1128],"InexactFraction_error_len":[1505],"InexactFraction_error_signature":[1502],"InvalidFulfillmentComponentData_error_len":[1093],"InvalidFulfillmentComponentData_error_signature":[1090],"InvalidSignature_error_length":[1538],"InvalidSignature_error_signature":[1535],"InvalidSigner_error_length":[1531],"InvalidSigner_error_signature":[1528],"MaskOverByteTwelve":[1405],"MaskOverFirstFourBytes":[1413],"MaskOverLastTwentyBytes":[1409],"MaxUint120":[1423],"MaxUint8":[1420],"MemoryExpansionCoefficient":[1395],"MissingItemAmount_error_len":[1113],"MissingItemAmount_error_signature":[1110],"NameLengthPtr":[1035],"NameWithLength":[1038],"NoContract_error_length":[1382],"NoContract_error_sig_ptr":[1376],"NoContract_error_signature":[1373],"NoContract_error_token_ptr":[1379],"NonMatchSelector_MagicModulus":[1551],"NonMatchSelector_MagicRemainder":[1554],"NumBitsAfterSelector":[1548],"OneConduitExecute_size":[1456],"OneWord":[1137],"OrderFulfilled_baseOffset":[1201],"OrderFulfilled_baseSize":[1194],"OrderFulfilled_consideration_body_offset":[1222],"OrderFulfilled_consideration_head_offset":[1219],"OrderFulfilled_consideration_length_baseOffset":[1204],"OrderFulfilled_fulfiller_offset":[1210],"OrderFulfilled_offer_body_offset":[1216],"OrderFulfilled_offer_head_offset":[1213],"OrderFulfilled_offer_length_baseOffset":[1207],"OrderFulfilled_selector":[1198],"OrderParameters_conduit_offset":[1122],"OrderParameters_consideration_head_offset":[1119],"OrderParameters_counter_offset":[1125],"OrderParameters_offer_head_offset":[1116],"Panic_arithmetic":[1106],"Panic_error_length":[1103],"Panic_error_offset":[1100],"Panic_error_signature":[1097],"ReceivedItem_CommonParams_size":[1074],"ReceivedItem_amount_offset":[1068],"ReceivedItem_recipient_offset":[1071],"ReceivedItem_size":[1065],"ReentrancyErrors":[516],"ReentrancyGuard":[4038],"Signature_lower_v":[1514],"Slot0x80":[1161],"Slot0xA0":[1164],"ThreeWords":[1143],"TwoWords":[1140],"Version":[1041],"Version_length":[1044],"Version_shift":[1047],"ZeroSlot":[1155],"_ENTERED":[1053],"_NOT_ENTERED":[1050],"receivedItemsHash_ptr":[1191]},"id":4039,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3986,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:22"},{"absolutePath":"contracts/interfaces/ReentrancyErrors.sol","file":"../interfaces/ReentrancyErrors.sol","id":3988,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4039,"sourceUnit":517,"src":"58:70:22","symbolAliases":[{"foreign":{"id":3987,"name":"ReentrancyErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":516,"src":"67:16:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":3989,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4039,"sourceUnit":1555,"src":"130:38:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3991,"name":"ReentrancyErrors","nodeType":"IdentifierPath","referencedDeclaration":516,"src":"375:16:22"},"id":3992,"nodeType":"InheritanceSpecifier","src":"375:16:22"}],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":3990,"nodeType":"StructuredDocumentation","src":"170:176:22","text":" @title ReentrancyGuard\n @author 0age\n @notice ReentrancyGuard contains a storage variable and related functionality\n         for protecting against reentrancy."},"fullyImplemented":true,"id":4038,"linearizedBaseContracts":[4038,516],"name":"ReentrancyGuard","nameLocation":"356:15:22","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3994,"mutability":"mutable","name":"_reentrancyGuard","nameLocation":"469:16:22","nodeType":"VariableDeclaration","scope":4038,"src":"453:32:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3993,"name":"uint256","nodeType":"ElementaryTypeName","src":"453:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":4002,"nodeType":"Block","src":"585:111:22","statements":[{"expression":{"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3998,"name":"_reentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"658:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3999,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1050,"src":"677:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"658:31:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4001,"nodeType":"ExpressionStatement","src":"658:31:22"}]},"documentation":{"id":3995,"nodeType":"StructuredDocumentation","src":"492:74:22","text":" @dev Initialize the reentrancy guard during deployment."},"id":4003,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3996,"nodeType":"ParameterList","parameters":[],"src":"582:2:22"},"returnParameters":{"id":3997,"nodeType":"ParameterList","parameters":[],"src":"585:0:22"},"scope":4038,"src":"571:125:22","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4014,"nodeType":"Block","src":"957:177:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4007,"name":"_assertNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"1031:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1031:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4009,"nodeType":"ExpressionStatement","src":"1031:21:22"},{"expression":{"id":4012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4010,"name":"_reentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"1100:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4011,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"1119:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1100:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4013,"nodeType":"ExpressionStatement","src":"1100:27:22"}]},"documentation":{"id":4004,"nodeType":"StructuredDocumentation","src":"702:210:22","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":4015,"implemented":true,"kind":"function","modifiers":[],"name":"_setReentrancyGuard","nameLocation":"926:19:22","nodeType":"FunctionDefinition","parameters":{"id":4005,"nodeType":"ParameterList","parameters":[],"src":"945:2:22"},"returnParameters":{"id":4006,"nodeType":"ParameterList","parameters":[],"src":"957:0:22"},"scope":4038,"src":"917:217:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4023,"nodeType":"Block","src":"1274:87:22","statements":[{"expression":{"id":4021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4019,"name":"_reentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"1323:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4020,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1050,"src":"1342:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1323:31:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4022,"nodeType":"ExpressionStatement","src":"1323:31:22"}]},"documentation":{"id":4016,"nodeType":"StructuredDocumentation","src":"1140:87:22","text":" @dev Internal function to unset the reentrancy guard sentinel value."},"id":4024,"implemented":true,"kind":"function","modifiers":[],"name":"_clearReentrancyGuard","nameLocation":"1241:21:22","nodeType":"FunctionDefinition","parameters":{"id":4017,"nodeType":"ParameterList","parameters":[],"src":"1262:2:22"},"returnParameters":{"id":4018,"nodeType":"ParameterList","parameters":[],"src":"1274:0:22"},"scope":4038,"src":"1232:129:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4036,"nodeType":"Block","src":"1556:170:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4028,"name":"_reentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"1636:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4029,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1050,"src":"1656:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1636:32:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4035,"nodeType":"IfStatement","src":"1632:88:22","trueBody":{"id":4034,"nodeType":"Block","src":"1670:50:22","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4031,"name":"NoReentrantCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1691:16:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1691:18:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4033,"nodeType":"RevertStatement","src":"1684:25:22"}]}}]},"documentation":{"id":4025,"nodeType":"StructuredDocumentation","src":"1367:139:22","text":" @dev Internal view function to ensure that the sentinel value for the\nreentrancy guard is not currently set."},"id":4037,"implemented":true,"kind":"function","modifiers":[],"name":"_assertNonReentrant","nameLocation":"1520:19:22","nodeType":"FunctionDefinition","parameters":{"id":4026,"nodeType":"ParameterList","parameters":[],"src":"1539:2:22"},"returnParameters":{"id":4027,"nodeType":"ParameterList","parameters":[],"src":"1556:0:22"},"scope":4038,"src":"1511:215:22","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4039,"src":"347:1381:22","usedErrors":[515]}],"src":"32:1697:22"},"id":22},"contracts/lib/Shadow.sol":{"ast":{"absolutePath":"contracts/lib/Shadow.sol","exportedSymbols":{"IERC4907A":[4960],"IMintBurnableERC4907":[4059],"Shadow":[4152]},"id":4153,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4040,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:23"},{"absolutePath":"erc721a/contracts/extensions/IERC4907A.sol","file":"erc721a/contracts/extensions/IERC4907A.sol","id":4042,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4153,"sourceUnit":4961,"src":"58:71:23","symbolAliases":[{"foreign":{"id":4041,"name":"IERC4907A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"67:9:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IMintBurnableERC4907","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4059,"linearizedBaseContracts":[4059],"name":"IMintBurnableERC4907","nameLocation":"141:20:23","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c6c3bbe6","id":4053,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"177:4:23","nodeType":"FunctionDefinition","parameters":{"id":4049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4044,"mutability":"mutable","name":"to","nameLocation":"190:2:23","nodeType":"VariableDeclaration","scope":4053,"src":"182:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4043,"name":"address","nodeType":"ElementaryTypeName","src":"182:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4046,"mutability":"mutable","name":"tokenAddress","nameLocation":"202:12:23","nodeType":"VariableDeclaration","scope":4053,"src":"194:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4045,"name":"address","nodeType":"ElementaryTypeName","src":"194:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4048,"mutability":"mutable","name":"tokenId","nameLocation":"224:7:23","nodeType":"VariableDeclaration","scope":4053,"src":"216:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4047,"name":"uint256","nodeType":"ElementaryTypeName","src":"216:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"181:51:23"},"returnParameters":{"id":4052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4053,"src":"251:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4050,"name":"uint256","nodeType":"ElementaryTypeName","src":"251:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"250:9:23"},"scope":4059,"src":"168:92:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"42966c68","id":4058,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"274:4:23","nodeType":"FunctionDefinition","parameters":{"id":4056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4055,"mutability":"mutable","name":"tokenId","nameLocation":"287:7:23","nodeType":"VariableDeclaration","scope":4058,"src":"279:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4054,"name":"uint256","nodeType":"ElementaryTypeName","src":"279:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"278:17:23"},"returnParameters":{"id":4057,"nodeType":"ParameterList","parameters":[],"src":"304:0:23"},"scope":4059,"src":"265:40:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4153,"src":"131:176:23","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"Shadow","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4152,"linearizedBaseContracts":[4152],"name":"Shadow","nameLocation":"318:6:23","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"ffc5d97a","id":4061,"mutability":"immutable","name":"shadowToken","nameLocation":"361:11:23","nodeType":"VariableDeclaration","scope":4152,"src":"336:36:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4060,"name":"address","nodeType":"ElementaryTypeName","src":"336:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":4070,"nodeType":"Block","src":"407:37:23","statements":[{"expression":{"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4066,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"417:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4067,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"431:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"417:20:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4069,"nodeType":"ExpressionStatement","src":"417:20:23"}]},"id":4071,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4063,"mutability":"mutable","name":"_token","nameLocation":"399:6:23","nodeType":"VariableDeclaration","scope":4071,"src":"391:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4062,"name":"address","nodeType":"ElementaryTypeName","src":"391:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"390:16:23"},"returnParameters":{"id":4065,"nodeType":"ParameterList","parameters":[],"src":"407:0:23"},"scope":4152,"src":"379:65:23","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4115,"nodeType":"Block","src":"600:208:23","statements":[{"assignments":[4085],"declarations":[{"constant":false,"id":4085,"mutability":"mutable","name":"tid","nameLocation":"618:3:23","nodeType":"VariableDeclaration","scope":4115,"src":"610:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"610:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4097,"initialValue":{"arguments":[{"arguments":[{"id":4092,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"671:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_Shadow_$4152","typeString":"contract Shadow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Shadow_$4152","typeString":"contract Shadow"}],"id":4091,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"663:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4090,"name":"address","nodeType":"ElementaryTypeName","src":"663:7:23","typeDescriptions":{}}},"id":4093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"663:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4094,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4075,"src":"678:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4095,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4077,"src":"685:10:23","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":4087,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"645:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4086,"name":"IMintBurnableERC4907","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4059,"src":"624:20:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMintBurnableERC4907_$4059_$","typeString":"type(contract IMintBurnableERC4907)"}},"id":4088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"624:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMintBurnableERC4907_$4059","typeString":"contract IMintBurnableERC4907"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":4053,"src":"624:38:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) external returns (uint256)"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"624:72:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"610:86:23"},{"expression":{"arguments":[{"id":4102,"name":"tid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"737:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4103,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4073,"src":"742:2:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4106,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4079,"src":"753:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":4107,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"764:5:23","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"764:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"753:26:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"746:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4104,"name":"uint64","nodeType":"ElementaryTypeName","src":"746:6:23","typeDescriptions":{}}},"id":4110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"746:34:23","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":4099,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"716:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4098,"name":"IERC4907A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"706:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4907A_$4960_$","typeString":"type(contract IERC4907A)"}},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"706:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4907A_$4960","typeString":"contract IERC4907A"}},"id":4101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setUser","nodeType":"MemberAccess","referencedDeclaration":4943,"src":"706:30:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint64_$returns$__$","typeString":"function (uint256,address,uint64) external"}},"id":4111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"706:75:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4112,"nodeType":"ExpressionStatement","src":"706:75:23"},{"expression":{"id":4113,"name":"tid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"798:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4083,"id":4114,"nodeType":"Return","src":"791:10:23"}]},"id":4116,"implemented":true,"kind":"function","modifiers":[],"name":"_mintToken","nameLocation":"459:10:23","nodeType":"FunctionDefinition","parameters":{"id":4080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4073,"mutability":"mutable","name":"to","nameLocation":"487:2:23","nodeType":"VariableDeclaration","scope":4116,"src":"479:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4072,"name":"address","nodeType":"ElementaryTypeName","src":"479:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4075,"mutability":"mutable","name":"token","nameLocation":"507:5:23","nodeType":"VariableDeclaration","scope":4116,"src":"499:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4074,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4077,"mutability":"mutable","name":"identifier","nameLocation":"530:10:23","nodeType":"VariableDeclaration","scope":4116,"src":"522:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4076,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4079,"mutability":"mutable","name":"duration","nameLocation":"558:8:23","nodeType":"VariableDeclaration","scope":4116,"src":"550:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4078,"name":"uint256","nodeType":"ElementaryTypeName","src":"550:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"469:103:23"},"returnParameters":{"id":4083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4116,"src":"591:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4081,"name":"uint256","nodeType":"ElementaryTypeName","src":"591:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"590:9:23"},"scope":4152,"src":"450:358:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4137,"nodeType":"Block","src":"891:77:23","statements":[{"expression":{"arguments":[{"id":4129,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4120,"src":"932:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4130,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4118,"src":"941:2:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4133,"name":"expires","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"952:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"945:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4131,"name":"uint64","nodeType":"ElementaryTypeName","src":"945:6:23","typeDescriptions":{}}},"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"945:15:23","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":4126,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"911:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4125,"name":"IERC4907A","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"901:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4907A_$4960_$","typeString":"type(contract IERC4907A)"}},"id":4127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"901:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4907A_$4960","typeString":"contract IERC4907A"}},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setUser","nodeType":"MemberAccess","referencedDeclaration":4943,"src":"901:30:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint64_$returns$__$","typeString":"function (uint256,address,uint64) external"}},"id":4135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"901:60:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4136,"nodeType":"ExpressionStatement","src":"901:60:23"}]},"id":4138,"implemented":true,"kind":"function","modifiers":[],"name":"_extendToken","nameLocation":"823:12:23","nodeType":"FunctionDefinition","parameters":{"id":4123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4118,"mutability":"mutable","name":"to","nameLocation":"844:2:23","nodeType":"VariableDeclaration","scope":4138,"src":"836:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4117,"name":"address","nodeType":"ElementaryTypeName","src":"836:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4120,"mutability":"mutable","name":"tokenId","nameLocation":"856:7:23","nodeType":"VariableDeclaration","scope":4138,"src":"848:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4119,"name":"uint256","nodeType":"ElementaryTypeName","src":"848:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4122,"mutability":"mutable","name":"expires","nameLocation":"873:7:23","nodeType":"VariableDeclaration","scope":4138,"src":"865:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4121,"name":"uint256","nodeType":"ElementaryTypeName","src":"865:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"835:46:23"},"returnParameters":{"id":4124,"nodeType":"ParameterList","parameters":[],"src":"891:0:23"},"scope":4152,"src":"814:154:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4150,"nodeType":"Block","src":"1020:64:23","statements":[{"expression":{"arguments":[{"id":4147,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"1069:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4144,"name":"shadowToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"1051:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4143,"name":"IMintBurnableERC4907","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4059,"src":"1030:20:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMintBurnableERC4907_$4059_$","typeString":"type(contract IMintBurnableERC4907)"}},"id":4145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1030:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMintBurnableERC4907_$4059","typeString":"contract IMintBurnableERC4907"}},"id":4146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":4058,"src":"1030:38:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":4148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1030:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4149,"nodeType":"ExpressionStatement","src":"1030:47:23"}]},"id":4151,"implemented":true,"kind":"function","modifiers":[],"name":"_burnToken","nameLocation":"983:10:23","nodeType":"FunctionDefinition","parameters":{"id":4141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4140,"mutability":"mutable","name":"tokenId","nameLocation":"1002:7:23","nodeType":"VariableDeclaration","scope":4151,"src":"994:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4139,"name":"uint256","nodeType":"ElementaryTypeName","src":"994:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"993:17:23"},"returnParameters":{"id":4142,"nodeType":"ParameterList","parameters":[],"src":"1020:0:23"},"scope":4152,"src":"974:110:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":4153,"src":"309:777:23","usedErrors":[]}],"src":"32:1054:23"},"id":23},"contracts/lib/SignatureVerification.sol":{"ast":{"absolutePath":"contracts/lib/SignatureVerification.sol","exportedSymbols":{"AccumulatorArmed":[1462],"AccumulatorDisarmed":[1459],"Accumulator_array_length_ptr":[1474],"Accumulator_array_offset":[1480],"Accumulator_array_offset_ptr":[1471],"Accumulator_conduitKey_ptr":[1465],"Accumulator_itemSizeOffsetDifference":[1477],"Accumulator_selector_ptr":[1468],"AdditionalRecipients_size":[1179],"AdvancedOrder_numerator_offset":[1131],"AlmostOneWord":[1134],"BadContractSignature_error_length":[1545],"BadContractSignature_error_signature":[1542],"BadSignatureV_error_length":[1524],"BadSignatureV_error_offset":[1521],"BadSignatureV_error_signature":[1518],"BasicOrder_additionalRecipients_data_cdPtr":[1270],"BasicOrder_additionalRecipients_head_cdPtr":[1261],"BasicOrder_additionalRecipients_head_ptr":[1330],"BasicOrder_additionalRecipients_length_cdPtr":[1267],"BasicOrder_basicOrderType_cdPtr":[1246],"BasicOrder_basicOrderType_range":[1276],"BasicOrder_common_params_size":[1170],"BasicOrder_considerationAmount_cdPtr":[1231],"BasicOrder_considerationHashesArray_ptr":[1173],"BasicOrder_considerationItem_endAmount_ptr":[1294],"BasicOrder_considerationItem_identifier_ptr":[1288],"BasicOrder_considerationItem_itemType_ptr":[1282],"BasicOrder_considerationItem_startAmount_ptr":[1291],"BasicOrder_considerationItem_token_ptr":[1285],"BasicOrder_considerationItem_typeHash_ptr":[1279],"BasicOrder_considerationToken_cdPtr":[1228],"BasicOrder_endAmount_cdPtr":[1167],"BasicOrder_fulfillerConduit_cdPtr":[1255],"BasicOrder_offerAmount_cdPtr":[1243],"BasicOrder_offerItem_endAmount_ptr":[1306],"BasicOrder_offerItem_itemType_ptr":[1300],"BasicOrder_offerItem_token_ptr":[1303],"BasicOrder_offerItem_typeHash_ptr":[1297],"BasicOrder_offerToken_cdPtr":[1240],"BasicOrder_offererConduit_cdPtr":[1252],"BasicOrder_offerer_cdPtr":[1234],"BasicOrder_order_considerationHashes_ptr":[1318],"BasicOrder_order_counter_ptr":[1327],"BasicOrder_order_offerHashes_ptr":[1315],"BasicOrder_order_offerer_ptr":[1312],"BasicOrder_order_orderType_ptr":[1321],"BasicOrder_order_startTime_ptr":[1324],"BasicOrder_order_typeHash_ptr":[1309],"BasicOrder_parameters_cdPtr":[1225],"BasicOrder_parameters_ptr":[1273],"BasicOrder_signature_cdPtr":[1264],"BasicOrder_signature_ptr":[1333],"BasicOrder_startTime_cdPtr":[1249],"BasicOrder_totalOriginalAdditionalRecipients_cdPtr":[1258],"BasicOrder_zone_cdPtr":[1237],"Common_amount_offset":[1062],"Common_identifier_offset":[1059],"Common_token_offset":[1056],"Conduit_execute_ConduitTransfer_length":[1429],"Conduit_execute_ConduitTransfer_length_ptr":[1435],"Conduit_execute_ConduitTransfer_offset_ptr":[1432],"Conduit_execute_ConduitTransfer_ptr":[1426],"Conduit_execute_signature":[1417],"Conduit_execute_transferAmount_ptr":[1453],"Conduit_execute_transferFrom_ptr":[1444],"Conduit_execute_transferIdentifier_ptr":[1450],"Conduit_execute_transferItemType_ptr":[1438],"Conduit_execute_transferTo_ptr":[1447],"Conduit_execute_transferToken_ptr":[1441],"Conduit_transferItem_amount_ptr":[1498],"Conduit_transferItem_from_ptr":[1489],"Conduit_transferItem_identifier_ptr":[1495],"Conduit_transferItem_size":[1483],"Conduit_transferItem_to_ptr":[1492],"Conduit_transferItem_token_ptr":[1486],"ConsiderItem_recipient_offset":[1080],"ConsiderationItem_recipient_offset":[1077],"CostPerWord":[1392],"Create2AddressDerivation_length":[1401],"Create2AddressDerivation_ptr":[1398],"DefaultFreeMemoryPointer":[1158],"ECDSA_MaxLength":[1344],"ECDSA_signature_s_offset":[1347],"ECDSA_signature_v_offset":[1350],"ECDSA_twentySeventhAndTwentyEighthBytesSet":[1341],"EIP1271Interface":[509],"EIP1271_isValidSignature_calldata_baseLength":[1366],"EIP1271_isValidSignature_digest_negativeOffset":[1360],"EIP1271_isValidSignature_selector":[1354],"EIP1271_isValidSignature_selector_negativeOffset":[1363],"EIP1271_isValidSignature_signatureHead_negativeOffset":[1357],"EIP1271_isValidSignature_signature_head_offset":[1369],"EIP2098_allButHighestBitMask":[1337],"EIP712_DigestPayload_size":[1188],"EIP712_DomainSeparator_offset":[1182],"EIP712_OrderHash_offset":[1185],"EIP712_Order_size":[1176],"EIP_712_PREFIX":[1386],"Ecrecover_args_size":[1511],"Ecrecover_precompile":[1508],"Execution_conduit_offset":[1086],"Execution_offerer_offset":[1083],"ExtraGasBuffer":[1389],"FiveWords":[1149],"FourWords":[1146],"FreeMemoryPointerSlot":[1152],"Fulfillment_itemIndex_offset":[1128],"InexactFraction_error_len":[1505],"InexactFraction_error_signature":[1502],"InvalidFulfillmentComponentData_error_len":[1093],"InvalidFulfillmentComponentData_error_signature":[1090],"InvalidSignature_error_length":[1538],"InvalidSignature_error_signature":[1535],"InvalidSigner_error_length":[1531],"InvalidSigner_error_signature":[1528],"LowLevelHelpers":[2340],"MaskOverByteTwelve":[1405],"MaskOverFirstFourBytes":[1413],"MaskOverLastTwentyBytes":[1409],"MaxUint120":[1423],"MaxUint8":[1420],"MemoryExpansionCoefficient":[1395],"MissingItemAmount_error_len":[1113],"MissingItemAmount_error_signature":[1110],"NameLengthPtr":[1035],"NameWithLength":[1038],"NoContract_error_length":[1382],"NoContract_error_sig_ptr":[1376],"NoContract_error_signature":[1373],"NoContract_error_token_ptr":[1379],"NonMatchSelector_MagicModulus":[1551],"NonMatchSelector_MagicRemainder":[1554],"NumBitsAfterSelector":[1548],"OneConduitExecute_size":[1456],"OneWord":[1137],"OrderFulfilled_baseOffset":[1201],"OrderFulfilled_baseSize":[1194],"OrderFulfilled_consideration_body_offset":[1222],"OrderFulfilled_consideration_head_offset":[1219],"OrderFulfilled_consideration_length_baseOffset":[1204],"OrderFulfilled_fulfiller_offset":[1210],"OrderFulfilled_offer_body_offset":[1216],"OrderFulfilled_offer_head_offset":[1213],"OrderFulfilled_offer_length_baseOffset":[1207],"OrderFulfilled_selector":[1198],"OrderParameters_conduit_offset":[1122],"OrderParameters_consideration_head_offset":[1119],"OrderParameters_counter_offset":[1125],"OrderParameters_offer_head_offset":[1116],"Panic_arithmetic":[1106],"Panic_error_length":[1103],"Panic_error_offset":[1100],"Panic_error_signature":[1097],"ReceivedItem_CommonParams_size":[1074],"ReceivedItem_amount_offset":[1068],"ReceivedItem_recipient_offset":[1071],"ReceivedItem_size":[1065],"SignatureVerification":[4190],"SignatureVerificationErrors":[534],"Signature_lower_v":[1514],"Slot0x80":[1161],"Slot0xA0":[1164],"ThreeWords":[1143],"TwoWords":[1140],"Version":[1041],"Version_length":[1044],"Version_shift":[1047],"ZeroSlot":[1155],"_ENTERED":[1053],"_NOT_ENTERED":[1050],"receivedItemsHash_ptr":[1191]},"id":4191,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4154,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:24"},{"absolutePath":"contracts/interfaces/EIP1271Interface.sol","file":"../interfaces/EIP1271Interface.sol","id":4156,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4191,"sourceUnit":510,"src":"58:70:24","symbolAliases":[{"foreign":{"id":4155,"name":"EIP1271Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":509,"src":"67:16:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/SignatureVerificationErrors.sol","file":"../interfaces/SignatureVerificationErrors.sol","id":4158,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4191,"sourceUnit":535,"src":"130:96:24","symbolAliases":[{"foreign":{"id":4157,"name":"SignatureVerificationErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"143:27:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/LowLevelHelpers.sol","file":"./LowLevelHelpers.sol","id":4160,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4191,"sourceUnit":2341,"src":"228:56:24","symbolAliases":[{"foreign":{"id":4159,"name":"LowLevelHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"237:15:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/ConsiderationConstants.sol","file":"./ConsiderationConstants.sol","id":4161,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4191,"sourceUnit":1555,"src":"286:38:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4163,"name":"SignatureVerificationErrors","nodeType":"IdentifierPath","referencedDeclaration":534,"src":"490:27:24"},"id":4164,"nodeType":"InheritanceSpecifier","src":"490:27:24"},{"baseName":{"id":4165,"name":"LowLevelHelpers","nodeType":"IdentifierPath","referencedDeclaration":2340,"src":"519:15:24"},"id":4166,"nodeType":"InheritanceSpecifier","src":"519:15:24"}],"canonicalName":"SignatureVerification","contractDependencies":[],"contractKind":"contract","documentation":{"id":4162,"nodeType":"StructuredDocumentation","src":"326:129:24","text":" @title SignatureVerification\n @author 0age\n @notice SignatureVerification contains logic for verifying signatures."},"fullyImplemented":true,"id":4190,"linearizedBaseContracts":[4190,2340,534],"name":"SignatureVerification","nameLocation":"465:21:24","nodeType":"ContractDefinition","nodes":[{"body":{"id":4188,"nodeType":"Block","src":"1197:9788:24","statements":[{"assignments":[4177],"declarations":[{"constant":false,"id":4177,"mutability":"mutable","name":"success","nameLocation":"1289:7:24","nodeType":"VariableDeclaration","scope":4188,"src":"1284:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4176,"name":"bool","nodeType":"ElementaryTypeName","src":"1284:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4178,"nodeType":"VariableDeclarationStatement","src":"1284:12:24"},{"AST":{"nodeType":"YulBlock","src":"1395:9161:24","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1481:1:24","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1484:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1474:6:24"},"nodeType":"YulFunctionCall","src":"1474:12:24"},"nodeType":"YulExpressionStatement","src":"1474:12:24"},{"nodeType":"YulVariableDeclaration","src":"1556:5:24","variables":[{"name":"v","nodeType":"YulTypedName","src":"1560:1:24","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1623:39:24","value":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"1652:9:24"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1646:5:24"},"nodeType":"YulFunctionCall","src":"1646:16:24"},"variables":[{"name":"signatureLength","nodeType":"YulTypedName","src":"1627:15:24","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1909:53:24","value":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"1943:9:24"},{"name":"OneWord","nodeType":"YulIdentifier","src":"1954:7:24"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1939:3:24"},"nodeType":"YulFunctionCall","src":"1939:23:24"},"variables":[{"name":"wordBeforeSignaturePtr","nodeType":"YulTypedName","src":"1913:22:24","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2057:62:24","value":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"2096:22:24"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2090:5:24"},"nodeType":"YulFunctionCall","src":"2090:29:24"},"variables":[{"name":"cachedWordBeforeSignature","nodeType":"YulTypedName","src":"2061:25:24","type":""}]},{"nodeType":"YulBlock","src":"2214:4296:24","statements":[{"nodeType":"YulVariableDeclaration","src":"2527:52:24","value":{"arguments":[{"name":"ECDSA_MaxLength","nodeType":"YulIdentifier","src":"2546:15:24"},{"name":"signatureLength","nodeType":"YulIdentifier","src":"2563:15:24"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2542:3:24"},"nodeType":"YulFunctionCall","src":"2542:37:24"},"variables":[{"name":"lenDiff","nodeType":"YulTypedName","src":"2531:7:24","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2655:19:24","variables":[{"name":"recoveredSigner","nodeType":"YulTypedName","src":"2659:15:24","type":""}]},{"body":{"nodeType":"YulBlock","src":"2828:3356:24","statements":[{"nodeType":"YulVariableDeclaration","src":"2903:119:24","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2964:9:24"},{"name":"ECDSA_signature_s_offset","nodeType":"YulIdentifier","src":"2975:24:24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2960:3:24"},"nodeType":"YulFunctionCall","src":"2960:40:24"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2929:5:24"},"nodeType":"YulFunctionCall","src":"2929:93:24"},"variables":[{"name":"originalSignatureS","nodeType":"YulTypedName","src":"2907:18:24","type":""}]},{"nodeType":"YulAssignment","src":"3324:131:24","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3359:1:24","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3396:9:24"},{"name":"ECDSA_signature_v_offset","nodeType":"YulIdentifier","src":"3407:24:24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3392:3:24"},"nodeType":"YulFunctionCall","src":"3392:40:24"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3386:5:24"},"nodeType":"YulFunctionCall","src":"3386:47:24"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"3329:4:24"},"nodeType":"YulFunctionCall","src":"3329:126:24"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3324:1:24"}]},{"body":{"nodeType":"YulBlock","src":"3562:809:24","statements":[{"nodeType":"YulAssignment","src":"3702:144:24","value":{"arguments":[{"arguments":[{"name":"MaxUint8","nodeType":"YulIdentifier","src":"3744:8:24"},{"name":"originalSignatureS","nodeType":"YulIdentifier","src":"3754:18:24"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3740:3:24"},"nodeType":"YulFunctionCall","src":"3740:33:24"},{"name":"Signature_lower_v","nodeType":"YulIdentifier","src":"3803:17:24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3707:3:24"},"nodeType":"YulFunctionCall","src":"3707:139:24"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3702:1:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4110:9:24"},{"name":"ECDSA_signature_s_offset","nodeType":"YulIdentifier","src":"4121:24:24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4106:3:24"},"nodeType":"YulFunctionCall","src":"4106:40:24"},{"arguments":[{"name":"originalSignatureS","nodeType":"YulIdentifier","src":"4213:18:24"},{"name":"EIP2098_allButHighestBitMask","nodeType":"YulIdentifier","src":"4265:28:24"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4176:3:24"},"nodeType":"YulFunctionCall","src":"4176:147:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4070:6:24"},"nodeType":"YulFunctionCall","src":"4070:279:24"},"nodeType":"YulExpressionStatement","src":"4070:279:24"}]},"condition":{"name":"lenDiff","nodeType":"YulIdentifier","src":"3554:7:24"},"nodeType":"YulIf","src":"3551:820:24"},{"expression":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4545:9:24"},{"name":"v","nodeType":"YulIdentifier","src":"4556:1:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4538:6:24"},"nodeType":"YulFunctionCall","src":"4538:20:24"},"nodeType":"YulExpressionStatement","src":"4538:20:24"},{"expression":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"4744:22:24"},{"name":"digest","nodeType":"YulIdentifier","src":"4768:6:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4737:6:24"},"nodeType":"YulFunctionCall","src":"4737:38:24"},"nodeType":"YulExpressionStatement","src":"4737:38:24"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"5088:3:24"},"nodeType":"YulFunctionCall","src":"5088:5:24"},{"name":"Ecrecover_precompile","nodeType":"YulIdentifier","src":"5123:20:24"},{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"5203:22:24"},{"name":"Ecrecover_args_size","nodeType":"YulIdentifier","src":"5284:19:24"},{"kind":"number","nodeType":"YulLiteral","src":"5365:1:24","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"5430:7:24"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"5048:10:24"},"nodeType":"YulFunctionCall","src":"5048:451:24"}],"functionName":{"name":"pop","nodeType":"YulIdentifier","src":"5019:3:24"},"nodeType":"YulFunctionCall","src":"5019:502:24"},"nodeType":"YulExpressionStatement","src":"5019:502:24"},{"expression":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"5611:22:24"},{"name":"cachedWordBeforeSignature","nodeType":"YulIdentifier","src":"5635:25:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5604:6:24"},"nodeType":"YulFunctionCall","src":"5604:57:24"},"nodeType":"YulExpressionStatement","src":"5604:57:24"},{"expression":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"5746:9:24"},{"name":"signatureLength","nodeType":"YulIdentifier","src":"5757:15:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5739:6:24"},"nodeType":"YulFunctionCall","src":"5739:34:24"},"nodeType":"YulExpressionStatement","src":"5739:34:24"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"5890:9:24"},{"name":"ECDSA_signature_s_offset","nodeType":"YulIdentifier","src":"5901:24:24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5886:3:24"},"nodeType":"YulFunctionCall","src":"5886:40:24"},{"name":"originalSignatureS","nodeType":"YulIdentifier","src":"5952:18:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5854:6:24"},"nodeType":"YulFunctionCall","src":"5854:138:24"},"nodeType":"YulExpressionStatement","src":"5854:138:24"},{"nodeType":"YulAssignment","src":"6139:27:24","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6164:1:24","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6158:5:24"},"nodeType":"YulFunctionCall","src":"6158:8:24"},"variableNames":[{"name":"recoveredSigner","nodeType":"YulIdentifier","src":"6139:15:24"}]}]},"condition":{"arguments":[{"arguments":[{"name":"lenDiff","nodeType":"YulIdentifier","src":"2815:7:24"},{"kind":"number","nodeType":"YulLiteral","src":"2824:1:24","type":"","value":"1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2812:2:24"},"nodeType":"YulFunctionCall","src":"2812:14:24"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2805:6:24"},"nodeType":"YulFunctionCall","src":"2805:22:24"},"nodeType":"YulIf","src":"2802:3382:24"},{"nodeType":"YulAssignment","src":"6438:58:24","value":{"arguments":[{"arguments":[{"name":"signer","nodeType":"YulIdentifier","src":"6456:6:24"},{"name":"recoveredSigner","nodeType":"YulIdentifier","src":"6464:15:24"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6453:2:24"},"nodeType":"YulFunctionCall","src":"6453:27:24"},{"arguments":[{"name":"signer","nodeType":"YulIdentifier","src":"6485:6:24"},{"kind":"number","nodeType":"YulLiteral","src":"6493:1:24","type":"","value":"0"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6482:2:24"},"nodeType":"YulFunctionCall","src":"6482:13:24"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6449:3:24"},"nodeType":"YulFunctionCall","src":"6449:47:24"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"6438:7:24"}]}]},{"body":{"nodeType":"YulBlock","src":"6621:3925:24","statements":[{"expression":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"6877:22:24"},{"name":"EIP1271_isValidSignature_signature_head_offset","nodeType":"YulIdentifier","src":"6921:46:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6849:6:24"},"nodeType":"YulFunctionCall","src":"6849:136:24"},"nodeType":"YulExpressionStatement","src":"6849:136:24"},{"nodeType":"YulVariableDeclaration","src":"7081:141:24","value":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"7125:9:24"},{"name":"EIP1271_isValidSignature_selector_negativeOffset","nodeType":"YulIdentifier","src":"7156:48:24"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7100:3:24"},"nodeType":"YulFunctionCall","src":"7100:122:24"},"variables":[{"name":"selectorPtr","nodeType":"YulTypedName","src":"7085:11:24","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7317:57:24","value":{"arguments":[{"name":"selectorPtr","nodeType":"YulIdentifier","src":"7362:11:24"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7356:5:24"},"nodeType":"YulFunctionCall","src":"7356:18:24"},"variables":[{"name":"cachedWordOverwrittenBySelector","nodeType":"YulTypedName","src":"7321:31:24","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7472:137:24","value":{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"7514:9:24"},{"name":"EIP1271_isValidSignature_digest_negativeOffset","nodeType":"YulIdentifier","src":"7545:46:24"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7489:3:24"},"nodeType":"YulFunctionCall","src":"7489:120:24"},"variables":[{"name":"digestPtr","nodeType":"YulTypedName","src":"7476:9:24","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7702:53:24","value":{"arguments":[{"name":"digestPtr","nodeType":"YulIdentifier","src":"7745:9:24"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7739:5:24"},"nodeType":"YulFunctionCall","src":"7739:16:24"},"variables":[{"name":"cachedWordOverwrittenByDigest","nodeType":"YulTypedName","src":"7706:29:24","type":""}]},{"expression":{"arguments":[{"name":"selectorPtr","nodeType":"YulIdentifier","src":"7855:11:24"},{"name":"EIP1271_isValidSignature_selector","nodeType":"YulIdentifier","src":"7868:33:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7848:6:24"},"nodeType":"YulFunctionCall","src":"7848:54:24"},"nodeType":"YulExpressionStatement","src":"7848:54:24"},{"expression":{"arguments":[{"name":"digestPtr","nodeType":"YulIdentifier","src":"7970:9:24"},{"name":"digest","nodeType":"YulIdentifier","src":"7981:6:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7963:6:24"},"nodeType":"YulFunctionCall","src":"7963:25:24"},"nodeType":"YulExpressionStatement","src":"7963:25:24"},{"nodeType":"YulAssignment","src":"8084:337:24","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"8127:3:24"},"nodeType":"YulFunctionCall","src":"8127:5:24"},{"name":"signer","nodeType":"YulIdentifier","src":"8154:6:24"},{"name":"selectorPtr","nodeType":"YulIdentifier","src":"8182:11:24"},{"arguments":[{"name":"signatureLength","nodeType":"YulIdentifier","src":"8244:15:24"},{"name":"EIP1271_isValidSignature_calldata_baseLength","nodeType":"YulIdentifier","src":"8285:44:24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8215:3:24"},"nodeType":"YulFunctionCall","src":"8215:136:24"},{"kind":"number","nodeType":"YulLiteral","src":"8373:1:24","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"8396:7:24"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"8095:10:24"},"nodeType":"YulFunctionCall","src":"8095:326:24"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"8084:7:24"}]},{"body":{"nodeType":"YulBlock","src":"8526:1681:24","statements":[{"body":{"nodeType":"YulBlock","src":"8738:1451:24","statements":[{"body":{"nodeType":"YulBlock","src":"8865:231:24","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8957:1:24","type":"","value":"0"},{"name":"BadContractSignature_error_signature","nodeType":"YulIdentifier","src":"8960:36:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8950:6:24"},"nodeType":"YulFunctionCall","src":"8950:47:24"},"nodeType":"YulExpressionStatement","src":"8950:47:24"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9033:1:24","type":"","value":"0"},{"name":"BadContractSignature_error_length","nodeType":"YulIdentifier","src":"9036:33:24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9026:6:24"},"nodeType":"YulFunctionCall","src":"9026:44:24"},"nodeType":"YulExpressionStatement","src":"9026:44:24"}]},"condition":{"arguments":[{"name":"signer","nodeType":"YulIdentifier","src":"8857:6:24"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"8845:11:24"},"nodeType":"YulFunctionCall","src":"8845:19:24"},"nodeType":"YulIf","src":"8842:254:24"},{"body":{"nodeType":"YulBlock","src":"9236:244:24","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9349:1:24","type":"","value":"0"},{"name":"InvalidSignature_error_signature","nodeType":"YulIdentifier","src":"9352:32:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9342:6:24"},"nodeType":"YulFunctionCall","src":"9342:43:24"},"nodeType":"YulExpressionStatement","src":"9342:43:24"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9421:1:24","type":"","value":"0"},{"name":"InvalidSignature_error_length","nodeType":"YulIdentifier","src":"9424:29:24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9414:6:24"},"nodeType":"YulFunctionCall","src":"9414:40:24"},"nodeType":"YulExpressionStatement","src":"9414:40:24"}]},"condition":{"arguments":[{"arguments":[{"name":"ECDSA_MaxLength","nodeType":"YulIdentifier","src":"9198:15:24"},{"name":"signatureLength","nodeType":"YulIdentifier","src":"9215:15:24"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9194:3:24"},"nodeType":"YulFunctionCall","src":"9194:37:24"},{"kind":"number","nodeType":"YulLiteral","src":"9233:1:24","type":"","value":"1"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9191:2:24"},"nodeType":"YulFunctionCall","src":"9191:44:24"},"nodeType":"YulIf","src":"9188:292:24"},{"body":{"nodeType":"YulBlock","src":"9674:288:24","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9771:1:24","type":"","value":"0"},{"name":"BadSignatureV_error_signature","nodeType":"YulIdentifier","src":"9774:29:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9764:6:24"},"nodeType":"YulFunctionCall","src":"9764:40:24"},"nodeType":"YulExpressionStatement","src":"9764:40:24"},{"expression":{"arguments":[{"name":"BadSignatureV_error_offset","nodeType":"YulIdentifier","src":"9840:26:24"},{"name":"v","nodeType":"YulIdentifier","src":"9868:1:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9833:6:24"},"nodeType":"YulFunctionCall","src":"9833:37:24"},"nodeType":"YulExpressionStatement","src":"9833:37:24"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9906:1:24","type":"","value":"0"},{"name":"BadSignatureV_error_length","nodeType":"YulIdentifier","src":"9909:26:24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9899:6:24"},"nodeType":"YulFunctionCall","src":"9899:37:24"},"nodeType":"YulExpressionStatement","src":"9899:37:24"}]},"condition":{"arguments":[{"arguments":[{"name":"v","nodeType":"YulIdentifier","src":"9601:1:24"},{"name":"ECDSA_twentySeventhAndTwentyEighthBytesSet","nodeType":"YulIdentifier","src":"9604:42:24"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"9596:4:24"},"nodeType":"YulFunctionCall","src":"9596:51:24"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9560:6:24"},"nodeType":"YulFunctionCall","src":"9560:113:24"},"nodeType":"YulIf","src":"9557:405:24"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10072:1:24","type":"","value":"0"},{"name":"InvalidSigner_error_signature","nodeType":"YulIdentifier","src":"10075:29:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10065:6:24"},"nodeType":"YulFunctionCall","src":"10065:40:24"},"nodeType":"YulExpressionStatement","src":"10065:40:24"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10137:1:24","type":"","value":"0"},{"name":"InvalidSigner_error_length","nodeType":"YulIdentifier","src":"10140:26:24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10130:6:24"},"nodeType":"YulFunctionCall","src":"10130:37:24"},"nodeType":"YulExpressionStatement","src":"10130:37:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8698:1:24","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8692:5:24"},"nodeType":"YulFunctionCall","src":"8692:8:24"},{"name":"EIP1271_isValidSignature_selector","nodeType":"YulIdentifier","src":"8702:33:24"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8689:2:24"},"nodeType":"YulFunctionCall","src":"8689:47:24"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8682:6:24"},"nodeType":"YulFunctionCall","src":"8682:55:24"},"nodeType":"YulIf","src":"8679:1510:24"}]},"condition":{"name":"success","nodeType":"YulIdentifier","src":"8518:7:24"},"nodeType":"YulIf","src":"8515:1692:24"},{"expression":{"arguments":[{"name":"wordBeforeSignaturePtr","nodeType":"YulIdentifier","src":"10348:22:24"},{"name":"cachedWordBeforeSignature","nodeType":"YulIdentifier","src":"10372:25:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10341:6:24"},"nodeType":"YulFunctionCall","src":"10341:57:24"},"nodeType":"YulExpressionStatement","src":"10341:57:24"},{"expression":{"arguments":[{"name":"selectorPtr","nodeType":"YulIdentifier","src":"10422:11:24"},{"name":"cachedWordOverwrittenBySelector","nodeType":"YulIdentifier","src":"10435:31:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10415:6:24"},"nodeType":"YulFunctionCall","src":"10415:52:24"},"nodeType":"YulExpressionStatement","src":"10415:52:24"},{"expression":{"arguments":[{"name":"digestPtr","nodeType":"YulIdentifier","src":"10491:9:24"},{"name":"cachedWordOverwrittenByDigest","nodeType":"YulIdentifier","src":"10502:29:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10484:6:24"},"nodeType":"YulFunctionCall","src":"10484:48:24"},"nodeType":"YulExpressionStatement","src":"10484:48:24"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"6612:7:24"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6605:6:24"},"nodeType":"YulFunctionCall","src":"6605:15:24"},"nodeType":"YulIf","src":"6602:3944:24"}]},"evmVersion":"london","externalReferences":[{"declaration":1545,"isOffset":false,"isSlot":false,"src":"9036:33:24","valueSize":1},{"declaration":1542,"isOffset":false,"isSlot":false,"src":"8960:36:24","valueSize":1},{"declaration":1524,"isOffset":false,"isSlot":false,"src":"9909:26:24","valueSize":1},{"declaration":1521,"isOffset":false,"isSlot":false,"src":"9840:26:24","valueSize":1},{"declaration":1518,"isOffset":false,"isSlot":false,"src":"9774:29:24","valueSize":1},{"declaration":1344,"isOffset":false,"isSlot":false,"src":"2546:15:24","valueSize":1},{"declaration":1344,"isOffset":false,"isSlot":false,"src":"9198:15:24","valueSize":1},{"declaration":1347,"isOffset":false,"isSlot":false,"src":"2975:24:24","valueSize":1},{"declaration":1347,"isOffset":false,"isSlot":false,"src":"4121:24:24","valueSize":1},{"declaration":1347,"isOffset":false,"isSlot":false,"src":"5901:24:24","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"3407:24:24","valueSize":1},{"declaration":1341,"isOffset":false,"isSlot":false,"src":"9604:42:24","valueSize":1},{"declaration":1366,"isOffset":false,"isSlot":false,"src":"8285:44:24","valueSize":1},{"declaration":1360,"isOffset":false,"isSlot":false,"src":"7545:46:24","valueSize":1},{"declaration":1354,"isOffset":false,"isSlot":false,"src":"7868:33:24","valueSize":1},{"declaration":1354,"isOffset":false,"isSlot":false,"src":"8702:33:24","valueSize":1},{"declaration":1363,"isOffset":false,"isSlot":false,"src":"7156:48:24","valueSize":1},{"declaration":1369,"isOffset":false,"isSlot":false,"src":"6921:46:24","valueSize":1},{"declaration":1337,"isOffset":false,"isSlot":false,"src":"4265:28:24","valueSize":1},{"declaration":1511,"isOffset":false,"isSlot":false,"src":"5284:19:24","valueSize":1},{"declaration":1508,"isOffset":false,"isSlot":false,"src":"5123:20:24","valueSize":1},{"declaration":1538,"isOffset":false,"isSlot":false,"src":"9424:29:24","valueSize":1},{"declaration":1535,"isOffset":false,"isSlot":false,"src":"9352:32:24","valueSize":1},{"declaration":1531,"isOffset":false,"isSlot":false,"src":"10140:26:24","valueSize":1},{"declaration":1528,"isOffset":false,"isSlot":false,"src":"10075:29:24","valueSize":1},{"declaration":1420,"isOffset":false,"isSlot":false,"src":"3744:8:24","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"1954:7:24","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"5430:7:24","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"8396:7:24","valueSize":1},{"declaration":1514,"isOffset":false,"isSlot":false,"src":"3803:17:24","valueSize":1},{"declaration":4171,"isOffset":false,"isSlot":false,"src":"4768:6:24","valueSize":1},{"declaration":4171,"isOffset":false,"isSlot":false,"src":"7981:6:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"1652:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"1943:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"2964:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"3396:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"4110:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"4545:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"5746:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"5890:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"7125:9:24","valueSize":1},{"declaration":4173,"isOffset":false,"isSlot":false,"src":"7514:9:24","valueSize":1},{"declaration":4169,"isOffset":false,"isSlot":false,"src":"6456:6:24","valueSize":1},{"declaration":4169,"isOffset":false,"isSlot":false,"src":"6485:6:24","valueSize":1},{"declaration":4169,"isOffset":false,"isSlot":false,"src":"8154:6:24","valueSize":1},{"declaration":4169,"isOffset":false,"isSlot":false,"src":"8857:6:24","valueSize":1},{"declaration":4177,"isOffset":false,"isSlot":false,"src":"6438:7:24","valueSize":1},{"declaration":4177,"isOffset":false,"isSlot":false,"src":"6612:7:24","valueSize":1},{"declaration":4177,"isOffset":false,"isSlot":false,"src":"8084:7:24","valueSize":1},{"declaration":4177,"isOffset":false,"isSlot":false,"src":"8518:7:24","valueSize":1}],"id":4179,"nodeType":"InlineAssembly","src":"1386:9170:24"},{"condition":{"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10603:8:24","subExpression":{"id":4180,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4177,"src":"10604:7:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4187,"nodeType":"IfStatement","src":"10599:380:24","trueBody":{"id":4186,"nodeType":"Block","src":"10613:366:24","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4182,"name":"_revertWithReasonIfOneIsReturned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"10692:32:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10692:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4184,"nodeType":"ExpressionStatement","src":"10692:34:24"},{"AST":{"nodeType":"YulBlock","src":"10829:140:24","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10854:1:24","type":"","value":"0"},{"name":"BadContractSignature_error_signature","nodeType":"YulIdentifier","src":"10857:36:24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10847:6:24"},"nodeType":"YulFunctionCall","src":"10847:47:24"},"nodeType":"YulExpressionStatement","src":"10847:47:24"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10918:1:24","type":"","value":"0"},{"name":"BadContractSignature_error_length","nodeType":"YulIdentifier","src":"10921:33:24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10911:6:24"},"nodeType":"YulFunctionCall","src":"10911:44:24"},"nodeType":"YulExpressionStatement","src":"10911:44:24"}]},"evmVersion":"london","externalReferences":[{"declaration":1545,"isOffset":false,"isSlot":false,"src":"10921:33:24","valueSize":1},{"declaration":1542,"isOffset":false,"isSlot":false,"src":"10857:36:24","valueSize":1}],"id":4185,"nodeType":"InlineAssembly","src":"10820:149:24"}]}}]},"documentation":{"id":4167,"nodeType":"StructuredDocumentation","src":"541:520:24","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":4189,"implemented":true,"kind":"function","modifiers":[],"name":"_assertValidSignature","nameLocation":"1075:21:24","nodeType":"FunctionDefinition","parameters":{"id":4174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4169,"mutability":"mutable","name":"signer","nameLocation":"1114:6:24","nodeType":"VariableDeclaration","scope":4189,"src":"1106:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4168,"name":"address","nodeType":"ElementaryTypeName","src":"1106:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4171,"mutability":"mutable","name":"digest","nameLocation":"1138:6:24","nodeType":"VariableDeclaration","scope":4189,"src":"1130:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1130:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4173,"mutability":"mutable","name":"signature","nameLocation":"1167:9:24","nodeType":"VariableDeclaration","scope":4189,"src":"1154:22:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4172,"name":"bytes","nodeType":"ElementaryTypeName","src":"1154:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1096:86:24"},"returnParameters":{"id":4175,"nodeType":"ParameterList","parameters":[],"src":"1197:0:24"},"scope":4190,"src":"1066:9919:24","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4191,"src":"456:10531:24","usedErrors":[524,527,530,533]}],"src":"32:10956:24"},"id":24},"contracts/lib/TokenTransferrer.sol":{"ast":{"absolutePath":"contracts/lib/TokenTransferrer.sol","exportedSymbols":{"AlmostOneWord":[4271],"BadReturnValueFromERC20OnTransfer_error_amount_ptr":[4452],"BadReturnValueFromERC20OnTransfer_error_from_ptr":[4446],"BadReturnValueFromERC20OnTransfer_error_length":[4455],"BadReturnValueFromERC20OnTransfer_error_sig_ptr":[4440],"BadReturnValueFromERC20OnTransfer_error_signature":[4437],"BadReturnValueFromERC20OnTransfer_error_to_ptr":[4449],"BadReturnValueFromERC20OnTransfer_error_token_ptr":[4443],"BatchTransfer1155Params_amounts_head_ptr":[4473],"BatchTransfer1155Params_amounts_length_baseOffset":[4491],"BatchTransfer1155Params_calldata_baseSize":[4482],"BatchTransfer1155Params_data_head_ptr":[4476],"BatchTransfer1155Params_data_length_baseOffset":[4494],"BatchTransfer1155Params_data_length_basePtr":[4479],"BatchTransfer1155Params_ids_head_ptr":[4470],"BatchTransfer1155Params_ids_length_offset":[4488],"BatchTransfer1155Params_ids_length_ptr":[4485],"BatchTransfer1155Params_ptr":[4467],"ConduitBatch1155Transfer":[65],"ConduitBatch1155Transfer_amounts_head_offset":[4506],"ConduitBatch1155Transfer_amounts_length_baseOffset":[4512],"ConduitBatch1155Transfer_calldata_baseSize":[4515],"ConduitBatch1155Transfer_from_offset":[4500],"ConduitBatch1155Transfer_ids_head_offset":[4503],"ConduitBatch1155Transfer_ids_length_offset":[4509],"ConduitBatch1155Transfer_usable_head_size":[4497],"ConduitBatchTransfer_amounts_head_offset":[4518],"CostPerWord":[4461],"DefaultFreeMemoryPointer":[4289],"ERC1155BatchTransferGenericFailure_error_signature":[4532],"ERC1155BatchTransferGenericFailure_ids_offset":[4538],"ERC1155BatchTransferGenericFailure_token_ptr":[4535],"ERC1155_safeBatchTransferFrom_selector":[4377],"ERC1155_safeBatchTransferFrom_signature":[4368],"ERC1155_safeTransferFrom_amount_ptr":[4352],"ERC1155_safeTransferFrom_data_length_offset":[4364],"ERC1155_safeTransferFrom_data_length_ptr":[4358],"ERC1155_safeTransferFrom_data_offset_ptr":[4355],"ERC1155_safeTransferFrom_from_ptr":[4343],"ERC1155_safeTransferFrom_id_ptr":[4349],"ERC1155_safeTransferFrom_length":[4361],"ERC1155_safeTransferFrom_sig_ptr":[4340],"ERC1155_safeTransferFrom_signature":[4337],"ERC1155_safeTransferFrom_to_ptr":[4346],"ERC20_transferFrom_amount_ptr":[4314],"ERC20_transferFrom_from_ptr":[4308],"ERC20_transferFrom_length":[4317],"ERC20_transferFrom_sig_ptr":[4305],"ERC20_transferFrom_signature":[4302],"ERC20_transferFrom_to_ptr":[4311],"ERC20_transfer_amount_ptr":[4330],"ERC20_transfer_length":[4333],"ERC20_transfer_sig_ptr":[4324],"ERC20_transfer_signature":[4321],"ERC20_transfer_to_ptr":[4327],"ERC721_transferFrom_from_ptr":[4386],"ERC721_transferFrom_id_ptr":[4392],"ERC721_transferFrom_length":[4395],"ERC721_transferFrom_sig_ptr":[4383],"ERC721_transferFrom_signature":[4380],"ERC721_transferFrom_to_ptr":[4389],"ExtraGasBuffer":[4458],"FreeMemoryPointerSlot":[4283],"Invalid1155BatchTransferEncoding_length":[4524],"Invalid1155BatchTransferEncoding_ptr":[4521],"Invalid1155BatchTransferEncoding_selector":[4528],"MemoryExpansionCoefficient":[4464],"NoContract_error_length":[4408],"NoContract_error_sig_ptr":[4402],"NoContract_error_signature":[4399],"NoContract_error_token_ptr":[4405],"OneWord":[4274],"Slot0x80":[4292],"Slot0xA0":[4295],"Slot0xC0":[4298],"ThreeWords":[4280],"TokenTransferGenericFailure_error_amount_ptr":[4430],"TokenTransferGenericFailure_error_from_ptr":[4421],"TokenTransferGenericFailure_error_id_ptr":[4427],"TokenTransferGenericFailure_error_length":[4433],"TokenTransferGenericFailure_error_sig_ptr":[4415],"TokenTransferGenericFailure_error_signature":[4412],"TokenTransferGenericFailure_error_to_ptr":[4424],"TokenTransferGenericFailure_error_token_ptr":[4418],"TokenTransferrer":[4266],"TokenTransferrerErrors":[594],"TwoWords":[4277],"ZeroSlot":[4286]},"id":4267,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4192,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:25"},{"absolutePath":"contracts/lib/TokenTransferrerConstants.sol","file":"./TokenTransferrerConstants.sol","id":4193,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4267,"sourceUnit":4539,"src":"57:41:25","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/TokenTransferrerErrors.sol","file":"../interfaces/TokenTransferrerErrors.sol","id":4195,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4267,"sourceUnit":595,"src":"100:86:25","symbolAliases":[{"foreign":{"id":4194,"name":"TokenTransferrerErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"113:22:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/conduit/lib/ConduitStructs.sol","file":"../conduit/lib/ConduitStructs.sol","id":4197,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4267,"sourceUnit":66,"src":"188:77:25","symbolAliases":[{"foreign":{"id":4196,"name":"ConduitBatch1155Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"197:24:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4199,"name":"TokenTransferrerErrors","nodeType":"IdentifierPath","referencedDeclaration":594,"src":"858:22:25"},"id":4200,"nodeType":"InheritanceSpecifier","src":"858:22:25"}],"canonicalName":"TokenTransferrer","contractDependencies":[],"contractKind":"contract","documentation":{"id":4198,"nodeType":"StructuredDocumentation","src":"267:561:25","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":4266,"linearizedBaseContracts":[4266,594],"name":"TokenTransferrer","nameLocation":"838:16:25","nodeType":"ContractDefinition","nodes":[{"body":{"id":4213,"nodeType":"Block","src":"1460:9480:25","statements":[{"AST":{"nodeType":"YulBlock","src":"1553:9381:25","statements":[{"nodeType":"YulVariableDeclaration","src":"1727:46:25","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"1751:21:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1745:5:25"},"nodeType":"YulFunctionCall","src":"1745:28:25"},"variables":[{"name":"memPointer","nodeType":"YulTypedName","src":"1731:10:25","type":""}]},{"expression":{"arguments":[{"name":"ERC20_transferFrom_sig_ptr","nodeType":"YulIdentifier","src":"1871:26:25"},{"name":"ERC20_transferFrom_signature","nodeType":"YulIdentifier","src":"1899:28:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1864:6:25"},"nodeType":"YulFunctionCall","src":"1864:64:25"},"nodeType":"YulExpressionStatement","src":"1864:64:25"},{"expression":{"arguments":[{"name":"ERC20_transferFrom_from_ptr","nodeType":"YulIdentifier","src":"1948:27:25"},{"name":"from","nodeType":"YulIdentifier","src":"1977:4:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1941:6:25"},"nodeType":"YulFunctionCall","src":"1941:41:25"},"nodeType":"YulExpressionStatement","src":"1941:41:25"},{"expression":{"arguments":[{"name":"ERC20_transferFrom_to_ptr","nodeType":"YulIdentifier","src":"2002:25:25"},{"name":"to","nodeType":"YulIdentifier","src":"2029:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1995:6:25"},"nodeType":"YulFunctionCall","src":"1995:37:25"},"nodeType":"YulExpressionStatement","src":"1995:37:25"},{"expression":{"arguments":[{"name":"ERC20_transferFrom_amount_ptr","nodeType":"YulIdentifier","src":"2052:29:25"},{"name":"amount","nodeType":"YulIdentifier","src":"2083:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2045:6:25"},"nodeType":"YulFunctionCall","src":"2045:45:25"},"nodeType":"YulExpressionStatement","src":"2045:45:25"},{"nodeType":"YulVariableDeclaration","src":"2566:232:25","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"2606:3:25"},"nodeType":"YulFunctionCall","src":"2606:5:25"},{"name":"token","nodeType":"YulIdentifier","src":"2629:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"2652:1:25","type":"","value":"0"},{"name":"ERC20_transferFrom_sig_ptr","nodeType":"YulIdentifier","src":"2671:26:25"},{"name":"ERC20_transferFrom_length","nodeType":"YulIdentifier","src":"2715:25:25"},{"kind":"number","nodeType":"YulLiteral","src":"2758:1:25","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"2777:7:25"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"2584:4:25"},"nodeType":"YulFunctionCall","src":"2584:214:25"},"variables":[{"name":"callStatus","nodeType":"YulTypedName","src":"2570:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2892:407:25","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3160:1:25","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3154:5:25"},"nodeType":"YulFunctionCall","src":"3154:8:25"},{"kind":"number","nodeType":"YulLiteral","src":"3164:1:25","type":"","value":"1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3151:2:25"},"nodeType":"YulFunctionCall","src":"3151:15:25"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3171:14:25"},"nodeType":"YulFunctionCall","src":"3171:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"3189:2:25","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3168:2:25"},"nodeType":"YulFunctionCall","src":"3168:24:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3147:3:25"},"nodeType":"YulFunctionCall","src":"3147:46:25"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3222:14:25"},"nodeType":"YulFunctionCall","src":"3222:16:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3215:6:25"},"nodeType":"YulFunctionCall","src":"3215:24:25"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3123:2:25"},"nodeType":"YulFunctionCall","src":"3123:134:25"},{"name":"callStatus","nodeType":"YulIdentifier","src":"3275:10:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2907:3:25"},"nodeType":"YulFunctionCall","src":"2907:392:25"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"2896:7:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"3681:7052:25","statements":[{"body":{"nodeType":"YulBlock","src":"3991:6522:25","statements":[{"body":{"nodeType":"YulBlock","src":"4079:6113:25","statements":[{"body":{"nodeType":"YulBlock","src":"4181:4737:25","statements":[{"body":{"nodeType":"YulBlock","src":"4376:3302:25","statements":[{"nodeType":"YulVariableDeclaration","src":"4788:179:25","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4856:14:25"},"nodeType":"YulFunctionCall","src":"4856:16:25"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"4874:13:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4852:3:25"},"nodeType":"YulFunctionCall","src":"4852:36:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"4926:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4811:3:25"},"nodeType":"YulFunctionCall","src":"4811:156:25"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"4792:15:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5298:42:25","value":{"arguments":[{"name":"memPointer","nodeType":"YulIdentifier","src":"5320:10:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"5332:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"5316:3:25"},"nodeType":"YulFunctionCall","src":"5316:24:25"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"5302:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5455:45:25","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"5471:11:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"5484:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5467:3:25"},"nodeType":"YulFunctionCall","src":"5467:33:25"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"5459:4:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"5649:1258:25","statements":[{"nodeType":"YulAssignment","src":"5687:1186:25","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"5740:4:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"5945:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"6014:10:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5888:3:25"},"nodeType":"YulFunctionCall","src":"5888:186:25"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"6124:11:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5835:3:25"},"nodeType":"YulFunctionCall","src":"5835:346:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"6398:15:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"6471:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6337:3:25"},"nodeType":"YulFunctionCall","src":"6337:203:25"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"6598:10:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"6610:10:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6594:3:25"},"nodeType":"YulFunctionCall","src":"6594:27:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6280:3:25"},"nodeType":"YulFunctionCall","src":"6280:391:25"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"6721:26:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6227:3:25"},"nodeType":"YulFunctionCall","src":"6227:566:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5786:3:25"},"nodeType":"YulFunctionCall","src":"5786:1049:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5695:3:25"},"nodeType":"YulFunctionCall","src":"5695:1178:25"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"5687:4:25"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"5620:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"5637:10:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5617:2:25"},"nodeType":"YulFunctionCall","src":"5617:31:25"},"nodeType":"YulIf","src":"5614:1293:25"},{"body":{"nodeType":"YulBlock","src":"7206:442:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7391:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7394:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"7397:14:25"},"nodeType":"YulFunctionCall","src":"7397:16:25"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"7376:14:25"},"nodeType":"YulFunctionCall","src":"7376:38:25"},"nodeType":"YulExpressionStatement","src":"7376:38:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7594:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"7597:14:25"},"nodeType":"YulFunctionCall","src":"7597:16:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7587:6:25"},"nodeType":"YulFunctionCall","src":"7587:27:25"},"nodeType":"YulExpressionStatement","src":"7587:27:25"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"7176:4:25"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"7182:14:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7172:3:25"},"nodeType":"YulFunctionCall","src":"7172:25:25"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"7199:3:25"},"nodeType":"YulFunctionCall","src":"7199:5:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7169:2:25"},"nodeType":"YulFunctionCall","src":"7169:36:25"},"nodeType":"YulIf","src":"7166:482:25"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4359:14:25"},"nodeType":"YulFunctionCall","src":"4359:16:25"},"nodeType":"YulIf","src":"4356:3322:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"7826:41:25"},{"name":"TokenTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"7901:43:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7786:6:25"},"nodeType":"YulFunctionCall","src":"7786:188:25"},"nodeType":"YulExpressionStatement","src":"7786:188:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_token_ptr","nodeType":"YulIdentifier","src":"8043:43:25"},{"name":"token","nodeType":"YulIdentifier","src":"8120:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8003:6:25"},"nodeType":"YulFunctionCall","src":"8003:152:25"},"nodeType":"YulExpressionStatement","src":"8003:152:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_from_ptr","nodeType":"YulIdentifier","src":"8224:42:25"},{"name":"from","nodeType":"YulIdentifier","src":"8300:4:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8184:6:25"},"nodeType":"YulFunctionCall","src":"8184:150:25"},"nodeType":"YulExpressionStatement","src":"8184:150:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_to_ptr","nodeType":"YulIdentifier","src":"8370:40:25"},{"name":"to","nodeType":"YulIdentifier","src":"8412:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8363:6:25"},"nodeType":"YulFunctionCall","src":"8363:52:25"},"nodeType":"YulExpressionStatement","src":"8363:52:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_id_ptr","nodeType":"YulIdentifier","src":"8451:40:25"},{"kind":"number","nodeType":"YulLiteral","src":"8493:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8444:6:25"},"nodeType":"YulFunctionCall","src":"8444:51:25"},"nodeType":"YulExpressionStatement","src":"8444:51:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_amount_ptr","nodeType":"YulIdentifier","src":"8564:44:25"},{"name":"amount","nodeType":"YulIdentifier","src":"8642:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8524:6:25"},"nodeType":"YulFunctionCall","src":"8524:154:25"},"nodeType":"YulExpressionStatement","src":"8524:154:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"8747:41:25"},{"name":"TokenTransferGenericFailure_error_length","nodeType":"YulIdentifier","src":"8822:40:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8707:6:25"},"nodeType":"YulFunctionCall","src":"8707:185:25"},"nodeType":"YulExpressionStatement","src":"8707:185:25"}]},"condition":{"arguments":[{"name":"callStatus","nodeType":"YulIdentifier","src":"4169:10:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4162:6:25"},"nodeType":"YulFunctionCall","src":"4162:18:25"},"nodeType":"YulIf","src":"4159:4759:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nodeType":"YulIdentifier","src":"9130:47:25"},{"name":"BadReturnValueFromERC20OnTransfer_error_signature","nodeType":"YulIdentifier","src":"9207:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9094:6:25"},"nodeType":"YulFunctionCall","src":"9094:188:25"},"nodeType":"YulExpressionStatement","src":"9094:188:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_token_ptr","nodeType":"YulIdentifier","src":"9343:49:25"},{"name":"token","nodeType":"YulIdentifier","src":"9422:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9307:6:25"},"nodeType":"YulFunctionCall","src":"9307:146:25"},"nodeType":"YulExpressionStatement","src":"9307:146:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_from_ptr","nodeType":"YulIdentifier","src":"9514:48:25"},{"name":"from","nodeType":"YulIdentifier","src":"9592:4:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9478:6:25"},"nodeType":"YulFunctionCall","src":"9478:144:25"},"nodeType":"YulExpressionStatement","src":"9478:144:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_to_ptr","nodeType":"YulIdentifier","src":"9683:46:25"},{"name":"to","nodeType":"YulIdentifier","src":"9759:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9647:6:25"},"nodeType":"YulFunctionCall","src":"9647:140:25"},"nodeType":"YulExpressionStatement","src":"9647:140:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_amount_ptr","nodeType":"YulIdentifier","src":"9848:50:25"},{"name":"amount","nodeType":"YulIdentifier","src":"9928:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9812:6:25"},"nodeType":"YulFunctionCall","src":"9812:148:25"},"nodeType":"YulExpressionStatement","src":"9812:148:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nodeType":"YulIdentifier","src":"10021:47:25"},{"name":"BadReturnValueFromERC20OnTransfer_error_length","nodeType":"YulIdentifier","src":"10098:46:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9985:6:25"},"nodeType":"YulFunctionCall","src":"9985:185:25"},"nodeType":"YulExpressionStatement","src":"9985:185:25"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"4070:7:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4063:6:25"},"nodeType":"YulFunctionCall","src":"4063:15:25"},"nodeType":"YulIf","src":"4060:6132:25"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"10302:24:25"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"10328:26:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10295:6:25"},"nodeType":"YulFunctionCall","src":"10295:60:25"},"nodeType":"YulExpressionStatement","src":"10295:60:25"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"10383:26:25"},{"name":"token","nodeType":"YulIdentifier","src":"10411:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10376:6:25"},"nodeType":"YulFunctionCall","src":"10376:41:25"},"nodeType":"YulExpressionStatement","src":"10376:41:25"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"10445:24:25"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"10471:23:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10438:6:25"},"nodeType":"YulFunctionCall","src":"10438:57:25"},"nodeType":"YulExpressionStatement","src":"10438:57:25"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"3971:5:25"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"3959:11:25"},"nodeType":"YulFunctionCall","src":"3959:18:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3952:6:25"},"nodeType":"YulFunctionCall","src":"3952:26:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3945:6:25"},"nodeType":"YulFunctionCall","src":"3945:34:25"},{"name":"success","nodeType":"YulIdentifier","src":"3981:7:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3941:3:25"},"nodeType":"YulFunctionCall","src":"3941:48:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3934:6:25"},"nodeType":"YulFunctionCall","src":"3934:56:25"},"nodeType":"YulIf","src":"3931:6582:25"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"3637:7:25"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"3660:14:25"},"nodeType":"YulFunctionCall","src":"3660:16:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3653:6:25"},"nodeType":"YulFunctionCall","src":"3653:24:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3646:6:25"},"nodeType":"YulFunctionCall","src":"3646:32:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3633:3:25"},"nodeType":"YulFunctionCall","src":"3633:46:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3626:6:25"},"nodeType":"YulFunctionCall","src":"3626:54:25"},"nodeType":"YulIf","src":"3623:7110:25"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"10811:21:25"},{"name":"memPointer","nodeType":"YulIdentifier","src":"10834:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10804:6:25"},"nodeType":"YulFunctionCall","src":"10804:41:25"},"nodeType":"YulExpressionStatement","src":"10804:41:25"},{"expression":{"arguments":[{"name":"ZeroSlot","nodeType":"YulIdentifier","src":"10912:8:25"},{"kind":"number","nodeType":"YulLiteral","src":"10922:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10905:6:25"},"nodeType":"YulFunctionCall","src":"10905:19:25"},"nodeType":"YulExpressionStatement","src":"10905:19:25"}]},"evmVersion":"london","externalReferences":[{"declaration":4271,"isOffset":false,"isSlot":false,"src":"4874:13:25","valueSize":1},{"declaration":4452,"isOffset":false,"isSlot":false,"src":"9848:50:25","valueSize":1},{"declaration":4446,"isOffset":false,"isSlot":false,"src":"9514:48:25","valueSize":1},{"declaration":4455,"isOffset":false,"isSlot":false,"src":"10098:46:25","valueSize":1},{"declaration":4440,"isOffset":false,"isSlot":false,"src":"10021:47:25","valueSize":1},{"declaration":4440,"isOffset":false,"isSlot":false,"src":"9130:47:25","valueSize":1},{"declaration":4437,"isOffset":false,"isSlot":false,"src":"9207:49:25","valueSize":1},{"declaration":4449,"isOffset":false,"isSlot":false,"src":"9683:46:25","valueSize":1},{"declaration":4443,"isOffset":false,"isSlot":false,"src":"9343:49:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"5471:11:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"6124:11:25","valueSize":1},{"declaration":4314,"isOffset":false,"isSlot":false,"src":"2052:29:25","valueSize":1},{"declaration":4308,"isOffset":false,"isSlot":false,"src":"1948:27:25","valueSize":1},{"declaration":4317,"isOffset":false,"isSlot":false,"src":"2715:25:25","valueSize":1},{"declaration":4305,"isOffset":false,"isSlot":false,"src":"1871:26:25","valueSize":1},{"declaration":4305,"isOffset":false,"isSlot":false,"src":"2671:26:25","valueSize":1},{"declaration":4302,"isOffset":false,"isSlot":false,"src":"1899:28:25","valueSize":1},{"declaration":4311,"isOffset":false,"isSlot":false,"src":"2002:25:25","valueSize":1},{"declaration":4458,"isOffset":false,"isSlot":false,"src":"7182:14:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"10811:21:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"1751:21:25","valueSize":1},{"declaration":4464,"isOffset":false,"isSlot":false,"src":"6721:26:25","valueSize":1},{"declaration":4408,"isOffset":false,"isSlot":false,"src":"10471:23:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"10302:24:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"10445:24:25","valueSize":1},{"declaration":4399,"isOffset":false,"isSlot":false,"src":"10328:26:25","valueSize":1},{"declaration":4405,"isOffset":false,"isSlot":false,"src":"10383:26:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"2777:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"4926:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"5332:7:25","valueSize":1},{"declaration":4430,"isOffset":false,"isSlot":false,"src":"8564:44:25","valueSize":1},{"declaration":4421,"isOffset":false,"isSlot":false,"src":"8224:42:25","valueSize":1},{"declaration":4427,"isOffset":false,"isSlot":false,"src":"8451:40:25","valueSize":1},{"declaration":4433,"isOffset":false,"isSlot":false,"src":"8822:40:25","valueSize":1},{"declaration":4415,"isOffset":false,"isSlot":false,"src":"7826:41:25","valueSize":1},{"declaration":4415,"isOffset":false,"isSlot":false,"src":"8747:41:25","valueSize":1},{"declaration":4412,"isOffset":false,"isSlot":false,"src":"7901:43:25","valueSize":1},{"declaration":4424,"isOffset":false,"isSlot":false,"src":"8370:40:25","valueSize":1},{"declaration":4418,"isOffset":false,"isSlot":false,"src":"8043:43:25","valueSize":1},{"declaration":4286,"isOffset":false,"isSlot":false,"src":"10912:8:25","valueSize":1},{"declaration":4209,"isOffset":false,"isSlot":false,"src":"2083:6:25","valueSize":1},{"declaration":4209,"isOffset":false,"isSlot":false,"src":"8642:6:25","valueSize":1},{"declaration":4209,"isOffset":false,"isSlot":false,"src":"9928:6:25","valueSize":1},{"declaration":4205,"isOffset":false,"isSlot":false,"src":"1977:4:25","valueSize":1},{"declaration":4205,"isOffset":false,"isSlot":false,"src":"8300:4:25","valueSize":1},{"declaration":4205,"isOffset":false,"isSlot":false,"src":"9592:4:25","valueSize":1},{"declaration":4207,"isOffset":false,"isSlot":false,"src":"2029:2:25","valueSize":1},{"declaration":4207,"isOffset":false,"isSlot":false,"src":"8412:2:25","valueSize":1},{"declaration":4207,"isOffset":false,"isSlot":false,"src":"9759:2:25","valueSize":1},{"declaration":4203,"isOffset":false,"isSlot":false,"src":"10411:5:25","valueSize":1},{"declaration":4203,"isOffset":false,"isSlot":false,"src":"2629:5:25","valueSize":1},{"declaration":4203,"isOffset":false,"isSlot":false,"src":"3971:5:25","valueSize":1},{"declaration":4203,"isOffset":false,"isSlot":false,"src":"8120:5:25","valueSize":1},{"declaration":4203,"isOffset":false,"isSlot":false,"src":"9422:5:25","valueSize":1}],"id":4212,"nodeType":"InlineAssembly","src":"1544:9390:25"}]},"documentation":{"id":4201,"nodeType":"StructuredDocumentation","src":"887:433:25","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":4214,"implemented":true,"kind":"function","modifiers":[],"name":"_performERC20Transfer","nameLocation":"1334:21:25","nodeType":"FunctionDefinition","parameters":{"id":4210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4203,"mutability":"mutable","name":"token","nameLocation":"1373:5:25","nodeType":"VariableDeclaration","scope":4214,"src":"1365:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4202,"name":"address","nodeType":"ElementaryTypeName","src":"1365:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4205,"mutability":"mutable","name":"from","nameLocation":"1396:4:25","nodeType":"VariableDeclaration","scope":4214,"src":"1388:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4204,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4207,"mutability":"mutable","name":"to","nameLocation":"1418:2:25","nodeType":"VariableDeclaration","scope":4214,"src":"1410:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4206,"name":"address","nodeType":"ElementaryTypeName","src":"1410:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4209,"mutability":"mutable","name":"amount","nameLocation":"1438:6:25","nodeType":"VariableDeclaration","scope":4214,"src":"1430:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4208,"name":"uint256","nodeType":"ElementaryTypeName","src":"1430:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:95:25"},"returnParameters":{"id":4211,"nodeType":"ParameterList","parameters":[],"src":"1460:0:25"},"scope":4266,"src":"1325:9615:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4224,"nodeType":"Block","src":"11063:9412:25","statements":[{"AST":{"nodeType":"YulBlock","src":"11156:9313:25","statements":[{"nodeType":"YulVariableDeclaration","src":"11330:46:25","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"11354:21:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11348:5:25"},"nodeType":"YulFunctionCall","src":"11348:28:25"},"variables":[{"name":"memPointer","nodeType":"YulTypedName","src":"11334:10:25","type":""}]},{"expression":{"arguments":[{"name":"ERC20_transfer_sig_ptr","nodeType":"YulIdentifier","src":"11474:22:25"},{"name":"ERC20_transfer_signature","nodeType":"YulIdentifier","src":"11498:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11467:6:25"},"nodeType":"YulFunctionCall","src":"11467:56:25"},"nodeType":"YulExpressionStatement","src":"11467:56:25"},{"expression":{"arguments":[{"name":"ERC20_transfer_to_ptr","nodeType":"YulIdentifier","src":"11543:21:25"},{"name":"to","nodeType":"YulIdentifier","src":"11566:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11536:6:25"},"nodeType":"YulFunctionCall","src":"11536:33:25"},"nodeType":"YulExpressionStatement","src":"11536:33:25"},{"expression":{"arguments":[{"name":"ERC20_transfer_amount_ptr","nodeType":"YulIdentifier","src":"11589:25:25"},{"name":"amount","nodeType":"YulIdentifier","src":"11616:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11582:6:25"},"nodeType":"YulFunctionCall","src":"11582:41:25"},"nodeType":"YulExpressionStatement","src":"11582:41:25"},{"nodeType":"YulVariableDeclaration","src":"12099:224:25","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"12139:3:25"},"nodeType":"YulFunctionCall","src":"12139:5:25"},{"name":"token","nodeType":"YulIdentifier","src":"12162:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:25","type":"","value":"0"},{"name":"ERC20_transfer_sig_ptr","nodeType":"YulIdentifier","src":"12204:22:25"},{"name":"ERC20_transfer_length","nodeType":"YulIdentifier","src":"12244:21:25"},{"kind":"number","nodeType":"YulLiteral","src":"12283:1:25","type":"","value":"0"},{"name":"OneWord","nodeType":"YulIdentifier","src":"12302:7:25"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"12117:4:25"},"nodeType":"YulFunctionCall","src":"12117:206:25"},"variables":[{"name":"callStatus","nodeType":"YulTypedName","src":"12103:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12417:407:25","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12685:1:25","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12679:5:25"},"nodeType":"YulFunctionCall","src":"12679:8:25"},{"kind":"number","nodeType":"YulLiteral","src":"12689:1:25","type":"","value":"1"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12676:2:25"},"nodeType":"YulFunctionCall","src":"12676:15:25"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"12696:14:25"},"nodeType":"YulFunctionCall","src":"12696:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"12714:2:25","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12693:2:25"},"nodeType":"YulFunctionCall","src":"12693:24:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12672:3:25"},"nodeType":"YulFunctionCall","src":"12672:46:25"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"12747:14:25"},"nodeType":"YulFunctionCall","src":"12747:16:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12740:6:25"},"nodeType":"YulFunctionCall","src":"12740:24:25"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"12648:2:25"},"nodeType":"YulFunctionCall","src":"12648:134:25"},{"name":"callStatus","nodeType":"YulIdentifier","src":"12800:10:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12432:3:25"},"nodeType":"YulFunctionCall","src":"12432:392:25"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"12421:7:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"13206:7062:25","statements":[{"body":{"nodeType":"YulBlock","src":"13516:6532:25","statements":[{"body":{"nodeType":"YulBlock","src":"13604:6123:25","statements":[{"body":{"nodeType":"YulBlock","src":"13706:4742:25","statements":[{"body":{"nodeType":"YulBlock","src":"13901:3302:25","statements":[{"nodeType":"YulVariableDeclaration","src":"14313:179:25","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14381:14:25"},"nodeType":"YulFunctionCall","src":"14381:16:25"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"14399:13:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14377:3:25"},"nodeType":"YulFunctionCall","src":"14377:36:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"14451:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"14336:3:25"},"nodeType":"YulFunctionCall","src":"14336:156:25"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"14317:15:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14823:42:25","value":{"arguments":[{"name":"memPointer","nodeType":"YulIdentifier","src":"14845:10:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"14857:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"14841:3:25"},"nodeType":"YulFunctionCall","src":"14841:24:25"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"14827:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14980:45:25","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"14996:11:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15009:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"14992:3:25"},"nodeType":"YulFunctionCall","src":"14992:33:25"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"14984:4:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"15174:1258:25","statements":[{"nodeType":"YulAssignment","src":"15212:1186:25","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"15265:4:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15470:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"15539:10:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15413:3:25"},"nodeType":"YulFunctionCall","src":"15413:186:25"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"15649:11:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15360:3:25"},"nodeType":"YulFunctionCall","src":"15360:346:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15923:15:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15996:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15862:3:25"},"nodeType":"YulFunctionCall","src":"15862:203:25"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"16123:10:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"16135:10:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16119:3:25"},"nodeType":"YulFunctionCall","src":"16119:27:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15805:3:25"},"nodeType":"YulFunctionCall","src":"15805:391:25"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"16246:26:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"15752:3:25"},"nodeType":"YulFunctionCall","src":"15752:566:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15311:3:25"},"nodeType":"YulFunctionCall","src":"15311:1049:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15220:3:25"},"nodeType":"YulFunctionCall","src":"15220:1178:25"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"15212:4:25"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"15145:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"15162:10:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15142:2:25"},"nodeType":"YulFunctionCall","src":"15142:31:25"},"nodeType":"YulIf","src":"15139:1293:25"},{"body":{"nodeType":"YulBlock","src":"16731:442:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16916:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16919:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"16922:14:25"},"nodeType":"YulFunctionCall","src":"16922:16:25"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"16901:14:25"},"nodeType":"YulFunctionCall","src":"16901:38:25"},"nodeType":"YulExpressionStatement","src":"16901:38:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17119:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"17122:14:25"},"nodeType":"YulFunctionCall","src":"17122:16:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17112:6:25"},"nodeType":"YulFunctionCall","src":"17112:27:25"},"nodeType":"YulExpressionStatement","src":"17112:27:25"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"16701:4:25"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"16707:14:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16697:3:25"},"nodeType":"YulFunctionCall","src":"16697:25:25"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"16724:3:25"},"nodeType":"YulFunctionCall","src":"16724:5:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16694:2:25"},"nodeType":"YulFunctionCall","src":"16694:36:25"},"nodeType":"YulIf","src":"16691:482:25"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"13884:14:25"},"nodeType":"YulFunctionCall","src":"13884:16:25"},"nodeType":"YulIf","src":"13881:3322:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"17351:41:25"},{"name":"TokenTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"17426:43:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17311:6:25"},"nodeType":"YulFunctionCall","src":"17311:188:25"},"nodeType":"YulExpressionStatement","src":"17311:188:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_token_ptr","nodeType":"YulIdentifier","src":"17568:43:25"},{"name":"token","nodeType":"YulIdentifier","src":"17645:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17528:6:25"},"nodeType":"YulFunctionCall","src":"17528:152:25"},"nodeType":"YulExpressionStatement","src":"17528:152:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_from_ptr","nodeType":"YulIdentifier","src":"17749:42:25"},{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"17825:7:25"},"nodeType":"YulFunctionCall","src":"17825:9:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17709:6:25"},"nodeType":"YulFunctionCall","src":"17709:155:25"},"nodeType":"YulExpressionStatement","src":"17709:155:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_to_ptr","nodeType":"YulIdentifier","src":"17900:40:25"},{"name":"to","nodeType":"YulIdentifier","src":"17942:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17893:6:25"},"nodeType":"YulFunctionCall","src":"17893:52:25"},"nodeType":"YulExpressionStatement","src":"17893:52:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_id_ptr","nodeType":"YulIdentifier","src":"17981:40:25"},{"kind":"number","nodeType":"YulLiteral","src":"18023:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17974:6:25"},"nodeType":"YulFunctionCall","src":"17974:51:25"},"nodeType":"YulExpressionStatement","src":"17974:51:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_amount_ptr","nodeType":"YulIdentifier","src":"18094:44:25"},{"name":"amount","nodeType":"YulIdentifier","src":"18172:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18054:6:25"},"nodeType":"YulFunctionCall","src":"18054:154:25"},"nodeType":"YulExpressionStatement","src":"18054:154:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"18277:41:25"},{"name":"TokenTransferGenericFailure_error_length","nodeType":"YulIdentifier","src":"18352:40:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18237:6:25"},"nodeType":"YulFunctionCall","src":"18237:185:25"},"nodeType":"YulExpressionStatement","src":"18237:185:25"}]},"condition":{"arguments":[{"name":"callStatus","nodeType":"YulIdentifier","src":"13694:10:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13687:6:25"},"nodeType":"YulFunctionCall","src":"13687:18:25"},"nodeType":"YulIf","src":"13684:4764:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nodeType":"YulIdentifier","src":"18660:47:25"},{"name":"BadReturnValueFromERC20OnTransfer_error_signature","nodeType":"YulIdentifier","src":"18737:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18624:6:25"},"nodeType":"YulFunctionCall","src":"18624:188:25"},"nodeType":"YulExpressionStatement","src":"18624:188:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_token_ptr","nodeType":"YulIdentifier","src":"18873:49:25"},{"name":"token","nodeType":"YulIdentifier","src":"18952:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18837:6:25"},"nodeType":"YulFunctionCall","src":"18837:146:25"},"nodeType":"YulExpressionStatement","src":"18837:146:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_from_ptr","nodeType":"YulIdentifier","src":"19044:48:25"},{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"19122:7:25"},"nodeType":"YulFunctionCall","src":"19122:9:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19008:6:25"},"nodeType":"YulFunctionCall","src":"19008:149:25"},"nodeType":"YulExpressionStatement","src":"19008:149:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_to_ptr","nodeType":"YulIdentifier","src":"19218:46:25"},{"name":"to","nodeType":"YulIdentifier","src":"19294:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19182:6:25"},"nodeType":"YulFunctionCall","src":"19182:140:25"},"nodeType":"YulExpressionStatement","src":"19182:140:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_amount_ptr","nodeType":"YulIdentifier","src":"19383:50:25"},{"name":"amount","nodeType":"YulIdentifier","src":"19463:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19347:6:25"},"nodeType":"YulFunctionCall","src":"19347:148:25"},"nodeType":"YulExpressionStatement","src":"19347:148:25"},{"expression":{"arguments":[{"name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nodeType":"YulIdentifier","src":"19556:47:25"},{"name":"BadReturnValueFromERC20OnTransfer_error_length","nodeType":"YulIdentifier","src":"19633:46:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19520:6:25"},"nodeType":"YulFunctionCall","src":"19520:185:25"},"nodeType":"YulExpressionStatement","src":"19520:185:25"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"13595:7:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13588:6:25"},"nodeType":"YulFunctionCall","src":"13588:15:25"},"nodeType":"YulIf","src":"13585:6142:25"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"19837:24:25"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"19863:26:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19830:6:25"},"nodeType":"YulFunctionCall","src":"19830:60:25"},"nodeType":"YulExpressionStatement","src":"19830:60:25"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"19918:26:25"},{"name":"token","nodeType":"YulIdentifier","src":"19946:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19911:6:25"},"nodeType":"YulFunctionCall","src":"19911:41:25"},"nodeType":"YulExpressionStatement","src":"19911:41:25"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"19980:24:25"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"20006:23:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19973:6:25"},"nodeType":"YulFunctionCall","src":"19973:57:25"},"nodeType":"YulExpressionStatement","src":"19973:57:25"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"13496:5:25"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"13484:11:25"},"nodeType":"YulFunctionCall","src":"13484:18:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13477:6:25"},"nodeType":"YulFunctionCall","src":"13477:26:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13470:6:25"},"nodeType":"YulFunctionCall","src":"13470:34:25"},{"name":"success","nodeType":"YulIdentifier","src":"13506:7:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13466:3:25"},"nodeType":"YulFunctionCall","src":"13466:48:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13459:6:25"},"nodeType":"YulFunctionCall","src":"13459:56:25"},"nodeType":"YulIf","src":"13456:6592:25"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"13162:7:25"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"13185:14:25"},"nodeType":"YulFunctionCall","src":"13185:16:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13178:6:25"},"nodeType":"YulFunctionCall","src":"13178:24:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13171:6:25"},"nodeType":"YulFunctionCall","src":"13171:32:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13158:3:25"},"nodeType":"YulFunctionCall","src":"13158:46:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13151:6:25"},"nodeType":"YulFunctionCall","src":"13151:54:25"},"nodeType":"YulIf","src":"13148:7120:25"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"20346:21:25"},{"name":"memPointer","nodeType":"YulIdentifier","src":"20369:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20339:6:25"},"nodeType":"YulFunctionCall","src":"20339:41:25"},"nodeType":"YulExpressionStatement","src":"20339:41:25"},{"expression":{"arguments":[{"name":"ZeroSlot","nodeType":"YulIdentifier","src":"20447:8:25"},{"kind":"number","nodeType":"YulLiteral","src":"20457:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20440:6:25"},"nodeType":"YulFunctionCall","src":"20440:19:25"},"nodeType":"YulExpressionStatement","src":"20440:19:25"}]},"evmVersion":"london","externalReferences":[{"declaration":4271,"isOffset":false,"isSlot":false,"src":"14399:13:25","valueSize":1},{"declaration":4452,"isOffset":false,"isSlot":false,"src":"19383:50:25","valueSize":1},{"declaration":4446,"isOffset":false,"isSlot":false,"src":"19044:48:25","valueSize":1},{"declaration":4455,"isOffset":false,"isSlot":false,"src":"19633:46:25","valueSize":1},{"declaration":4440,"isOffset":false,"isSlot":false,"src":"18660:47:25","valueSize":1},{"declaration":4440,"isOffset":false,"isSlot":false,"src":"19556:47:25","valueSize":1},{"declaration":4437,"isOffset":false,"isSlot":false,"src":"18737:49:25","valueSize":1},{"declaration":4449,"isOffset":false,"isSlot":false,"src":"19218:46:25","valueSize":1},{"declaration":4443,"isOffset":false,"isSlot":false,"src":"18873:49:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"14996:11:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"15649:11:25","valueSize":1},{"declaration":4330,"isOffset":false,"isSlot":false,"src":"11589:25:25","valueSize":1},{"declaration":4333,"isOffset":false,"isSlot":false,"src":"12244:21:25","valueSize":1},{"declaration":4324,"isOffset":false,"isSlot":false,"src":"11474:22:25","valueSize":1},{"declaration":4324,"isOffset":false,"isSlot":false,"src":"12204:22:25","valueSize":1},{"declaration":4321,"isOffset":false,"isSlot":false,"src":"11498:24:25","valueSize":1},{"declaration":4327,"isOffset":false,"isSlot":false,"src":"11543:21:25","valueSize":1},{"declaration":4458,"isOffset":false,"isSlot":false,"src":"16707:14:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"11354:21:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"20346:21:25","valueSize":1},{"declaration":4464,"isOffset":false,"isSlot":false,"src":"16246:26:25","valueSize":1},{"declaration":4408,"isOffset":false,"isSlot":false,"src":"20006:23:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"19837:24:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"19980:24:25","valueSize":1},{"declaration":4399,"isOffset":false,"isSlot":false,"src":"19863:26:25","valueSize":1},{"declaration":4405,"isOffset":false,"isSlot":false,"src":"19918:26:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"12302:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"14451:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"14857:7:25","valueSize":1},{"declaration":4430,"isOffset":false,"isSlot":false,"src":"18094:44:25","valueSize":1},{"declaration":4421,"isOffset":false,"isSlot":false,"src":"17749:42:25","valueSize":1},{"declaration":4427,"isOffset":false,"isSlot":false,"src":"17981:40:25","valueSize":1},{"declaration":4433,"isOffset":false,"isSlot":false,"src":"18352:40:25","valueSize":1},{"declaration":4415,"isOffset":false,"isSlot":false,"src":"17351:41:25","valueSize":1},{"declaration":4415,"isOffset":false,"isSlot":false,"src":"18277:41:25","valueSize":1},{"declaration":4412,"isOffset":false,"isSlot":false,"src":"17426:43:25","valueSize":1},{"declaration":4424,"isOffset":false,"isSlot":false,"src":"17900:40:25","valueSize":1},{"declaration":4418,"isOffset":false,"isSlot":false,"src":"17568:43:25","valueSize":1},{"declaration":4286,"isOffset":false,"isSlot":false,"src":"20447:8:25","valueSize":1},{"declaration":4220,"isOffset":false,"isSlot":false,"src":"11616:6:25","valueSize":1},{"declaration":4220,"isOffset":false,"isSlot":false,"src":"18172:6:25","valueSize":1},{"declaration":4220,"isOffset":false,"isSlot":false,"src":"19463:6:25","valueSize":1},{"declaration":4218,"isOffset":false,"isSlot":false,"src":"11566:2:25","valueSize":1},{"declaration":4218,"isOffset":false,"isSlot":false,"src":"17942:2:25","valueSize":1},{"declaration":4218,"isOffset":false,"isSlot":false,"src":"19294:2:25","valueSize":1},{"declaration":4216,"isOffset":false,"isSlot":false,"src":"12162:5:25","valueSize":1},{"declaration":4216,"isOffset":false,"isSlot":false,"src":"13496:5:25","valueSize":1},{"declaration":4216,"isOffset":false,"isSlot":false,"src":"17645:5:25","valueSize":1},{"declaration":4216,"isOffset":false,"isSlot":false,"src":"18952:5:25","valueSize":1},{"declaration":4216,"isOffset":false,"isSlot":false,"src":"19946:5:25","valueSize":1}],"id":4223,"nodeType":"InlineAssembly","src":"11147:9322:25"}]},"id":4225,"implemented":true,"kind":"function","modifiers":[],"name":"_performSelfERC20Transfer","nameLocation":"10955:25:25","nodeType":"FunctionDefinition","parameters":{"id":4221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4216,"mutability":"mutable","name":"token","nameLocation":"10998:5:25","nodeType":"VariableDeclaration","scope":4225,"src":"10990:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4215,"name":"address","nodeType":"ElementaryTypeName","src":"10990:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4218,"mutability":"mutable","name":"to","nameLocation":"11021:2:25","nodeType":"VariableDeclaration","scope":4225,"src":"11013:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4217,"name":"address","nodeType":"ElementaryTypeName","src":"11013:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4220,"mutability":"mutable","name":"amount","nameLocation":"11041:6:25","nodeType":"VariableDeclaration","scope":4225,"src":"11033:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4219,"name":"uint256","nodeType":"ElementaryTypeName","src":"11033:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10980:73:25"},"returnParameters":{"id":4222,"nodeType":"ParameterList","parameters":[],"src":"11063:0:25"},"scope":4266,"src":"10946:9529:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4238,"nodeType":"Block","src":"21219:4774:25","statements":[{"AST":{"nodeType":"YulBlock","src":"21313:4674:25","statements":[{"body":{"nodeType":"YulBlock","src":"21406:224:25","statements":[{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"21431:24:25"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"21457:26:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21424:6:25"},"nodeType":"YulFunctionCall","src":"21424:60:25"},"nodeType":"YulExpressionStatement","src":"21424:60:25"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"21508:26:25"},{"name":"token","nodeType":"YulIdentifier","src":"21536:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21501:6:25"},"nodeType":"YulFunctionCall","src":"21501:41:25"},"nodeType":"YulExpressionStatement","src":"21501:41:25"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"21566:24:25"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"21592:23:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"21559:6:25"},"nodeType":"YulFunctionCall","src":"21559:57:25"},"nodeType":"YulExpressionStatement","src":"21559:57:25"}]},"condition":{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"21398:5:25"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"21386:11:25"},"nodeType":"YulFunctionCall","src":"21386:18:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"21379:6:25"},"nodeType":"YulFunctionCall","src":"21379:26:25"},"nodeType":"YulIf","src":"21376:254:25"},{"nodeType":"YulVariableDeclaration","src":"21804:46:25","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"21828:21:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21822:5:25"},"nodeType":"YulFunctionCall","src":"21822:28:25"},"variables":[{"name":"memPointer","nodeType":"YulTypedName","src":"21808:10:25","type":""}]},{"expression":{"arguments":[{"name":"ERC721_transferFrom_sig_ptr","nodeType":"YulIdentifier","src":"21945:27:25"},{"name":"ERC721_transferFrom_signature","nodeType":"YulIdentifier","src":"21974:29:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21938:6:25"},"nodeType":"YulFunctionCall","src":"21938:66:25"},"nodeType":"YulExpressionStatement","src":"21938:66:25"},{"expression":{"arguments":[{"name":"ERC721_transferFrom_from_ptr","nodeType":"YulIdentifier","src":"22024:28:25"},{"name":"from","nodeType":"YulIdentifier","src":"22054:4:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22017:6:25"},"nodeType":"YulFunctionCall","src":"22017:42:25"},"nodeType":"YulExpressionStatement","src":"22017:42:25"},{"expression":{"arguments":[{"name":"ERC721_transferFrom_to_ptr","nodeType":"YulIdentifier","src":"22079:26:25"},{"name":"to","nodeType":"YulIdentifier","src":"22107:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22072:6:25"},"nodeType":"YulFunctionCall","src":"22072:38:25"},"nodeType":"YulExpressionStatement","src":"22072:38:25"},{"expression":{"arguments":[{"name":"ERC721_transferFrom_id_ptr","nodeType":"YulIdentifier","src":"22130:26:25"},{"name":"identifier","nodeType":"YulIdentifier","src":"22158:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22123:6:25"},"nodeType":"YulFunctionCall","src":"22123:46:25"},"nodeType":"YulExpressionStatement","src":"22123:46:25"},{"nodeType":"YulVariableDeclaration","src":"22238:225:25","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"22275:3:25"},"nodeType":"YulFunctionCall","src":"22275:5:25"},{"name":"token","nodeType":"YulIdentifier","src":"22298:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"22321:1:25","type":"","value":"0"},{"name":"ERC721_transferFrom_sig_ptr","nodeType":"YulIdentifier","src":"22340:27:25"},{"name":"ERC721_transferFrom_length","nodeType":"YulIdentifier","src":"22385:26:25"},{"kind":"number","nodeType":"YulLiteral","src":"22429:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22448:1:25","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"22253:4:25"},"nodeType":"YulFunctionCall","src":"22253:210:25"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"22242:7:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"22537:3249:25","statements":[{"body":{"nodeType":"YulBlock","src":"22696:2308:25","statements":[{"nodeType":"YulVariableDeclaration","src":"23007:143:25","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"23063:14:25"},"nodeType":"YulFunctionCall","src":"23063:16:25"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"23081:13:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23059:3:25"},"nodeType":"YulFunctionCall","src":"23059:36:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"23121:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"23030:3:25"},"nodeType":"YulFunctionCall","src":"23030:120:25"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"23011:15:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"23398:42:25","value":{"arguments":[{"name":"memPointer","nodeType":"YulIdentifier","src":"23420:10:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"23432:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"23416:3:25"},"nodeType":"YulFunctionCall","src":"23416:24:25"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"23402:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"23531:45:25","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"23547:11:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"23560:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"23543:3:25"},"nodeType":"YulFunctionCall","src":"23543:33:25"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"23535:4:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"23701:734:25","statements":[{"nodeType":"YulAssignment","src":"23727:686:25","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"23768:4:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"23884:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"23901:10:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23880:3:25"},"nodeType":"YulFunctionCall","src":"23880:32:25"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"23950:11:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"23839:3:25"},"nodeType":"YulFunctionCall","src":"23839:156:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"24119:15:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"24136:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"24115:3:25"},"nodeType":"YulFunctionCall","src":"24115:37:25"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"24198:10:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"24210:10:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"24194:3:25"},"nodeType":"YulFunctionCall","src":"24194:27:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24070:3:25"},"nodeType":"YulFunctionCall","src":"24070:189:25"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"24297:26:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"24029:3:25"},"nodeType":"YulFunctionCall","src":"24029:328:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23802:3:25"},"nodeType":"YulFunctionCall","src":"23802:585:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23735:3:25"},"nodeType":"YulFunctionCall","src":"23735:678:25"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"23727:4:25"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"23672:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"23689:10:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23669:2:25"},"nodeType":"YulFunctionCall","src":"23669:31:25"},"nodeType":"YulIf","src":"23666:769:25"},{"body":{"nodeType":"YulBlock","src":"24686:300:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24808:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24811:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"24814:14:25"},"nodeType":"YulFunctionCall","src":"24814:16:25"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"24793:14:25"},"nodeType":"YulFunctionCall","src":"24793:38:25"},"nodeType":"YulExpressionStatement","src":"24793:38:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24944:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"24947:14:25"},"nodeType":"YulFunctionCall","src":"24947:16:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24937:6:25"},"nodeType":"YulFunctionCall","src":"24937:27:25"},"nodeType":"YulExpressionStatement","src":"24937:27:25"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"24656:4:25"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"24662:14:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24652:3:25"},"nodeType":"YulFunctionCall","src":"24652:25:25"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"24679:3:25"},"nodeType":"YulFunctionCall","src":"24679:5:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"24649:2:25"},"nodeType":"YulFunctionCall","src":"24649:36:25"},"nodeType":"YulIf","src":"24646:340:25"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"22679:14:25"},"nodeType":"YulFunctionCall","src":"22679:16:25"},"nodeType":"YulIf","src":"22676:2328:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"25116:41:25"},{"name":"TokenTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"25179:43:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25088:6:25"},"nodeType":"YulFunctionCall","src":"25088:152:25"},"nodeType":"YulExpressionStatement","src":"25088:152:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_token_ptr","nodeType":"YulIdentifier","src":"25264:43:25"},{"name":"token","nodeType":"YulIdentifier","src":"25309:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25257:6:25"},"nodeType":"YulFunctionCall","src":"25257:58:25"},"nodeType":"YulExpressionStatement","src":"25257:58:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_from_ptr","nodeType":"YulIdentifier","src":"25339:42:25"},{"name":"from","nodeType":"YulIdentifier","src":"25383:4:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25332:6:25"},"nodeType":"YulFunctionCall","src":"25332:56:25"},"nodeType":"YulExpressionStatement","src":"25332:56:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_to_ptr","nodeType":"YulIdentifier","src":"25412:40:25"},{"name":"to","nodeType":"YulIdentifier","src":"25454:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25405:6:25"},"nodeType":"YulFunctionCall","src":"25405:52:25"},"nodeType":"YulExpressionStatement","src":"25405:52:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_id_ptr","nodeType":"YulIdentifier","src":"25481:40:25"},{"name":"identifier","nodeType":"YulIdentifier","src":"25523:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25474:6:25"},"nodeType":"YulFunctionCall","src":"25474:60:25"},"nodeType":"YulExpressionStatement","src":"25474:60:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_amount_ptr","nodeType":"YulIdentifier","src":"25558:44:25"},{"kind":"number","nodeType":"YulLiteral","src":"25604:1:25","type":"","value":"1"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25551:6:25"},"nodeType":"YulFunctionCall","src":"25551:55:25"},"nodeType":"YulExpressionStatement","src":"25551:55:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"25651:41:25"},{"name":"TokenTransferGenericFailure_error_length","nodeType":"YulIdentifier","src":"25714:40:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25623:6:25"},"nodeType":"YulFunctionCall","src":"25623:149:25"},"nodeType":"YulExpressionStatement","src":"25623:149:25"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"22528:7:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"22521:6:25"},"nodeType":"YulFunctionCall","src":"22521:15:25"},"nodeType":"YulIf","src":"22518:3268:25"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"25864:21:25"},{"name":"memPointer","nodeType":"YulIdentifier","src":"25887:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25857:6:25"},"nodeType":"YulFunctionCall","src":"25857:41:25"},"nodeType":"YulExpressionStatement","src":"25857:41:25"},{"expression":{"arguments":[{"name":"ZeroSlot","nodeType":"YulIdentifier","src":"25965:8:25"},{"kind":"number","nodeType":"YulLiteral","src":"25975:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25958:6:25"},"nodeType":"YulFunctionCall","src":"25958:19:25"},"nodeType":"YulExpressionStatement","src":"25958:19:25"}]},"evmVersion":"london","externalReferences":[{"declaration":4271,"isOffset":false,"isSlot":false,"src":"23081:13:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"23547:11:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"23950:11:25","valueSize":1},{"declaration":4386,"isOffset":false,"isSlot":false,"src":"22024:28:25","valueSize":1},{"declaration":4392,"isOffset":false,"isSlot":false,"src":"22130:26:25","valueSize":1},{"declaration":4395,"isOffset":false,"isSlot":false,"src":"22385:26:25","valueSize":1},{"declaration":4383,"isOffset":false,"isSlot":false,"src":"21945:27:25","valueSize":1},{"declaration":4383,"isOffset":false,"isSlot":false,"src":"22340:27:25","valueSize":1},{"declaration":4380,"isOffset":false,"isSlot":false,"src":"21974:29:25","valueSize":1},{"declaration":4389,"isOffset":false,"isSlot":false,"src":"22079:26:25","valueSize":1},{"declaration":4458,"isOffset":false,"isSlot":false,"src":"24662:14:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"21828:21:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"25864:21:25","valueSize":1},{"declaration":4464,"isOffset":false,"isSlot":false,"src":"24297:26:25","valueSize":1},{"declaration":4408,"isOffset":false,"isSlot":false,"src":"21592:23:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"21431:24:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"21566:24:25","valueSize":1},{"declaration":4399,"isOffset":false,"isSlot":false,"src":"21457:26:25","valueSize":1},{"declaration":4405,"isOffset":false,"isSlot":false,"src":"21508:26:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"23121:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"23432:7:25","valueSize":1},{"declaration":4430,"isOffset":false,"isSlot":false,"src":"25558:44:25","valueSize":1},{"declaration":4421,"isOffset":false,"isSlot":false,"src":"25339:42:25","valueSize":1},{"declaration":4427,"isOffset":false,"isSlot":false,"src":"25481:40:25","valueSize":1},{"declaration":4433,"isOffset":false,"isSlot":false,"src":"25714:40:25","valueSize":1},{"declaration":4415,"isOffset":false,"isSlot":false,"src":"25116:41:25","valueSize":1},{"declaration":4415,"isOffset":false,"isSlot":false,"src":"25651:41:25","valueSize":1},{"declaration":4412,"isOffset":false,"isSlot":false,"src":"25179:43:25","valueSize":1},{"declaration":4424,"isOffset":false,"isSlot":false,"src":"25412:40:25","valueSize":1},{"declaration":4418,"isOffset":false,"isSlot":false,"src":"25264:43:25","valueSize":1},{"declaration":4286,"isOffset":false,"isSlot":false,"src":"25965:8:25","valueSize":1},{"declaration":4230,"isOffset":false,"isSlot":false,"src":"22054:4:25","valueSize":1},{"declaration":4230,"isOffset":false,"isSlot":false,"src":"25383:4:25","valueSize":1},{"declaration":4234,"isOffset":false,"isSlot":false,"src":"22158:10:25","valueSize":1},{"declaration":4234,"isOffset":false,"isSlot":false,"src":"25523:10:25","valueSize":1},{"declaration":4232,"isOffset":false,"isSlot":false,"src":"22107:2:25","valueSize":1},{"declaration":4232,"isOffset":false,"isSlot":false,"src":"25454:2:25","valueSize":1},{"declaration":4228,"isOffset":false,"isSlot":false,"src":"21398:5:25","valueSize":1},{"declaration":4228,"isOffset":false,"isSlot":false,"src":"21536:5:25","valueSize":1},{"declaration":4228,"isOffset":false,"isSlot":false,"src":"22298:5:25","valueSize":1},{"declaration":4228,"isOffset":false,"isSlot":false,"src":"25309:5:25","valueSize":1}],"id":4237,"nodeType":"InlineAssembly","src":"21304:4683:25"}]},"documentation":{"id":4226,"nodeType":"StructuredDocumentation","src":"20481:593:25","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":4239,"implemented":true,"kind":"function","modifiers":[],"name":"_performERC721Transfer","nameLocation":"21088:22:25","nodeType":"FunctionDefinition","parameters":{"id":4235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4228,"mutability":"mutable","name":"token","nameLocation":"21128:5:25","nodeType":"VariableDeclaration","scope":4239,"src":"21120:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4227,"name":"address","nodeType":"ElementaryTypeName","src":"21120:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4230,"mutability":"mutable","name":"from","nameLocation":"21151:4:25","nodeType":"VariableDeclaration","scope":4239,"src":"21143:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4229,"name":"address","nodeType":"ElementaryTypeName","src":"21143:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4232,"mutability":"mutable","name":"to","nameLocation":"21173:2:25","nodeType":"VariableDeclaration","scope":4239,"src":"21165:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4231,"name":"address","nodeType":"ElementaryTypeName","src":"21165:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4234,"mutability":"mutable","name":"identifier","nameLocation":"21193:10:25","nodeType":"VariableDeclaration","scope":4239,"src":"21185:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4233,"name":"uint256","nodeType":"ElementaryTypeName","src":"21185:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21110:99:25"},"returnParameters":{"id":4236,"nodeType":"ParameterList","parameters":[],"src":"21219:0:25"},"scope":4266,"src":"21079:4914:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4254,"nodeType":"Block","src":"26806:5455:25","statements":[{"AST":{"nodeType":"YulBlock","src":"26901:5354:25","statements":[{"body":{"nodeType":"YulBlock","src":"26994:224:25","statements":[{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"27019:24:25"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"27045:26:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27012:6:25"},"nodeType":"YulFunctionCall","src":"27012:60:25"},"nodeType":"YulExpressionStatement","src":"27012:60:25"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"27096:26:25"},{"name":"token","nodeType":"YulIdentifier","src":"27124:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27089:6:25"},"nodeType":"YulFunctionCall","src":"27089:41:25"},"nodeType":"YulExpressionStatement","src":"27089:41:25"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"27154:24:25"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"27180:23:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"27147:6:25"},"nodeType":"YulFunctionCall","src":"27147:57:25"},"nodeType":"YulExpressionStatement","src":"27147:57:25"}]},"condition":{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"26986:5:25"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"26974:11:25"},"nodeType":"YulFunctionCall","src":"26974:18:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"26967:6:25"},"nodeType":"YulFunctionCall","src":"26967:26:25"},"nodeType":"YulIf","src":"26964:254:25"},{"nodeType":"YulVariableDeclaration","src":"27386:46:25","value":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"27410:21:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27404:5:25"},"nodeType":"YulFunctionCall","src":"27404:28:25"},"variables":[{"name":"memPointer","nodeType":"YulTypedName","src":"27390:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"27445:31:25","value":{"arguments":[{"name":"Slot0x80","nodeType":"YulIdentifier","src":"27467:8:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27461:5:25"},"nodeType":"YulFunctionCall","src":"27461:15:25"},"variables":[{"name":"slot0x80","nodeType":"YulTypedName","src":"27449:8:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"27489:31:25","value":{"arguments":[{"name":"Slot0xA0","nodeType":"YulIdentifier","src":"27511:8:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27505:5:25"},"nodeType":"YulFunctionCall","src":"27505:15:25"},"variables":[{"name":"slot0xA0","nodeType":"YulTypedName","src":"27493:8:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"27533:31:25","value":{"arguments":[{"name":"Slot0xC0","nodeType":"YulIdentifier","src":"27555:8:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27549:5:25"},"nodeType":"YulFunctionCall","src":"27549:15:25"},"variables":[{"name":"slot0xC0","nodeType":"YulTypedName","src":"27537:8:25","type":""}]},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_sig_ptr","nodeType":"YulIdentifier","src":"27680:32:25"},{"name":"ERC1155_safeTransferFrom_signature","nodeType":"YulIdentifier","src":"27730:34:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27656:6:25"},"nodeType":"YulFunctionCall","src":"27656:122:25"},"nodeType":"YulExpressionStatement","src":"27656:122:25"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_from_ptr","nodeType":"YulIdentifier","src":"27798:33:25"},{"name":"from","nodeType":"YulIdentifier","src":"27833:4:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27791:6:25"},"nodeType":"YulFunctionCall","src":"27791:47:25"},"nodeType":"YulExpressionStatement","src":"27791:47:25"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_to_ptr","nodeType":"YulIdentifier","src":"27858:31:25"},{"name":"to","nodeType":"YulIdentifier","src":"27891:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27851:6:25"},"nodeType":"YulFunctionCall","src":"27851:43:25"},"nodeType":"YulExpressionStatement","src":"27851:43:25"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_id_ptr","nodeType":"YulIdentifier","src":"27914:31:25"},{"name":"identifier","nodeType":"YulIdentifier","src":"27947:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27907:6:25"},"nodeType":"YulFunctionCall","src":"27907:51:25"},"nodeType":"YulExpressionStatement","src":"27907:51:25"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_amount_ptr","nodeType":"YulIdentifier","src":"27978:35:25"},{"name":"amount","nodeType":"YulIdentifier","src":"28015:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27971:6:25"},"nodeType":"YulFunctionCall","src":"27971:51:25"},"nodeType":"YulExpressionStatement","src":"27971:51:25"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_data_offset_ptr","nodeType":"YulIdentifier","src":"28059:40:25"},{"name":"ERC1155_safeTransferFrom_data_length_offset","nodeType":"YulIdentifier","src":"28117:43:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28035:6:25"},"nodeType":"YulFunctionCall","src":"28035:139:25"},"nodeType":"YulExpressionStatement","src":"28035:139:25"},{"expression":{"arguments":[{"name":"ERC1155_safeTransferFrom_data_length_ptr","nodeType":"YulIdentifier","src":"28194:40:25"},{"kind":"number","nodeType":"YulLiteral","src":"28236:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28187:6:25"},"nodeType":"YulFunctionCall","src":"28187:51:25"},"nodeType":"YulExpressionStatement","src":"28187:51:25"},{"nodeType":"YulVariableDeclaration","src":"28307:235:25","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"28344:3:25"},"nodeType":"YulFunctionCall","src":"28344:5:25"},{"name":"token","nodeType":"YulIdentifier","src":"28367:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"28390:1:25","type":"","value":"0"},{"name":"ERC1155_safeTransferFrom_sig_ptr","nodeType":"YulIdentifier","src":"28409:32:25"},{"name":"ERC1155_safeTransferFrom_length","nodeType":"YulIdentifier","src":"28459:31:25"},{"kind":"number","nodeType":"YulLiteral","src":"28508:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28527:1:25","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"28322:4:25"},"nodeType":"YulFunctionCall","src":"28322:220:25"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"28311:7:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"28616:3254:25","statements":[{"body":{"nodeType":"YulBlock","src":"28775:2308:25","statements":[{"nodeType":"YulVariableDeclaration","src":"29086:143:25","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"29142:14:25"},"nodeType":"YulFunctionCall","src":"29142:16:25"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"29160:13:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29138:3:25"},"nodeType":"YulFunctionCall","src":"29138:36:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"29200:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"29109:3:25"},"nodeType":"YulFunctionCall","src":"29109:120:25"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"29090:15:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"29477:42:25","value":{"arguments":[{"name":"memPointer","nodeType":"YulIdentifier","src":"29499:10:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"29511:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"29495:3:25"},"nodeType":"YulFunctionCall","src":"29495:24:25"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"29481:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"29610:45:25","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"29626:11:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"29639:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"29622:3:25"},"nodeType":"YulFunctionCall","src":"29622:33:25"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"29614:4:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"29780:734:25","statements":[{"nodeType":"YulAssignment","src":"29806:686:25","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"29847:4:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"29963:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"29980:10:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29959:3:25"},"nodeType":"YulFunctionCall","src":"29959:32:25"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"30029:11:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"29918:3:25"},"nodeType":"YulFunctionCall","src":"29918:156:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"30198:15:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"30215:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"30194:3:25"},"nodeType":"YulFunctionCall","src":"30194:37:25"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"30277:10:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"30289:10:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"30273:3:25"},"nodeType":"YulFunctionCall","src":"30273:27:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"30149:3:25"},"nodeType":"YulFunctionCall","src":"30149:189:25"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"30376:26:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"30108:3:25"},"nodeType":"YulFunctionCall","src":"30108:328:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29881:3:25"},"nodeType":"YulFunctionCall","src":"29881:585:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29814:3:25"},"nodeType":"YulFunctionCall","src":"29814:678:25"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"29806:4:25"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"29751:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"29768:10:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"29748:2:25"},"nodeType":"YulFunctionCall","src":"29748:31:25"},"nodeType":"YulIf","src":"29745:769:25"},{"body":{"nodeType":"YulBlock","src":"30765:300:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30887:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30890:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"30893:14:25"},"nodeType":"YulFunctionCall","src":"30893:16:25"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"30872:14:25"},"nodeType":"YulFunctionCall","src":"30872:38:25"},"nodeType":"YulExpressionStatement","src":"30872:38:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"31023:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"31026:14:25"},"nodeType":"YulFunctionCall","src":"31026:16:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"31016:6:25"},"nodeType":"YulFunctionCall","src":"31016:27:25"},"nodeType":"YulExpressionStatement","src":"31016:27:25"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"30735:4:25"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"30741:14:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30731:3:25"},"nodeType":"YulFunctionCall","src":"30731:25:25"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"30758:3:25"},"nodeType":"YulFunctionCall","src":"30758:5:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"30728:2:25"},"nodeType":"YulFunctionCall","src":"30728:36:25"},"nodeType":"YulIf","src":"30725:340:25"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"28758:14:25"},"nodeType":"YulFunctionCall","src":"28758:16:25"},"nodeType":"YulIf","src":"28755:2328:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"31195:41:25"},{"name":"TokenTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"31258:43:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31167:6:25"},"nodeType":"YulFunctionCall","src":"31167:152:25"},"nodeType":"YulExpressionStatement","src":"31167:152:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_token_ptr","nodeType":"YulIdentifier","src":"31343:43:25"},{"name":"token","nodeType":"YulIdentifier","src":"31388:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31336:6:25"},"nodeType":"YulFunctionCall","src":"31336:58:25"},"nodeType":"YulExpressionStatement","src":"31336:58:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_from_ptr","nodeType":"YulIdentifier","src":"31418:42:25"},{"name":"from","nodeType":"YulIdentifier","src":"31462:4:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31411:6:25"},"nodeType":"YulFunctionCall","src":"31411:56:25"},"nodeType":"YulExpressionStatement","src":"31411:56:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_to_ptr","nodeType":"YulIdentifier","src":"31491:40:25"},{"name":"to","nodeType":"YulIdentifier","src":"31533:2:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31484:6:25"},"nodeType":"YulFunctionCall","src":"31484:52:25"},"nodeType":"YulExpressionStatement","src":"31484:52:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_id_ptr","nodeType":"YulIdentifier","src":"31560:40:25"},{"name":"identifier","nodeType":"YulIdentifier","src":"31602:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31553:6:25"},"nodeType":"YulFunctionCall","src":"31553:60:25"},"nodeType":"YulExpressionStatement","src":"31553:60:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_amount_ptr","nodeType":"YulIdentifier","src":"31637:44:25"},{"name":"amount","nodeType":"YulIdentifier","src":"31683:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31630:6:25"},"nodeType":"YulFunctionCall","src":"31630:60:25"},"nodeType":"YulExpressionStatement","src":"31630:60:25"},{"expression":{"arguments":[{"name":"TokenTransferGenericFailure_error_sig_ptr","nodeType":"YulIdentifier","src":"31735:41:25"},{"name":"TokenTransferGenericFailure_error_length","nodeType":"YulIdentifier","src":"31798:40:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"31707:6:25"},"nodeType":"YulFunctionCall","src":"31707:149:25"},"nodeType":"YulExpressionStatement","src":"31707:149:25"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"28607:7:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"28600:6:25"},"nodeType":"YulFunctionCall","src":"28600:15:25"},"nodeType":"YulIf","src":"28597:3273:25"},{"expression":{"arguments":[{"name":"Slot0x80","nodeType":"YulIdentifier","src":"31891:8:25"},{"name":"slot0x80","nodeType":"YulIdentifier","src":"31901:8:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31884:6:25"},"nodeType":"YulFunctionCall","src":"31884:26:25"},"nodeType":"YulExpressionStatement","src":"31884:26:25"},{"expression":{"arguments":[{"name":"Slot0xA0","nodeType":"YulIdentifier","src":"31952:8:25"},{"name":"slot0xA0","nodeType":"YulIdentifier","src":"31962:8:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31945:6:25"},"nodeType":"YulFunctionCall","src":"31945:26:25"},"nodeType":"YulExpressionStatement","src":"31945:26:25"},{"expression":{"arguments":[{"name":"Slot0xC0","nodeType":"YulIdentifier","src":"32013:8:25"},{"name":"slot0xC0","nodeType":"YulIdentifier","src":"32023:8:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32006:6:25"},"nodeType":"YulFunctionCall","src":"32006:26:25"},"nodeType":"YulExpressionStatement","src":"32006:26:25"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"32132:21:25"},{"name":"memPointer","nodeType":"YulIdentifier","src":"32155:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32125:6:25"},"nodeType":"YulFunctionCall","src":"32125:41:25"},"nodeType":"YulExpressionStatement","src":"32125:41:25"},{"expression":{"arguments":[{"name":"ZeroSlot","nodeType":"YulIdentifier","src":"32233:8:25"},{"kind":"number","nodeType":"YulLiteral","src":"32243:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32226:6:25"},"nodeType":"YulFunctionCall","src":"32226:19:25"},"nodeType":"YulExpressionStatement","src":"32226:19:25"}]},"evmVersion":"london","externalReferences":[{"declaration":4271,"isOffset":false,"isSlot":false,"src":"29160:13:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"29626:11:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"30029:11:25","valueSize":1},{"declaration":4352,"isOffset":false,"isSlot":false,"src":"27978:35:25","valueSize":1},{"declaration":4364,"isOffset":false,"isSlot":false,"src":"28117:43:25","valueSize":1},{"declaration":4358,"isOffset":false,"isSlot":false,"src":"28194:40:25","valueSize":1},{"declaration":4355,"isOffset":false,"isSlot":false,"src":"28059:40:25","valueSize":1},{"declaration":4343,"isOffset":false,"isSlot":false,"src":"27798:33:25","valueSize":1},{"declaration":4349,"isOffset":false,"isSlot":false,"src":"27914:31:25","valueSize":1},{"declaration":4361,"isOffset":false,"isSlot":false,"src":"28459:31:25","valueSize":1},{"declaration":4340,"isOffset":false,"isSlot":false,"src":"27680:32:25","valueSize":1},{"declaration":4340,"isOffset":false,"isSlot":false,"src":"28409:32:25","valueSize":1},{"declaration":4337,"isOffset":false,"isSlot":false,"src":"27730:34:25","valueSize":1},{"declaration":4346,"isOffset":false,"isSlot":false,"src":"27858:31:25","valueSize":1},{"declaration":4458,"isOffset":false,"isSlot":false,"src":"30741:14:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"27410:21:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"32132:21:25","valueSize":1},{"declaration":4464,"isOffset":false,"isSlot":false,"src":"30376:26:25","valueSize":1},{"declaration":4408,"isOffset":false,"isSlot":false,"src":"27180:23:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"27019:24:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"27154:24:25","valueSize":1},{"declaration":4399,"isOffset":false,"isSlot":false,"src":"27045:26:25","valueSize":1},{"declaration":4405,"isOffset":false,"isSlot":false,"src":"27096:26:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"29200:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"29511:7:25","valueSize":1},{"declaration":4292,"isOffset":false,"isSlot":false,"src":"27467:8:25","valueSize":1},{"declaration":4292,"isOffset":false,"isSlot":false,"src":"31891:8:25","valueSize":1},{"declaration":4295,"isOffset":false,"isSlot":false,"src":"27511:8:25","valueSize":1},{"declaration":4295,"isOffset":false,"isSlot":false,"src":"31952:8:25","valueSize":1},{"declaration":4298,"isOffset":false,"isSlot":false,"src":"27555:8:25","valueSize":1},{"declaration":4298,"isOffset":false,"isSlot":false,"src":"32013:8:25","valueSize":1},{"declaration":4430,"isOffset":false,"isSlot":false,"src":"31637:44:25","valueSize":1},{"declaration":4421,"isOffset":false,"isSlot":false,"src":"31418:42:25","valueSize":1},{"declaration":4427,"isOffset":false,"isSlot":false,"src":"31560:40:25","valueSize":1},{"declaration":4433,"isOffset":false,"isSlot":false,"src":"31798:40:25","valueSize":1},{"declaration":4415,"isOffset":false,"isSlot":false,"src":"31195:41:25","valueSize":1},{"declaration":4415,"isOffset":false,"isSlot":false,"src":"31735:41:25","valueSize":1},{"declaration":4412,"isOffset":false,"isSlot":false,"src":"31258:43:25","valueSize":1},{"declaration":4424,"isOffset":false,"isSlot":false,"src":"31491:40:25","valueSize":1},{"declaration":4418,"isOffset":false,"isSlot":false,"src":"31343:43:25","valueSize":1},{"declaration":4286,"isOffset":false,"isSlot":false,"src":"32233:8:25","valueSize":1},{"declaration":4250,"isOffset":false,"isSlot":false,"src":"28015:6:25","valueSize":1},{"declaration":4250,"isOffset":false,"isSlot":false,"src":"31683:6:25","valueSize":1},{"declaration":4244,"isOffset":false,"isSlot":false,"src":"27833:4:25","valueSize":1},{"declaration":4244,"isOffset":false,"isSlot":false,"src":"31462:4:25","valueSize":1},{"declaration":4248,"isOffset":false,"isSlot":false,"src":"27947:10:25","valueSize":1},{"declaration":4248,"isOffset":false,"isSlot":false,"src":"31602:10:25","valueSize":1},{"declaration":4246,"isOffset":false,"isSlot":false,"src":"27891:2:25","valueSize":1},{"declaration":4246,"isOffset":false,"isSlot":false,"src":"31533:2:25","valueSize":1},{"declaration":4242,"isOffset":false,"isSlot":false,"src":"26986:5:25","valueSize":1},{"declaration":4242,"isOffset":false,"isSlot":false,"src":"27124:5:25","valueSize":1},{"declaration":4242,"isOffset":false,"isSlot":false,"src":"28367:5:25","valueSize":1},{"declaration":4242,"isOffset":false,"isSlot":false,"src":"31388:5:25","valueSize":1}],"id":4253,"nodeType":"InlineAssembly","src":"26892:5363:25"}]},"documentation":{"id":4240,"nodeType":"StructuredDocumentation","src":"25999:637:25","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":4255,"implemented":true,"kind":"function","modifiers":[],"name":"_performERC1155Transfer","nameLocation":"26650:23:25","nodeType":"FunctionDefinition","parameters":{"id":4251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4242,"mutability":"mutable","name":"token","nameLocation":"26691:5:25","nodeType":"VariableDeclaration","scope":4255,"src":"26683:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4241,"name":"address","nodeType":"ElementaryTypeName","src":"26683:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4244,"mutability":"mutable","name":"from","nameLocation":"26714:4:25","nodeType":"VariableDeclaration","scope":4255,"src":"26706:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4243,"name":"address","nodeType":"ElementaryTypeName","src":"26706:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4246,"mutability":"mutable","name":"to","nameLocation":"26736:2:25","nodeType":"VariableDeclaration","scope":4255,"src":"26728:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4245,"name":"address","nodeType":"ElementaryTypeName","src":"26728:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4248,"mutability":"mutable","name":"identifier","nameLocation":"26756:10:25","nodeType":"VariableDeclaration","scope":4255,"src":"26748:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4247,"name":"uint256","nodeType":"ElementaryTypeName","src":"26748:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4250,"mutability":"mutable","name":"amount","nameLocation":"26784:6:25","nodeType":"VariableDeclaration","scope":4255,"src":"26776:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4249,"name":"uint256","nodeType":"ElementaryTypeName","src":"26776:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26673:123:25"},"returnParameters":{"id":4252,"nodeType":"ParameterList","parameters":[],"src":"26806:0:25"},"scope":4266,"src":"26641:5620:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4264,"nodeType":"Block","src":"33326:11369:25","statements":[{"AST":{"nodeType":"YulBlock","src":"33416:11273:25","statements":[{"nodeType":"YulVariableDeclaration","src":"33430:32:25","value":{"name":"batchTransfers.length","nodeType":"YulIdentifier","src":"33441:21:25"},"variables":[{"name":"len","nodeType":"YulTypedName","src":"33434:3:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"33702:47:25","value":{"name":"batchTransfers.offset","nodeType":"YulIdentifier","src":"33728:21:25"},"variables":[{"name":"nextElementHeadPtr","nodeType":"YulTypedName","src":"33706:18:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"33988:38:25","value":{"name":"nextElementHeadPtr","nodeType":"YulIdentifier","src":"34008:18:25"},"variables":[{"name":"arrayHeadPtr","nodeType":"YulTypedName","src":"33992:12:25","type":""}]},{"expression":{"arguments":[{"name":"ConduitBatch1155Transfer_from_offset","nodeType":"YulIdentifier","src":"34224:36:25"},{"name":"ERC1155_safeBatchTransferFrom_signature","nodeType":"YulIdentifier","src":"34278:39:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34200:6:25"},"nodeType":"YulFunctionCall","src":"34200:131:25"},"nodeType":"YulExpressionStatement","src":"34200:131:25"},{"body":{"nodeType":"YulBlock","src":"34499:9791:25","statements":[{"nodeType":"YulVariableDeclaration","src":"34736:127:25","value":{"arguments":[{"name":"arrayHeadPtr","nodeType":"YulIdentifier","src":"34779:12:25"},{"arguments":[{"name":"nextElementHeadPtr","nodeType":"YulIdentifier","src":"34826:18:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"34813:12:25"},"nodeType":"YulFunctionCall","src":"34813:32:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34754:3:25"},"nodeType":"YulFunctionCall","src":"34754:109:25"},"variables":[{"name":"elementPtr","nodeType":"YulTypedName","src":"34740:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"34934:37:25","value":{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"34960:10:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"34947:12:25"},"nodeType":"YulFunctionCall","src":"34947:24:25"},"variables":[{"name":"token","nodeType":"YulTypedName","src":"34938:5:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"35072:240:25","statements":[{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"35101:24:25"},{"name":"NoContract_error_signature","nodeType":"YulIdentifier","src":"35127:26:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35094:6:25"},"nodeType":"YulFunctionCall","src":"35094:60:25"},"nodeType":"YulExpressionStatement","src":"35094:60:25"},{"expression":{"arguments":[{"name":"NoContract_error_token_ptr","nodeType":"YulIdentifier","src":"35182:26:25"},{"name":"token","nodeType":"YulIdentifier","src":"35210:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35175:6:25"},"nodeType":"YulFunctionCall","src":"35175:41:25"},"nodeType":"YulExpressionStatement","src":"35175:41:25"},{"expression":{"arguments":[{"name":"NoContract_error_sig_ptr","nodeType":"YulIdentifier","src":"35244:24:25"},{"name":"NoContract_error_length","nodeType":"YulIdentifier","src":"35270:23:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"35237:6:25"},"nodeType":"YulFunctionCall","src":"35237:57:25"},"nodeType":"YulExpressionStatement","src":"35237:57:25"}]},"condition":{"arguments":[{"arguments":[{"name":"token","nodeType":"YulIdentifier","src":"35064:5:25"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"35052:11:25"},"nodeType":"YulFunctionCall","src":"35052:18:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"35045:6:25"},"nodeType":"YulFunctionCall","src":"35045:26:25"},"nodeType":"YulIf","src":"35042:270:25"},{"nodeType":"YulVariableDeclaration","src":"35387:128:25","value":{"arguments":[{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"35442:10:25"},{"name":"ConduitBatch1155Transfer_ids_length_offset","nodeType":"YulIdentifier","src":"35454:42:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35438:3:25"},"nodeType":"YulFunctionCall","src":"35438:59:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"35404:12:25"},"nodeType":"YulFunctionCall","src":"35404:111:25"},"variables":[{"name":"idsLength","nodeType":"YulTypedName","src":"35391:9:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"35605:167:25","value":{"arguments":[{"name":"ConduitBatch1155Transfer_amounts_length_baseOffset","nodeType":"YulIdentifier","src":"35659:50:25"},{"arguments":[{"name":"idsLength","nodeType":"YulIdentifier","src":"35735:9:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"35746:7:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"35731:3:25"},"nodeType":"YulFunctionCall","src":"35731:23:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35634:3:25"},"nodeType":"YulFunctionCall","src":"35634:138:25"},"variables":[{"name":"expectedAmountsOffset","nodeType":"YulTypedName","src":"35609:21:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"35835:1341:25","value":{"arguments":[{"arguments":[{"arguments":[{"name":"idsLength","nodeType":"YulIdentifier","src":"36003:9:25"},{"arguments":[{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"36059:10:25"},{"name":"expectedAmountsOffset","nodeType":"YulIdentifier","src":"36071:21:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36055:3:25"},"nodeType":"YulFunctionCall","src":"36055:38:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"36042:12:25"},"nodeType":"YulFunctionCall","src":"36042:52:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"35971:2:25"},"nodeType":"YulFunctionCall","src":"35971:149:25"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"36360:10:25"},{"name":"ConduitBatch1155Transfer_ids_head_offset","nodeType":"YulIdentifier","src":"36412:40:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36315:3:25"},"nodeType":"YulFunctionCall","src":"36315:175:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"36265:12:25"},"nodeType":"YulFunctionCall","src":"36265:259:25"},{"name":"ConduitBatch1155Transfer_ids_length_offset","nodeType":"YulIdentifier","src":"36558:42:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"36229:2:25"},"nodeType":"YulFunctionCall","src":"36229:401:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"36861:10:25"},{"name":"ConduitBatchTransfer_amounts_head_offset","nodeType":"YulIdentifier","src":"36913:40:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36816:3:25"},"nodeType":"YulFunctionCall","src":"36816:175:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"36766:12:25"},"nodeType":"YulFunctionCall","src":"36766:259:25"},{"name":"expectedAmountsOffset","nodeType":"YulIdentifier","src":"37059:21:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"36730:2:25"},"nodeType":"YulFunctionCall","src":"36730:380:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"36146:3:25"},"nodeType":"YulFunctionCall","src":"36146:990:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"35886:3:25"},"nodeType":"YulFunctionCall","src":"35886:1272:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"35858:6:25"},"nodeType":"YulFunctionCall","src":"35858:1318:25"},"variables":[{"name":"invalidEncoding","nodeType":"YulTypedName","src":"35839:15:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"37283:373:25","statements":[{"expression":{"arguments":[{"name":"Invalid1155BatchTransferEncoding_ptr","nodeType":"YulIdentifier","src":"37337:36:25"},{"name":"Invalid1155BatchTransferEncoding_selector","nodeType":"YulIdentifier","src":"37399:41:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"37305:6:25"},"nodeType":"YulFunctionCall","src":"37305:157:25"},"nodeType":"YulExpressionStatement","src":"37305:157:25"},{"expression":{"arguments":[{"name":"Invalid1155BatchTransferEncoding_ptr","nodeType":"YulIdentifier","src":"37515:36:25"},{"name":"Invalid1155BatchTransferEncoding_length","nodeType":"YulIdentifier","src":"37577:39:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"37483:6:25"},"nodeType":"YulFunctionCall","src":"37483:155:25"},"nodeType":"YulExpressionStatement","src":"37483:155:25"}]},"condition":{"name":"invalidEncoding","nodeType":"YulIdentifier","src":"37267:15:25"},"nodeType":"YulIf","src":"37264:392:25"},{"nodeType":"YulAssignment","src":"37738:54:25","value":{"arguments":[{"name":"nextElementHeadPtr","nodeType":"YulIdentifier","src":"37764:18:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"37784:7:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37760:3:25"},"nodeType":"YulFunctionCall","src":"37760:32:25"},"variableNames":[{"name":"nextElementHeadPtr","nodeType":"YulIdentifier","src":"37738:18:25"}]},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_ptr","nodeType":"YulIdentifier","src":"37923:27:25"},{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"37976:10:25"},{"name":"ConduitBatch1155Transfer_from_offset","nodeType":"YulIdentifier","src":"37988:36:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37972:3:25"},"nodeType":"YulFunctionCall","src":"37972:53:25"},{"name":"ConduitBatch1155Transfer_usable_head_size","nodeType":"YulIdentifier","src":"38047:41:25"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"37889:12:25"},"nodeType":"YulFunctionCall","src":"37889:217:25"},"nodeType":"YulExpressionStatement","src":"37889:217:25"},{"nodeType":"YulVariableDeclaration","src":"38281:64:25","value":{"arguments":[{"name":"TwoWords","nodeType":"YulIdentifier","src":"38310:8:25"},{"arguments":[{"name":"idsLength","nodeType":"YulIdentifier","src":"38324:9:25"},{"name":"TwoWords","nodeType":"YulIdentifier","src":"38335:8:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"38320:3:25"},"nodeType":"YulFunctionCall","src":"38320:24:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38306:3:25"},"nodeType":"YulFunctionCall","src":"38306:39:25"},"variables":[{"name":"idsAndAmountsSize","nodeType":"YulTypedName","src":"38285:17:25","type":""}]},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_data_head_ptr","nodeType":"YulIdentifier","src":"38458:37:25"},{"arguments":[{"name":"BatchTransfer1155Params_ids_length_offset","nodeType":"YulIdentifier","src":"38546:41:25"},{"name":"idsAndAmountsSize","nodeType":"YulIdentifier","src":"38613:17:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38517:3:25"},"nodeType":"YulFunctionCall","src":"38517:135:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"38430:6:25"},"nodeType":"YulFunctionCall","src":"38430:240:25"},"nodeType":"YulExpressionStatement","src":"38430:240:25"},{"expression":{"arguments":[{"arguments":[{"name":"BatchTransfer1155Params_data_length_basePtr","nodeType":"YulIdentifier","src":"38816:43:25"},{"name":"idsAndAmountsSize","nodeType":"YulIdentifier","src":"38885:17:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38787:3:25"},"nodeType":"YulFunctionCall","src":"38787:137:25"},{"kind":"number","nodeType":"YulLiteral","src":"38946:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"38759:6:25"},"nodeType":"YulFunctionCall","src":"38759:206:25"},"nodeType":"YulExpressionStatement","src":"38759:206:25"},{"nodeType":"YulVariableDeclaration","src":"39062:147:25","value":{"arguments":[{"name":"BatchTransfer1155Params_calldata_baseSize","nodeType":"YulIdentifier","src":"39111:41:25"},{"name":"idsAndAmountsSize","nodeType":"YulIdentifier","src":"39174:17:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39086:3:25"},"nodeType":"YulFunctionCall","src":"39086:123:25"},"variables":[{"name":"transferDataSize","nodeType":"YulTypedName","src":"39066:16:25","type":""}]},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_ids_length_ptr","nodeType":"YulIdentifier","src":"39340:38:25"},{"arguments":[{"name":"elementPtr","nodeType":"YulIdentifier","src":"39404:10:25"},{"name":"ConduitBatch1155Transfer_ids_length_offset","nodeType":"YulIdentifier","src":"39416:42:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39400:3:25"},"nodeType":"YulFunctionCall","src":"39400:59:25"},{"name":"idsAndAmountsSize","nodeType":"YulIdentifier","src":"39481:17:25"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"39306:12:25"},"nodeType":"YulFunctionCall","src":"39306:210:25"},"nodeType":"YulExpressionStatement","src":"39306:210:25"},{"nodeType":"YulVariableDeclaration","src":"39595:318:25","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"39636:3:25"},"nodeType":"YulFunctionCall","src":"39636:5:25"},{"name":"token","nodeType":"YulIdentifier","src":"39663:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"39690:1:25","type":"","value":"0"},{"name":"ConduitBatch1155Transfer_from_offset","nodeType":"YulIdentifier","src":"39713:36:25"},{"name":"transferDataSize","nodeType":"YulIdentifier","src":"39794:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"39871:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"39894:1:25","type":"","value":"0"}],"functionName":{"name":"call","nodeType":"YulIdentifier","src":"39610:4:25"},"nodeType":"YulFunctionCall","src":"39610:303:25"},"variables":[{"name":"success","nodeType":"YulTypedName","src":"39599:7:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"39995:4281:25","statements":[{"body":{"nodeType":"YulBlock","src":"40166:2976:25","statements":[{"nodeType":"YulVariableDeclaration","src":"40499:155:25","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"40559:14:25"},"nodeType":"YulFunctionCall","src":"40559:16:25"},{"name":"AlmostOneWord","nodeType":"YulIdentifier","src":"40577:13:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40555:3:25"},"nodeType":"YulFunctionCall","src":"40555:36:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"40621:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"40522:3:25"},"nodeType":"YulFunctionCall","src":"40522:132:25"},"variables":[{"name":"returnDataWords","nodeType":"YulTypedName","src":"40503:15:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"41275:48:25","value":{"arguments":[{"name":"transferDataSize","nodeType":"YulIdentifier","src":"41297:16:25"},{"name":"OneWord","nodeType":"YulIdentifier","src":"41315:7:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"41293:3:25"},"nodeType":"YulFunctionCall","src":"41293:30:25"},"variables":[{"name":"msizeWords","nodeType":"YulTypedName","src":"41279:10:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"41422:45:25","value":{"arguments":[{"name":"CostPerWord","nodeType":"YulIdentifier","src":"41438:11:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"41451:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"41434:3:25"},"nodeType":"YulFunctionCall","src":"41434:33:25"},"variables":[{"name":"cost","nodeType":"YulTypedName","src":"41426:4:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"41600:944:25","statements":[{"nodeType":"YulAssignment","src":"41630:888:25","value":{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"41675:4:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"41803:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"41820:10:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"41799:3:25"},"nodeType":"YulFunctionCall","src":"41799:32:25"},{"name":"CostPerWord","nodeType":"YulIdentifier","src":"41873:11:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"41754:3:25"},"nodeType":"YulFunctionCall","src":"41754:168:25"},{"arguments":[{"arguments":[{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"42107:15:25"},{"name":"returnDataWords","nodeType":"YulIdentifier","src":"42172:15:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"42054:3:25"},"nodeType":"YulFunctionCall","src":"42054:179:25"},{"arguments":[{"name":"msizeWords","nodeType":"YulIdentifier","src":"42283:10:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"42295:10:25"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"42279:3:25"},"nodeType":"YulFunctionCall","src":"42279:27:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"42005:3:25"},"nodeType":"YulFunctionCall","src":"42005:343:25"},{"name":"MemoryExpansionCoefficient","nodeType":"YulIdentifier","src":"42390:26:25"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"41960:3:25"},"nodeType":"YulFunctionCall","src":"41960:494:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41713:3:25"},"nodeType":"YulFunctionCall","src":"41713:775:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41638:3:25"},"nodeType":"YulFunctionCall","src":"41638:880:25"},"variableNames":[{"name":"cost","nodeType":"YulIdentifier","src":"41630:4:25"}]}]},"condition":{"arguments":[{"name":"returnDataWords","nodeType":"YulIdentifier","src":"41571:15:25"},{"name":"msizeWords","nodeType":"YulIdentifier","src":"41588:10:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"41568:2:25"},"nodeType":"YulFunctionCall","src":"41568:31:25"},"nodeType":"YulIf","src":"41565:979:25"},{"body":{"nodeType":"YulBlock","src":"42811:309:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"42934:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"42937:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"42940:14:25"},"nodeType":"YulFunctionCall","src":"42940:16:25"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"42919:14:25"},"nodeType":"YulFunctionCall","src":"42919:38:25"},"nodeType":"YulExpressionStatement","src":"42919:38:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"43074:1:25","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"43077:14:25"},"nodeType":"YulFunctionCall","src":"43077:16:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"43067:6:25"},"nodeType":"YulFunctionCall","src":"43067:27:25"},"nodeType":"YulExpressionStatement","src":"43067:27:25"}]},"condition":{"arguments":[{"arguments":[{"name":"cost","nodeType":"YulIdentifier","src":"42781:4:25"},{"name":"ExtraGasBuffer","nodeType":"YulIdentifier","src":"42787:14:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42777:3:25"},"nodeType":"YulFunctionCall","src":"42777:25:25"},{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"42804:3:25"},"nodeType":"YulFunctionCall","src":"42804:5:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"42774:2:25"},"nodeType":"YulFunctionCall","src":"42774:36:25"},"nodeType":"YulIf","src":"42771:349:25"}]},"condition":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"40149:14:25"},"nodeType":"YulFunctionCall","src":"40149:16:25"},"nodeType":"YulIf","src":"40146:2996:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"43244:1:25","type":"","value":"0"},{"name":"ERC1155BatchTransferGenericFailure_error_signature","nodeType":"YulIdentifier","src":"43271:50:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43212:6:25"},"nodeType":"YulFunctionCall","src":"43212:131:25"},"nodeType":"YulExpressionStatement","src":"43212:131:25"},{"expression":{"arguments":[{"name":"ERC1155BatchTransferGenericFailure_token_ptr","nodeType":"YulIdentifier","src":"43412:44:25"},{"name":"token","nodeType":"YulIdentifier","src":"43458:5:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43405:6:25"},"nodeType":"YulFunctionCall","src":"43405:59:25"},"nodeType":"YulExpressionStatement","src":"43405:59:25"},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_ids_head_ptr","nodeType":"YulIdentifier","src":"43575:36:25"},{"name":"ERC1155BatchTransferGenericFailure_ids_offset","nodeType":"YulIdentifier","src":"43637:45:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43543:6:25"},"nodeType":"YulFunctionCall","src":"43543:161:25"},"nodeType":"YulExpressionStatement","src":"43543:161:25"},{"expression":{"arguments":[{"name":"BatchTransfer1155Params_amounts_head_ptr","nodeType":"YulIdentifier","src":"43819:40:25"},{"arguments":[{"name":"OneWord","nodeType":"YulIdentifier","src":"43918:7:25"},{"arguments":[{"name":"BatchTransfer1155Params_amounts_head_ptr","nodeType":"YulIdentifier","src":"43961:40:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"43955:5:25"},"nodeType":"YulFunctionCall","src":"43955:47:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43885:3:25"},"nodeType":"YulFunctionCall","src":"43885:143:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43787:6:25"},"nodeType":"YulFunctionCall","src":"43787:263:25"},"nodeType":"YulExpressionStatement","src":"43787:263:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"44238:1:25","type":"","value":"0"},{"name":"transferDataSize","nodeType":"YulIdentifier","src":"44241:16:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"44231:6:25"},"nodeType":"YulFunctionCall","src":"44231:27:25"},"nodeType":"YulExpressionStatement","src":"44231:27:25"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"39986:7:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"39979:6:25"},"nodeType":"YulFunctionCall","src":"39979:15:25"},"nodeType":"YulIf","src":"39976:4300:25"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"34444:1:25"},{"name":"len","nodeType":"YulIdentifier","src":"34447:3:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"34441:2:25"},"nodeType":"YulFunctionCall","src":"34441:10:25"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"34452:46:25","statements":[{"nodeType":"YulAssignment","src":"34470:14:25","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"34479:1:25"},{"kind":"number","nodeType":"YulLiteral","src":"34482:1:25","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34475:3:25"},"nodeType":"YulFunctionCall","src":"34475:9:25"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"34470:1:25"}]}]},"pre":{"nodeType":"YulBlock","src":"34398:42:25","statements":[{"nodeType":"YulVariableDeclaration","src":"34416:10:25","value":{"kind":"number","nodeType":"YulLiteral","src":"34425:1:25","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"34420:1:25","type":""}]}]},"src":"34394:9896:25"},{"expression":{"arguments":[{"name":"FreeMemoryPointerSlot","nodeType":"YulIdentifier","src":"44631:21:25"},{"name":"DefaultFreeMemoryPointer","nodeType":"YulIdentifier","src":"44654:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"44624:6:25"},"nodeType":"YulFunctionCall","src":"44624:55:25"},"nodeType":"YulExpressionStatement","src":"44624:55:25"}]},"evmVersion":"london","externalReferences":[{"declaration":4271,"isOffset":false,"isSlot":false,"src":"40577:13:25","valueSize":1},{"declaration":4473,"isOffset":false,"isSlot":false,"src":"43819:40:25","valueSize":1},{"declaration":4473,"isOffset":false,"isSlot":false,"src":"43961:40:25","valueSize":1},{"declaration":4482,"isOffset":false,"isSlot":false,"src":"39111:41:25","valueSize":1},{"declaration":4476,"isOffset":false,"isSlot":false,"src":"38458:37:25","valueSize":1},{"declaration":4479,"isOffset":false,"isSlot":false,"src":"38816:43:25","valueSize":1},{"declaration":4470,"isOffset":false,"isSlot":false,"src":"43575:36:25","valueSize":1},{"declaration":4488,"isOffset":false,"isSlot":false,"src":"38546:41:25","valueSize":1},{"declaration":4485,"isOffset":false,"isSlot":false,"src":"39340:38:25","valueSize":1},{"declaration":4467,"isOffset":false,"isSlot":false,"src":"37923:27:25","valueSize":1},{"declaration":4512,"isOffset":false,"isSlot":false,"src":"35659:50:25","valueSize":1},{"declaration":4500,"isOffset":false,"isSlot":false,"src":"34224:36:25","valueSize":1},{"declaration":4500,"isOffset":false,"isSlot":false,"src":"37988:36:25","valueSize":1},{"declaration":4500,"isOffset":false,"isSlot":false,"src":"39713:36:25","valueSize":1},{"declaration":4503,"isOffset":false,"isSlot":false,"src":"36412:40:25","valueSize":1},{"declaration":4509,"isOffset":false,"isSlot":false,"src":"35454:42:25","valueSize":1},{"declaration":4509,"isOffset":false,"isSlot":false,"src":"36558:42:25","valueSize":1},{"declaration":4509,"isOffset":false,"isSlot":false,"src":"39416:42:25","valueSize":1},{"declaration":4497,"isOffset":false,"isSlot":false,"src":"38047:41:25","valueSize":1},{"declaration":4518,"isOffset":false,"isSlot":false,"src":"36913:40:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"41438:11:25","valueSize":1},{"declaration":4461,"isOffset":false,"isSlot":false,"src":"41873:11:25","valueSize":1},{"declaration":4289,"isOffset":false,"isSlot":false,"src":"44654:24:25","valueSize":1},{"declaration":4532,"isOffset":false,"isSlot":false,"src":"43271:50:25","valueSize":1},{"declaration":4538,"isOffset":false,"isSlot":false,"src":"43637:45:25","valueSize":1},{"declaration":4535,"isOffset":false,"isSlot":false,"src":"43412:44:25","valueSize":1},{"declaration":4368,"isOffset":false,"isSlot":false,"src":"34278:39:25","valueSize":1},{"declaration":4458,"isOffset":false,"isSlot":false,"src":"42787:14:25","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"44631:21:25","valueSize":1},{"declaration":4524,"isOffset":false,"isSlot":false,"src":"37577:39:25","valueSize":1},{"declaration":4521,"isOffset":false,"isSlot":false,"src":"37337:36:25","valueSize":1},{"declaration":4521,"isOffset":false,"isSlot":false,"src":"37515:36:25","valueSize":1},{"declaration":4528,"isOffset":false,"isSlot":false,"src":"37399:41:25","valueSize":1},{"declaration":4464,"isOffset":false,"isSlot":false,"src":"42390:26:25","valueSize":1},{"declaration":4408,"isOffset":false,"isSlot":false,"src":"35270:23:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"35101:24:25","valueSize":1},{"declaration":4402,"isOffset":false,"isSlot":false,"src":"35244:24:25","valueSize":1},{"declaration":4399,"isOffset":false,"isSlot":false,"src":"35127:26:25","valueSize":1},{"declaration":4405,"isOffset":false,"isSlot":false,"src":"35182:26:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"35746:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"37784:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"40621:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"41315:7:25","valueSize":1},{"declaration":4274,"isOffset":false,"isSlot":false,"src":"43918:7:25","valueSize":1},{"declaration":4277,"isOffset":false,"isSlot":false,"src":"38310:8:25","valueSize":1},{"declaration":4277,"isOffset":false,"isSlot":false,"src":"38335:8:25","valueSize":1},{"declaration":4260,"isOffset":false,"isSlot":false,"src":"33441:21:25","suffix":"length","valueSize":1},{"declaration":4260,"isOffset":true,"isSlot":false,"src":"33728:21:25","suffix":"offset","valueSize":1}],"id":4263,"nodeType":"InlineAssembly","src":"33407:11282:25"}]},"documentation":{"id":4256,"nodeType":"StructuredDocumentation","src":"32267:940:25","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":4265,"implemented":true,"kind":"function","modifiers":[],"name":"_performERC1155BatchTransfers","nameLocation":"33221:29:25","nodeType":"FunctionDefinition","parameters":{"id":4261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4260,"mutability":"mutable","name":"batchTransfers","nameLocation":"33296:14:25","nodeType":"VariableDeclaration","scope":4265,"src":"33260:50:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$65_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ConduitBatch1155Transfer[]"},"typeName":{"baseType":{"id":4258,"nodeType":"UserDefinedTypeName","pathNode":{"id":4257,"name":"ConduitBatch1155Transfer","nodeType":"IdentifierPath","referencedDeclaration":65,"src":"33260:24:25"},"referencedDeclaration":65,"src":"33260:24:25","typeDescriptions":{"typeIdentifier":"t_struct$_ConduitBatch1155Transfer_$65_storage_ptr","typeString":"struct ConduitBatch1155Transfer"}},"id":4259,"nodeType":"ArrayTypeName","src":"33260:26:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ConduitBatch1155Transfer_$65_storage_$dyn_storage_ptr","typeString":"struct ConduitBatch1155Transfer[]"}},"visibility":"internal"}],"src":"33250:66:25"},"returnParameters":{"id":4262,"nodeType":"ParameterList","parameters":[],"src":"33326:0:25"},"scope":4266,"src":"33212:11483:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":4267,"src":"829:43868:25","usedErrors":[540,543,546,559,574,585,590,593]}],"src":"32:44666:25"},"id":25},"contracts/lib/TokenTransferrerConstants.sol":{"ast":{"absolutePath":"contracts/lib/TokenTransferrerConstants.sol","exportedSymbols":{"AlmostOneWord":[4271],"BadReturnValueFromERC20OnTransfer_error_amount_ptr":[4452],"BadReturnValueFromERC20OnTransfer_error_from_ptr":[4446],"BadReturnValueFromERC20OnTransfer_error_length":[4455],"BadReturnValueFromERC20OnTransfer_error_sig_ptr":[4440],"BadReturnValueFromERC20OnTransfer_error_signature":[4437],"BadReturnValueFromERC20OnTransfer_error_to_ptr":[4449],"BadReturnValueFromERC20OnTransfer_error_token_ptr":[4443],"BatchTransfer1155Params_amounts_head_ptr":[4473],"BatchTransfer1155Params_amounts_length_baseOffset":[4491],"BatchTransfer1155Params_calldata_baseSize":[4482],"BatchTransfer1155Params_data_head_ptr":[4476],"BatchTransfer1155Params_data_length_baseOffset":[4494],"BatchTransfer1155Params_data_length_basePtr":[4479],"BatchTransfer1155Params_ids_head_ptr":[4470],"BatchTransfer1155Params_ids_length_offset":[4488],"BatchTransfer1155Params_ids_length_ptr":[4485],"BatchTransfer1155Params_ptr":[4467],"ConduitBatch1155Transfer_amounts_head_offset":[4506],"ConduitBatch1155Transfer_amounts_length_baseOffset":[4512],"ConduitBatch1155Transfer_calldata_baseSize":[4515],"ConduitBatch1155Transfer_from_offset":[4500],"ConduitBatch1155Transfer_ids_head_offset":[4503],"ConduitBatch1155Transfer_ids_length_offset":[4509],"ConduitBatch1155Transfer_usable_head_size":[4497],"ConduitBatchTransfer_amounts_head_offset":[4518],"CostPerWord":[4461],"DefaultFreeMemoryPointer":[4289],"ERC1155BatchTransferGenericFailure_error_signature":[4532],"ERC1155BatchTransferGenericFailure_ids_offset":[4538],"ERC1155BatchTransferGenericFailure_token_ptr":[4535],"ERC1155_safeBatchTransferFrom_selector":[4377],"ERC1155_safeBatchTransferFrom_signature":[4368],"ERC1155_safeTransferFrom_amount_ptr":[4352],"ERC1155_safeTransferFrom_data_length_offset":[4364],"ERC1155_safeTransferFrom_data_length_ptr":[4358],"ERC1155_safeTransferFrom_data_offset_ptr":[4355],"ERC1155_safeTransferFrom_from_ptr":[4343],"ERC1155_safeTransferFrom_id_ptr":[4349],"ERC1155_safeTransferFrom_length":[4361],"ERC1155_safeTransferFrom_sig_ptr":[4340],"ERC1155_safeTransferFrom_signature":[4337],"ERC1155_safeTransferFrom_to_ptr":[4346],"ERC20_transferFrom_amount_ptr":[4314],"ERC20_transferFrom_from_ptr":[4308],"ERC20_transferFrom_length":[4317],"ERC20_transferFrom_sig_ptr":[4305],"ERC20_transferFrom_signature":[4302],"ERC20_transferFrom_to_ptr":[4311],"ERC20_transfer_amount_ptr":[4330],"ERC20_transfer_length":[4333],"ERC20_transfer_sig_ptr":[4324],"ERC20_transfer_signature":[4321],"ERC20_transfer_to_ptr":[4327],"ERC721_transferFrom_from_ptr":[4386],"ERC721_transferFrom_id_ptr":[4392],"ERC721_transferFrom_length":[4395],"ERC721_transferFrom_sig_ptr":[4383],"ERC721_transferFrom_signature":[4380],"ERC721_transferFrom_to_ptr":[4389],"ExtraGasBuffer":[4458],"FreeMemoryPointerSlot":[4283],"Invalid1155BatchTransferEncoding_length":[4524],"Invalid1155BatchTransferEncoding_ptr":[4521],"Invalid1155BatchTransferEncoding_selector":[4528],"MemoryExpansionCoefficient":[4464],"NoContract_error_length":[4408],"NoContract_error_sig_ptr":[4402],"NoContract_error_signature":[4399],"NoContract_error_token_ptr":[4405],"OneWord":[4274],"Slot0x80":[4292],"Slot0xA0":[4295],"Slot0xC0":[4298],"ThreeWords":[4280],"TokenTransferGenericFailure_error_amount_ptr":[4430],"TokenTransferGenericFailure_error_from_ptr":[4421],"TokenTransferGenericFailure_error_id_ptr":[4427],"TokenTransferGenericFailure_error_length":[4433],"TokenTransferGenericFailure_error_sig_ptr":[4415],"TokenTransferGenericFailure_error_signature":[4412],"TokenTransferGenericFailure_error_to_ptr":[4424],"TokenTransferGenericFailure_error_token_ptr":[4418],"TwoWords":[4277],"ZeroSlot":[4286]},"id":4539,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4268,"literals":["solidity","^","0.8",".7"],"nodeType":"PragmaDirective","src":"32:23:26"},{"constant":true,"id":4271,"mutability":"constant","name":"AlmostOneWord","nameLocation":"1807:13:26","nodeType":"VariableDeclaration","scope":4539,"src":"1790:37:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4269,"name":"uint256","nodeType":"ElementaryTypeName","src":"1790:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783166","id":4270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1823:4:26","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"0x1f"},"visibility":"internal"},{"constant":true,"id":4274,"mutability":"constant","name":"OneWord","nameLocation":"1846:7:26","nodeType":"VariableDeclaration","scope":4539,"src":"1829:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4272,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:4:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4277,"mutability":"constant","name":"TwoWords","nameLocation":"1879:8:26","nodeType":"VariableDeclaration","scope":4539,"src":"1862:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1862:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:4:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4280,"mutability":"constant","name":"ThreeWords","nameLocation":"1913:10:26","nodeType":"VariableDeclaration","scope":4539,"src":"1896:34:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4278,"name":"uint256","nodeType":"ElementaryTypeName","src":"1896:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1926:4:26","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4283,"mutability":"constant","name":"FreeMemoryPointerSlot","nameLocation":"1950:21:26","nodeType":"VariableDeclaration","scope":4539,"src":"1933:45:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4281,"name":"uint256","nodeType":"ElementaryTypeName","src":"1933:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783430","id":4282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1974:4:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"visibility":"internal"},{"constant":true,"id":4286,"mutability":"constant","name":"ZeroSlot","nameLocation":"1997:8:26","nodeType":"VariableDeclaration","scope":4539,"src":"1980:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4284,"name":"uint256","nodeType":"ElementaryTypeName","src":"1980:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2008:4:26","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4289,"mutability":"constant","name":"DefaultFreeMemoryPointer","nameLocation":"2031:24:26","nodeType":"VariableDeclaration","scope":4539,"src":"2014:48:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4287,"name":"uint256","nodeType":"ElementaryTypeName","src":"2014:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2058:4:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4292,"mutability":"constant","name":"Slot0x80","nameLocation":"2082:8:26","nodeType":"VariableDeclaration","scope":4539,"src":"2065:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4290,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2093:4:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4295,"mutability":"constant","name":"Slot0xA0","nameLocation":"2116:8:26","nodeType":"VariableDeclaration","scope":4539,"src":"2099:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4293,"name":"uint256","nodeType":"ElementaryTypeName","src":"2099:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2127:4:26","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4298,"mutability":"constant","name":"Slot0xC0","nameLocation":"2150:8:26","nodeType":"VariableDeclaration","scope":4539,"src":"2133:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4296,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":4297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2161:4:26","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":4302,"mutability":"constant","name":"ERC20_transferFrom_signature","nameLocation":"2253:28:26","nodeType":"VariableDeclaration","scope":4539,"src":"2236:122:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4299,"name":"uint256","nodeType":"ElementaryTypeName","src":"2236:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307832336238373264643030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2290:66:26","typeDescriptions":{"typeIdentifier":"t_rational_16156842317565293874272834530371880720966471053262404558597773956279093428224_by_1","typeString":"int_const 1615...(69 digits omitted)...8224"},"value":"0x23b872dd00000000000000000000000000000000000000000000000000000000"}],"id":4301,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2284:74:26","typeDescriptions":{"typeIdentifier":"t_rational_16156842317565293874272834530371880720966471053262404558597773956279093428224_by_1","typeString":"int_const 1615...(69 digits omitted)...8224"}},"visibility":"internal"},{"constant":true,"id":4305,"mutability":"constant","name":"ERC20_transferFrom_sig_ptr","nameLocation":"2377:26:26","nodeType":"VariableDeclaration","scope":4539,"src":"2360:49:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4303,"name":"uint256","nodeType":"ElementaryTypeName","src":"2360:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":4304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2406:3:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":4308,"mutability":"constant","name":"ERC20_transferFrom_from_ptr","nameLocation":"2428:27:26","nodeType":"VariableDeclaration","scope":4539,"src":"2411:51:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4306,"name":"uint256","nodeType":"ElementaryTypeName","src":"2411:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2458:4:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4311,"mutability":"constant","name":"ERC20_transferFrom_to_ptr","nameLocation":"2481:25:26","nodeType":"VariableDeclaration","scope":4539,"src":"2464:49:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4309,"name":"uint256","nodeType":"ElementaryTypeName","src":"2464:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:4:26","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4314,"mutability":"constant","name":"ERC20_transferFrom_amount_ptr","nameLocation":"2532:29:26","nodeType":"VariableDeclaration","scope":4539,"src":"2515:53:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4312,"name":"uint256","nodeType":"ElementaryTypeName","src":"2515:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":4313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2564:4:26","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":4317,"mutability":"constant","name":"ERC20_transferFrom_length","nameLocation":"2587:25:26","nodeType":"VariableDeclaration","scope":4539,"src":"2570:49:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4315,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":4316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2615:4:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":4321,"mutability":"constant","name":"ERC20_transfer_signature","nameLocation":"2716:24:26","nodeType":"VariableDeclaration","scope":4539,"src":"2699:118:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4318,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307861393035396362623030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2749:66:26","typeDescriptions":{"typeIdentifier":"t_rational_76450787359836037641860180984291677749980919077056822294353438043884394381312_by_1","typeString":"int_const 7645...(69 digits omitted)...1312"},"value":"0xa9059cbb00000000000000000000000000000000000000000000000000000000"}],"id":4320,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2743:74:26","typeDescriptions":{"typeIdentifier":"t_rational_76450787359836037641860180984291677749980919077056822294353438043884394381312_by_1","typeString":"int_const 7645...(69 digits omitted)...1312"}},"visibility":"internal"},{"constant":true,"id":4324,"mutability":"constant","name":"ERC20_transfer_sig_ptr","nameLocation":"2836:22:26","nodeType":"VariableDeclaration","scope":4539,"src":"2819:45:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4322,"name":"uint256","nodeType":"ElementaryTypeName","src":"2819:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":4323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2861:3:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":4327,"mutability":"constant","name":"ERC20_transfer_to_ptr","nameLocation":"2883:21:26","nodeType":"VariableDeclaration","scope":4539,"src":"2866:45:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4325,"name":"uint256","nodeType":"ElementaryTypeName","src":"2866:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2907:4:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4330,"mutability":"constant","name":"ERC20_transfer_amount_ptr","nameLocation":"2930:25:26","nodeType":"VariableDeclaration","scope":4539,"src":"2913:49:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4328,"name":"uint256","nodeType":"ElementaryTypeName","src":"2913:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2958:4:26","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4333,"mutability":"constant","name":"ERC20_transfer_length","nameLocation":"2981:21:26","nodeType":"VariableDeclaration","scope":4539,"src":"2964:45:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4331,"name":"uint256","nodeType":"ElementaryTypeName","src":"2964:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":4332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3005:4:26","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":4337,"mutability":"constant","name":"ERC1155_safeTransferFrom_signature","nameLocation":"3147:34:26","nodeType":"VariableDeclaration","scope":4539,"src":"3130:128:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4334,"name":"uint256","nodeType":"ElementaryTypeName","src":"3130:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307866323432343332613030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3190:66:26","typeDescriptions":{"typeIdentifier":"t_rational_109576784812748834340197573905731726730118698833493337707389013487240318287872_by_1","typeString":"int_const 1095...(70 digits omitted)...7872"},"value":"0xf242432a00000000000000000000000000000000000000000000000000000000"}],"id":4336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3184:74:26","typeDescriptions":{"typeIdentifier":"t_rational_109576784812748834340197573905731726730118698833493337707389013487240318287872_by_1","typeString":"int_const 1095...(70 digits omitted)...7872"}},"visibility":"internal"},{"constant":true,"id":4340,"mutability":"constant","name":"ERC1155_safeTransferFrom_sig_ptr","nameLocation":"3277:32:26","nodeType":"VariableDeclaration","scope":4539,"src":"3260:55:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4338,"name":"uint256","nodeType":"ElementaryTypeName","src":"3260:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":4339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3312:3:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":4343,"mutability":"constant","name":"ERC1155_safeTransferFrom_from_ptr","nameLocation":"3334:33:26","nodeType":"VariableDeclaration","scope":4539,"src":"3317:57:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4341,"name":"uint256","nodeType":"ElementaryTypeName","src":"3317:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3370:4:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4346,"mutability":"constant","name":"ERC1155_safeTransferFrom_to_ptr","nameLocation":"3393:31:26","nodeType":"VariableDeclaration","scope":4539,"src":"3376:55:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4344,"name":"uint256","nodeType":"ElementaryTypeName","src":"3376:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3427:4:26","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4349,"mutability":"constant","name":"ERC1155_safeTransferFrom_id_ptr","nameLocation":"3450:31:26","nodeType":"VariableDeclaration","scope":4539,"src":"3433:55:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4347,"name":"uint256","nodeType":"ElementaryTypeName","src":"3433:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":4348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3484:4:26","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":4352,"mutability":"constant","name":"ERC1155_safeTransferFrom_amount_ptr","nameLocation":"3507:35:26","nodeType":"VariableDeclaration","scope":4539,"src":"3490:59:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4350,"name":"uint256","nodeType":"ElementaryTypeName","src":"3490:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":4351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3545:4:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":4355,"mutability":"constant","name":"ERC1155_safeTransferFrom_data_offset_ptr","nameLocation":"3568:40:26","nodeType":"VariableDeclaration","scope":4539,"src":"3551:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4353,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":4354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3611:4:26","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":4358,"mutability":"constant","name":"ERC1155_safeTransferFrom_data_length_ptr","nameLocation":"3634:40:26","nodeType":"VariableDeclaration","scope":4539,"src":"3617:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4356,"name":"uint256","nodeType":"ElementaryTypeName","src":"3617:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":4357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3677:4:26","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":4361,"mutability":"constant","name":"ERC1155_safeTransferFrom_length","nameLocation":"3700:31:26","nodeType":"VariableDeclaration","scope":4539,"src":"3683:55:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4359,"name":"uint256","nodeType":"ElementaryTypeName","src":"3683:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":4360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3734:4:26","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":4364,"mutability":"constant","name":"ERC1155_safeTransferFrom_data_length_offset","nameLocation":"3778:43:26","nodeType":"VariableDeclaration","scope":4539,"src":"3761:67:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4362,"name":"uint256","nodeType":"ElementaryTypeName","src":"3761:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:4:26","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4368,"mutability":"constant","name":"ERC1155_safeBatchTransferFrom_signature","nameLocation":"3955:39:26","nodeType":"VariableDeclaration","scope":4539,"src":"3938:133:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4365,"name":"uint256","nodeType":"ElementaryTypeName","src":"3938:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307832656232633264363030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4003:66:26","typeDescriptions":{"typeIdentifier":"t_rational_21122234520580670415450416725259358303340482176740656504059893016123987197952_by_1","typeString":"int_const 2112...(69 digits omitted)...7952"},"value":"0x2eb2c2d600000000000000000000000000000000000000000000000000000000"}],"id":4367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3997:74:26","typeDescriptions":{"typeIdentifier":"t_rational_21122234520580670415450416725259358303340482176740656504059893016123987197952_by_1","typeString":"int_const 2112...(69 digits omitted)...7952"}},"visibility":"internal"},{"constant":true,"id":4377,"mutability":"constant","name":"ERC1155_safeBatchTransferFrom_selector","nameLocation":"4090:38:26","nodeType":"VariableDeclaration","scope":4539,"src":"4074:119:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4369,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4074:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"arguments":[{"arguments":[{"id":4374,"name":"ERC1155_safeBatchTransferFrom_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4368,"src":"4151:39:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4143:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4372,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4143:7:26","typeDescriptions":{}}},"id":4375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4143:48:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4131:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":4370,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4131:6:26","typeDescriptions":{}}},"id":4376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4131:62:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":true,"id":4380,"mutability":"constant","name":"ERC721_transferFrom_signature","nameLocation":"4213:29:26","nodeType":"VariableDeclaration","scope":4539,"src":"4196:77:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4378,"name":"uint256","nodeType":"ElementaryTypeName","src":"4196:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":4379,"name":"ERC20_transferFrom_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4302,"src":"4245:28:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4383,"mutability":"constant","name":"ERC721_transferFrom_sig_ptr","nameLocation":"4292:27:26","nodeType":"VariableDeclaration","scope":4539,"src":"4275:50:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4381,"name":"uint256","nodeType":"ElementaryTypeName","src":"4275:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":4382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4322:3:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":4386,"mutability":"constant","name":"ERC721_transferFrom_from_ptr","nameLocation":"4344:28:26","nodeType":"VariableDeclaration","scope":4539,"src":"4327:52:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4384,"name":"uint256","nodeType":"ElementaryTypeName","src":"4327:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4375:4:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4389,"mutability":"constant","name":"ERC721_transferFrom_to_ptr","nameLocation":"4398:26:26","nodeType":"VariableDeclaration","scope":4539,"src":"4381:50:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4387,"name":"uint256","nodeType":"ElementaryTypeName","src":"4381:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4427:4:26","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4392,"mutability":"constant","name":"ERC721_transferFrom_id_ptr","nameLocation":"4450:26:26","nodeType":"VariableDeclaration","scope":4539,"src":"4433:50:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4390,"name":"uint256","nodeType":"ElementaryTypeName","src":"4433:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":4391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4479:4:26","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":4395,"mutability":"constant","name":"ERC721_transferFrom_length","nameLocation":"4502:26:26","nodeType":"VariableDeclaration","scope":4539,"src":"4485:50:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4393,"name":"uint256","nodeType":"ElementaryTypeName","src":"4485:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":4394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4531:4:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":4399,"mutability":"constant","name":"NoContract_error_signature","nameLocation":"4626:26:26","nodeType":"VariableDeclaration","scope":4539,"src":"4609:120:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4396,"name":"uint256","nodeType":"ElementaryTypeName","src":"4609:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307835663135643637323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4661:66:26","typeDescriptions":{"typeIdentifier":"t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1","typeString":"int_const 4300...(69 digits omitted)...7584"},"value":"0x5f15d67200000000000000000000000000000000000000000000000000000000"}],"id":4398,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4655:74:26","typeDescriptions":{"typeIdentifier":"t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1","typeString":"int_const 4300...(69 digits omitted)...7584"}},"visibility":"internal"},{"constant":true,"id":4402,"mutability":"constant","name":"NoContract_error_sig_ptr","nameLocation":"4748:24:26","nodeType":"VariableDeclaration","scope":4539,"src":"4731:47:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4400,"name":"uint256","nodeType":"ElementaryTypeName","src":"4731:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":4401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4775:3:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":4405,"mutability":"constant","name":"NoContract_error_token_ptr","nameLocation":"4797:26:26","nodeType":"VariableDeclaration","scope":4539,"src":"4780:49:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4403,"name":"uint256","nodeType":"ElementaryTypeName","src":"4780:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":4404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4826:3:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":4408,"mutability":"constant","name":"NoContract_error_length","nameLocation":"4848:23:26","nodeType":"VariableDeclaration","scope":4539,"src":"4831:47:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4406,"name":"uint256","nodeType":"ElementaryTypeName","src":"4831:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4874:4:26","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4412,"mutability":"constant","name":"TokenTransferGenericFailure_error_signature","nameLocation":"5025:43:26","nodeType":"VariableDeclaration","scope":4539,"src":"5008:137:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4409,"name":"uint256","nodeType":"ElementaryTypeName","src":"5008:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307866343836626338373030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5077:66:26","typeDescriptions":{"typeIdentifier":"t_rational_110602393728903298954583666965654358082204038726121260616145960492056870649856_by_1","typeString":"int_const 1106...(70 digits omitted)...9856"},"value":"0xf486bc8700000000000000000000000000000000000000000000000000000000"}],"id":4411,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5071:74:26","typeDescriptions":{"typeIdentifier":"t_rational_110602393728903298954583666965654358082204038726121260616145960492056870649856_by_1","typeString":"int_const 1106...(70 digits omitted)...9856"}},"visibility":"internal"},{"constant":true,"id":4415,"mutability":"constant","name":"TokenTransferGenericFailure_error_sig_ptr","nameLocation":"5164:41:26","nodeType":"VariableDeclaration","scope":4539,"src":"5147:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4413,"name":"uint256","nodeType":"ElementaryTypeName","src":"5147:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":4414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5208:3:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":4418,"mutability":"constant","name":"TokenTransferGenericFailure_error_token_ptr","nameLocation":"5230:43:26","nodeType":"VariableDeclaration","scope":4539,"src":"5213:66:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4416,"name":"uint256","nodeType":"ElementaryTypeName","src":"5213:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":4417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5276:3:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":4421,"mutability":"constant","name":"TokenTransferGenericFailure_error_from_ptr","nameLocation":"5298:42:26","nodeType":"VariableDeclaration","scope":4539,"src":"5281:66:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4419,"name":"uint256","nodeType":"ElementaryTypeName","src":"5281:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5343:4:26","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4424,"mutability":"constant","name":"TokenTransferGenericFailure_error_to_ptr","nameLocation":"5366:40:26","nodeType":"VariableDeclaration","scope":4539,"src":"5349:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4422,"name":"uint256","nodeType":"ElementaryTypeName","src":"5349:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":4423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5409:4:26","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":4427,"mutability":"constant","name":"TokenTransferGenericFailure_error_id_ptr","nameLocation":"5432:40:26","nodeType":"VariableDeclaration","scope":4539,"src":"5415:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4425,"name":"uint256","nodeType":"ElementaryTypeName","src":"5415:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":4426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5475:4:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":4430,"mutability":"constant","name":"TokenTransferGenericFailure_error_amount_ptr","nameLocation":"5498:44:26","nodeType":"VariableDeclaration","scope":4539,"src":"5481:68:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4428,"name":"uint256","nodeType":"ElementaryTypeName","src":"5481:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":4429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5545:4:26","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":4433,"mutability":"constant","name":"TokenTransferGenericFailure_error_length","nameLocation":"5590:40:26","nodeType":"VariableDeclaration","scope":4539,"src":"5573:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4431,"name":"uint256","nodeType":"ElementaryTypeName","src":"5573:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":4432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5633:4:26","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":4437,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_signature","nameLocation":"5766:49:26","nodeType":"VariableDeclaration","scope":4539,"src":"5749:143:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4434,"name":"uint256","nodeType":"ElementaryTypeName","src":"5749:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307839383839313932333030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5824:66:26","typeDescriptions":{"typeIdentifier":"t_rational_68993784519787932800265262788752310095870803544120403744274516456007463337984_by_1","typeString":"int_const 6899...(69 digits omitted)...7984"},"value":"0x9889192300000000000000000000000000000000000000000000000000000000"}],"id":4436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5818:74:26","typeDescriptions":{"typeIdentifier":"t_rational_68993784519787932800265262788752310095870803544120403744274516456007463337984_by_1","typeString":"int_const 6899...(69 digits omitted)...7984"}},"visibility":"internal"},{"constant":true,"id":4440,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_sig_ptr","nameLocation":"5911:47:26","nodeType":"VariableDeclaration","scope":4539,"src":"5894:70:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4438,"name":"uint256","nodeType":"ElementaryTypeName","src":"5894:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307830","id":4439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5961:3:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"visibility":"internal"},{"constant":true,"id":4443,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_token_ptr","nameLocation":"5983:49:26","nodeType":"VariableDeclaration","scope":4539,"src":"5966:72:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4441,"name":"uint256","nodeType":"ElementaryTypeName","src":"5966:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307834","id":4442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6035:3:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"visibility":"internal"},{"constant":true,"id":4446,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_from_ptr","nameLocation":"6057:48:26","nodeType":"VariableDeclaration","scope":4539,"src":"6040:72:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4444,"name":"uint256","nodeType":"ElementaryTypeName","src":"6040:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6108:4:26","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4449,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_to_ptr","nameLocation":"6131:46:26","nodeType":"VariableDeclaration","scope":4539,"src":"6114:70:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4447,"name":"uint256","nodeType":"ElementaryTypeName","src":"6114:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783434","id":4448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6180:4:26","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"0x44"},"visibility":"internal"},{"constant":true,"id":4452,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_amount_ptr","nameLocation":"6203:50:26","nodeType":"VariableDeclaration","scope":4539,"src":"6186:74:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4450,"name":"uint256","nodeType":"ElementaryTypeName","src":"6186:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":4451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6256:4:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":4455,"mutability":"constant","name":"BadReturnValueFromERC20OnTransfer_error_length","nameLocation":"6301:46:26","nodeType":"VariableDeclaration","scope":4539,"src":"6284:70:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4453,"name":"uint256","nodeType":"ElementaryTypeName","src":"6284:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":4454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6350:4:26","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":4458,"mutability":"constant","name":"ExtraGasBuffer","nameLocation":"6374:14:26","nodeType":"VariableDeclaration","scope":4539,"src":"6357:38:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4456,"name":"uint256","nodeType":"ElementaryTypeName","src":"6357:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6391:4:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4461,"mutability":"constant","name":"CostPerWord","nameLocation":"6414:11:26","nodeType":"VariableDeclaration","scope":4539,"src":"6397:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4459,"name":"uint256","nodeType":"ElementaryTypeName","src":"6397:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":4460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6428:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":4464,"mutability":"constant","name":"MemoryExpansionCoefficient","nameLocation":"6448:26:26","nodeType":"VariableDeclaration","scope":4539,"src":"6431:51:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4462,"name":"uint256","nodeType":"ElementaryTypeName","src":"6431:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078323030","id":4463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6477:5:26","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"0x200"},"visibility":"internal"},{"constant":true,"id":4467,"mutability":"constant","name":"BatchTransfer1155Params_ptr","nameLocation":"6608:27:26","nodeType":"VariableDeclaration","scope":4539,"src":"6591:51:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4465,"name":"uint256","nodeType":"ElementaryTypeName","src":"6591:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783234","id":4466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6638:4:26","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"visibility":"internal"},{"constant":true,"id":4470,"mutability":"constant","name":"BatchTransfer1155Params_ids_head_ptr","nameLocation":"6661:36:26","nodeType":"VariableDeclaration","scope":4539,"src":"6644:60:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4468,"name":"uint256","nodeType":"ElementaryTypeName","src":"6644:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783634","id":4469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6700:4:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"0x64"},"visibility":"internal"},{"constant":true,"id":4473,"mutability":"constant","name":"BatchTransfer1155Params_amounts_head_ptr","nameLocation":"6723:40:26","nodeType":"VariableDeclaration","scope":4539,"src":"6706:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4471,"name":"uint256","nodeType":"ElementaryTypeName","src":"6706:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783834","id":4472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6766:4:26","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"},"visibility":"internal"},{"constant":true,"id":4476,"mutability":"constant","name":"BatchTransfer1155Params_data_head_ptr","nameLocation":"6789:37:26","nodeType":"VariableDeclaration","scope":4539,"src":"6772:61:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4474,"name":"uint256","nodeType":"ElementaryTypeName","src":"6772:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786134","id":4475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6829:4:26","typeDescriptions":{"typeIdentifier":"t_rational_164_by_1","typeString":"int_const 164"},"value":"0xa4"},"visibility":"internal"},{"constant":true,"id":4479,"mutability":"constant","name":"BatchTransfer1155Params_data_length_basePtr","nameLocation":"6852:43:26","nodeType":"VariableDeclaration","scope":4539,"src":"6835:67:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4477,"name":"uint256","nodeType":"ElementaryTypeName","src":"6835:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":4478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6898:4:26","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":4482,"mutability":"constant","name":"BatchTransfer1155Params_calldata_baseSize","nameLocation":"6921:41:26","nodeType":"VariableDeclaration","scope":4539,"src":"6904:65:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4480,"name":"uint256","nodeType":"ElementaryTypeName","src":"6904:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":4481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6965:4:26","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":4485,"mutability":"constant","name":"BatchTransfer1155Params_ids_length_ptr","nameLocation":"6989:38:26","nodeType":"VariableDeclaration","scope":4539,"src":"6972:62:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4483,"name":"uint256","nodeType":"ElementaryTypeName","src":"6972:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786334","id":4484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7030:4:26","typeDescriptions":{"typeIdentifier":"t_rational_196_by_1","typeString":"int_const 196"},"value":"0xc4"},"visibility":"internal"},{"constant":true,"id":4488,"mutability":"constant","name":"BatchTransfer1155Params_ids_length_offset","nameLocation":"7054:41:26","nodeType":"VariableDeclaration","scope":4539,"src":"7037:65:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4486,"name":"uint256","nodeType":"ElementaryTypeName","src":"7037:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7098:4:26","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4491,"mutability":"constant","name":"BatchTransfer1155Params_amounts_length_baseOffset","nameLocation":"7121:49:26","nodeType":"VariableDeclaration","scope":4539,"src":"7104:73:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4489,"name":"uint256","nodeType":"ElementaryTypeName","src":"7104:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":4490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7173:4:26","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":4494,"mutability":"constant","name":"BatchTransfer1155Params_data_length_baseOffset","nameLocation":"7196:46:26","nodeType":"VariableDeclaration","scope":4539,"src":"7179:70:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4492,"name":"uint256","nodeType":"ElementaryTypeName","src":"7179:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786530","id":4493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7245:4:26","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"0xe0"},"visibility":"internal"},{"constant":true,"id":4497,"mutability":"constant","name":"ConduitBatch1155Transfer_usable_head_size","nameLocation":"7269:41:26","nodeType":"VariableDeclaration","scope":4539,"src":"7252:65:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4495,"name":"uint256","nodeType":"ElementaryTypeName","src":"7252:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7313:4:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4500,"mutability":"constant","name":"ConduitBatch1155Transfer_from_offset","nameLocation":"7337:36:26","nodeType":"VariableDeclaration","scope":4539,"src":"7320:60:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4498,"name":"uint256","nodeType":"ElementaryTypeName","src":"7320:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783230","id":4499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7376:4:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"visibility":"internal"},{"constant":true,"id":4503,"mutability":"constant","name":"ConduitBatch1155Transfer_ids_head_offset","nameLocation":"7399:40:26","nodeType":"VariableDeclaration","scope":4539,"src":"7382:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4501,"name":"uint256","nodeType":"ElementaryTypeName","src":"7382:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783630","id":4502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7442:4:26","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"},"visibility":"internal"},{"constant":true,"id":4506,"mutability":"constant","name":"ConduitBatch1155Transfer_amounts_head_offset","nameLocation":"7465:44:26","nodeType":"VariableDeclaration","scope":4539,"src":"7448:68:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4504,"name":"uint256","nodeType":"ElementaryTypeName","src":"7448:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7512:4:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4509,"mutability":"constant","name":"ConduitBatch1155Transfer_ids_length_offset","nameLocation":"7535:42:26","nodeType":"VariableDeclaration","scope":4539,"src":"7518:66:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4507,"name":"uint256","nodeType":"ElementaryTypeName","src":"7518:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786130","id":4508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7580:4:26","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"0xa0"},"visibility":"internal"},{"constant":true,"id":4512,"mutability":"constant","name":"ConduitBatch1155Transfer_amounts_length_baseOffset","nameLocation":"7603:50:26","nodeType":"VariableDeclaration","scope":4539,"src":"7586:74:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4510,"name":"uint256","nodeType":"ElementaryTypeName","src":"7586:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":4511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7656:4:26","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":4515,"mutability":"constant","name":"ConduitBatch1155Transfer_calldata_baseSize","nameLocation":"7679:42:26","nodeType":"VariableDeclaration","scope":4539,"src":"7662:66:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4513,"name":"uint256","nodeType":"ElementaryTypeName","src":"7662:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":4514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7724:4:26","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"},{"constant":true,"id":4518,"mutability":"constant","name":"ConduitBatchTransfer_amounts_head_offset","nameLocation":"7827:40:26","nodeType":"VariableDeclaration","scope":4539,"src":"7810:64:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4516,"name":"uint256","nodeType":"ElementaryTypeName","src":"7810:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783830","id":4517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7870:4:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"visibility":"internal"},{"constant":true,"id":4521,"mutability":"constant","name":"Invalid1155BatchTransferEncoding_ptr","nameLocation":"7894:36:26","nodeType":"VariableDeclaration","scope":4539,"src":"7877:60:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4519,"name":"uint256","nodeType":"ElementaryTypeName","src":"7877:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":4520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7933:4:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"id":4524,"mutability":"constant","name":"Invalid1155BatchTransferEncoding_length","nameLocation":"7956:39:26","nodeType":"VariableDeclaration","scope":4539,"src":"7939:63:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4522,"name":"uint256","nodeType":"ElementaryTypeName","src":"7939:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7998:4:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4528,"mutability":"constant","name":"Invalid1155BatchTransferEncoding_selector","nameLocation":"8021:41:26","nodeType":"VariableDeclaration","scope":4539,"src":"8004:135:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4525,"name":"uint256","nodeType":"ElementaryTypeName","src":"8004:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307865626132303834633030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8071:66:26","typeDescriptions":{"typeIdentifier":"t_rational_106579805904488420557082595712554375541441034432625840267987479138441579462656_by_1","typeString":"int_const 1065...(70 digits omitted)...2656"},"value":"0xeba2084c00000000000000000000000000000000000000000000000000000000"}],"id":4527,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8065:74:26","typeDescriptions":{"typeIdentifier":"t_rational_106579805904488420557082595712554375541441034432625840267987479138441579462656_by_1","typeString":"int_const 1065...(70 digits omitted)...2656"}},"visibility":"internal"},{"constant":true,"id":4532,"mutability":"constant","name":"ERC1155BatchTransferGenericFailure_error_signature","nameLocation":"8159:50:26","nodeType":"VariableDeclaration","scope":4539,"src":"8142:144:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4529,"name":"uint256","nodeType":"ElementaryTypeName","src":"8142:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"components":[{"hexValue":"307861666334343565323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":4530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8218:66:26","typeDescriptions":{"typeIdentifier":"t_rational_79501532840214056618875980936328268319366216792329069890481479576950077915136_by_1","typeString":"int_const 7950...(69 digits omitted)...5136"},"value":"0xafc445e200000000000000000000000000000000000000000000000000000000"}],"id":4531,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8212:74:26","typeDescriptions":{"typeIdentifier":"t_rational_79501532840214056618875980936328268319366216792329069890481479576950077915136_by_1","typeString":"int_const 7950...(69 digits omitted)...5136"}},"visibility":"internal"},{"constant":true,"id":4535,"mutability":"constant","name":"ERC1155BatchTransferGenericFailure_token_ptr","nameLocation":"8305:44:26","nodeType":"VariableDeclaration","scope":4539,"src":"8288:68:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4533,"name":"uint256","nodeType":"ElementaryTypeName","src":"8288:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783034","id":4534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8352:4:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"visibility":"internal"},{"constant":true,"id":4538,"mutability":"constant","name":"ERC1155BatchTransferGenericFailure_ids_offset","nameLocation":"8375:45:26","nodeType":"VariableDeclaration","scope":4539,"src":"8358:69:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4536,"name":"uint256","nodeType":"ElementaryTypeName","src":"8358:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30786330","id":4537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8423:4:26","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xc0"},"visibility":"internal"}],"src":"32:8397:26"},"id":26},"contracts/lib/Verifiers.sol":{"ast":{"absolutePath":"contracts/lib/Verifiers.sol","exportedSymbols":{"Assertions":[632],"OrderStatus":[1658],"SignatureVerification":[4190],"Verifiers":[4709]},"id":4710,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4540,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:27"},{"absolutePath":"contracts/lib/ConsiderationStructs.sol","file":"./ConsiderationStructs.sol","id":4542,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":1659,"src":"58:57:27","symbolAliases":[{"foreign":{"id":4541,"name":"OrderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"67:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/Assertions.sol","file":"./Assertions.sol","id":4544,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":633,"src":"117:46:27","symbolAliases":[{"foreign":{"id":4543,"name":"Assertions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"126:10:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/lib/SignatureVerification.sol","file":"./SignatureVerification.sol","id":4546,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":4191,"src":"165:68:27","symbolAliases":[{"foreign":{"id":4545,"name":"SignatureVerification","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"174:21:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4548,"name":"Assertions","nodeType":"IdentifierPath","referencedDeclaration":632,"src":"371:10:27"},"id":4549,"nodeType":"InheritanceSpecifier","src":"371:10:27"},{"baseName":{"id":4550,"name":"SignatureVerification","nodeType":"IdentifierPath","referencedDeclaration":4190,"src":"383:21:27"},"id":4551,"nodeType":"InheritanceSpecifier","src":"383:21:27"}],"canonicalName":"Verifiers","contractDependencies":[],"contractKind":"contract","documentation":{"id":4547,"nodeType":"StructuredDocumentation","src":"235:113:27","text":" @title Verifiers\n @author 0age\n @notice Verifiers contains functions for performing verifications."},"fullyImplemented":true,"id":4709,"linearizedBaseContracts":[4709,4190,2340,534,632,594,1711,4038,516,497,2300,1030],"name":"Verifiers","nameLocation":"358:9:27","nodeType":"ContractDefinition","nodes":[{"body":{"id":4560,"nodeType":"Block","src":"833:2:27","statements":[]},"documentation":{"id":4552,"nodeType":"StructuredDocumentation","src":"411:348:27","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":4561,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":4557,"name":"conduitController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4554,"src":"814:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4558,"kind":"baseConstructorSpecifier","modifierName":{"id":4556,"name":"Assertions","nodeType":"IdentifierPath","referencedDeclaration":632,"src":"803:10:27"},"nodeType":"ModifierInvocation","src":"803:29:27"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4554,"mutability":"mutable","name":"conduitController","nameLocation":"784:17:27","nodeType":"VariableDeclaration","scope":4561,"src":"776:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4553,"name":"address","nodeType":"ElementaryTypeName","src":"776:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"775:27:27"},"returnParameters":{"id":4559,"nodeType":"ParameterList","parameters":[],"src":"833:0:27"},"scope":4709,"src":"764:71:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4596,"nodeType":"Block","src":"1482:483:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4573,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"1575:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":4574,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1587:5:27","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1587:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1575:27:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4577,"name":"endTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"1606:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":4578,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1617:5:27","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1617:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1606:26:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1575:57:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4591,"nodeType":"IfStatement","src":"1571:314:27","trueBody":{"id":4590,"nodeType":"Block","src":"1634:251:27","statements":[{"condition":{"id":4582,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"1725:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4587,"nodeType":"IfStatement","src":"1721:74:27","trueBody":{"id":4586,"nodeType":"Block","src":"1742:53:27","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4583,"name":"InvalidTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"1767:11:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1767:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4585,"nodeType":"RevertStatement","src":"1760:20:27"}]}},{"expression":{"hexValue":"66616c7365","id":4588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1869:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4572,"id":4589,"nodeType":"Return","src":"1862:12:27"}]}},{"expression":{"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4592,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"1946:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1954:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1946:12:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4595,"nodeType":"ExpressionStatement","src":"1946:12:27"}]},"documentation":{"id":4562,"nodeType":"StructuredDocumentation","src":"841:492:27","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":4597,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyTime","nameLocation":"1347:11:27","nodeType":"FunctionDefinition","parameters":{"id":4569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4564,"mutability":"mutable","name":"startTime","nameLocation":"1376:9:27","nodeType":"VariableDeclaration","scope":4597,"src":"1368:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1368:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4566,"mutability":"mutable","name":"endTime","nameLocation":"1403:7:27","nodeType":"VariableDeclaration","scope":4597,"src":"1395:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4565,"name":"uint256","nodeType":"ElementaryTypeName","src":"1395:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4568,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"1425:15:27","nodeType":"VariableDeclaration","scope":4597,"src":"1420:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4567,"name":"bool","nodeType":"ElementaryTypeName","src":"1420:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1358:88:27"},"returnParameters":{"id":4572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4571,"mutability":"mutable","name":"valid","nameLocation":"1475:5:27","nodeType":"VariableDeclaration","scope":4597,"src":"1470:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4570,"name":"bool","nodeType":"ElementaryTypeName","src":"1470:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1469:12:27"},"scope":4709,"src":"1338:627:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4628,"nodeType":"Block","src":"2770:439:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4607,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"2853:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4608,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2864:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2864:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2853:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4613,"nodeType":"IfStatement","src":"2849:58:27","trueBody":{"id":4612,"nodeType":"Block","src":"2876:31:27","statements":[{"functionReturnParameters":4606,"id":4611,"nodeType":"Return","src":"2890:7:27"}]}},{"assignments":[4615],"declarations":[{"constant":false,"id":4615,"mutability":"mutable","name":"digest","nameLocation":"3005:6:27","nodeType":"VariableDeclaration","scope":4628,"src":"2997:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4614,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2997:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4621,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4617,"name":"_domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"3034:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3034:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4619,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"3054:9:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4616,"name":"_deriveEIP712Digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"3014:19:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":4620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3014:50:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2997:67:27"},{"expression":{"arguments":[{"id":4623,"name":"offerer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"3175:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4624,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"3184:6:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4625,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"3192:9:27","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":4622,"name":"_assertValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4189,"src":"3153:21:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,bytes memory) view"}},"id":4626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3153:49:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4627,"nodeType":"ExpressionStatement","src":"3153:49:27"}]},"documentation":{"id":4598,"nodeType":"StructuredDocumentation","src":"1971:664:27","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":4629,"implemented":true,"kind":"function","modifiers":[],"name":"_verifySignature","nameLocation":"2649:16:27","nodeType":"FunctionDefinition","parameters":{"id":4605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4600,"mutability":"mutable","name":"offerer","nameLocation":"2683:7:27","nodeType":"VariableDeclaration","scope":4629,"src":"2675:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4599,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4602,"mutability":"mutable","name":"orderHash","nameLocation":"2708:9:27","nodeType":"VariableDeclaration","scope":4629,"src":"2700:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2700:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4604,"mutability":"mutable","name":"signature","nameLocation":"2740:9:27","nodeType":"VariableDeclaration","scope":4629,"src":"2727:22:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4603,"name":"bytes","nodeType":"ElementaryTypeName","src":"2727:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2665:90:27"},"returnParameters":{"id":4606,"nodeType":"ParameterList","parameters":[],"src":"2770:0:27"},"scope":4709,"src":"2640:569:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4707,"nodeType":"Block","src":"3405:849:27","statements":[{"condition":{"expression":{"id":4643,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4634,"src":"3419:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":4644,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isCancelled","nodeType":"MemberAccess","referencedDeclaration":1645,"src":"3419:23:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4655,"nodeType":"IfStatement","src":"3415:168:27","trueBody":{"id":4654,"nodeType":"Block","src":"3444:139:27","statements":[{"condition":{"id":4645,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4638,"src":"3462:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4651,"nodeType":"IfStatement","src":"3458:88:27","trueBody":{"id":4650,"nodeType":"Block","src":"3479:67:27","statements":[{"errorCall":{"arguments":[{"id":4647,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"3521:9:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4646,"name":"OrderIsCancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"3504:16:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":4648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3504:27:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4649,"nodeType":"RevertStatement","src":"3497:34:27"}]}},{"expression":{"hexValue":"66616c7365","id":4652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3567:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4642,"id":4653,"nodeType":"Return","src":"3560:12:27"}]}},{"condition":{"expression":{"id":4656,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4634,"src":"3597:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":4657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"isFinalized","nodeType":"MemberAccess","referencedDeclaration":1647,"src":"3597:23:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4668,"nodeType":"IfStatement","src":"3593:173:27","trueBody":{"id":4667,"nodeType":"Block","src":"3622:144:27","statements":[{"condition":{"id":4658,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4638,"src":"3640:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4664,"nodeType":"IfStatement","src":"3636:93:27","trueBody":{"id":4663,"nodeType":"Block","src":"3657:72:27","statements":[{"errorCall":{"arguments":[{"id":4660,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"3704:9:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4659,"name":"OrderAlreadyFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"3682:21:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":4661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3682:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4662,"nodeType":"RevertStatement","src":"3675:39:27"}]}},{"expression":{"hexValue":"66616c7365","id":4665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3750:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4642,"id":4666,"nodeType":"Return","src":"3743:12:27"}]}},{"condition":{"id":4669,"name":"firstPay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"3780:8:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4701,"nodeType":"Block","src":"4012:213:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4686,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4634,"src":"4030:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":4687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"4030:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4055:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4030:26:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4700,"nodeType":"IfStatement","src":"4026:189:27","trueBody":{"id":4699,"nodeType":"Block","src":"4058:157:27","statements":[{"condition":{"id":4690,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4638,"src":"4080:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4696,"nodeType":"IfStatement","src":"4076:95:27","trueBody":{"id":4695,"nodeType":"Block","src":"4097:74:27","statements":[{"errorCall":{"arguments":[{"id":4692,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"4142:9:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4691,"name":"OrderNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"4126:15:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":4693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4126:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4694,"nodeType":"RevertStatement","src":"4119:33:27"}]}},{"expression":{"hexValue":"66616c7365","id":4697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4195:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4642,"id":4698,"nodeType":"Return","src":"4188:12:27"}]}}]},"id":4702,"nodeType":"IfStatement","src":"3776:449:27","trueBody":{"id":4685,"nodeType":"Block","src":"3790:216:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4670,"name":"orderStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4634,"src":"3808:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus storage pointer"}},"id":4671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"paidTimes","nodeType":"MemberAccess","referencedDeclaration":1657,"src":"3808:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3832:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3808:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4684,"nodeType":"IfStatement","src":"3804:192:27","trueBody":{"id":4683,"nodeType":"Block","src":"3835:161:27","statements":[{"condition":{"id":4674,"name":"revertOnInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4638,"src":"3857:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4680,"nodeType":"IfStatement","src":"3853:99:27","trueBody":{"id":4679,"nodeType":"Block","src":"3874:78:27","statements":[{"errorCall":{"arguments":[{"id":4676,"name":"orderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"3923:9:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4675,"name":"OrderAlreadyStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"3903:19:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":4677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3903:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4678,"nodeType":"RevertStatement","src":"3896:37:27"}]}},{"expression":{"hexValue":"66616c7365","id":4681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3976:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4642,"id":4682,"nodeType":"Return","src":"3969:12:27"}]}}]}},{"expression":{"id":4705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4703,"name":"valid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"4235:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4243:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4235:12:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4706,"nodeType":"ExpressionStatement","src":"4235:12:27"}]},"id":4708,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyOrderStatus","nameLocation":"3224:18:27","nodeType":"FunctionDefinition","parameters":{"id":4639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4631,"mutability":"mutable","name":"orderHash","nameLocation":"3260:9:27","nodeType":"VariableDeclaration","scope":4708,"src":"3252:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4630,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3252:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4634,"mutability":"mutable","name":"orderStatus","nameLocation":"3299:11:27","nodeType":"VariableDeclaration","scope":4708,"src":"3279:31:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"},"typeName":{"id":4633,"nodeType":"UserDefinedTypeName","pathNode":{"id":4632,"name":"OrderStatus","nodeType":"IdentifierPath","referencedDeclaration":1658,"src":"3279:11:27"},"referencedDeclaration":1658,"src":"3279:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_OrderStatus_$1658_storage_ptr","typeString":"struct OrderStatus"}},"visibility":"internal"},{"constant":false,"id":4636,"mutability":"mutable","name":"firstPay","nameLocation":"3325:8:27","nodeType":"VariableDeclaration","scope":4708,"src":"3320:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4635,"name":"bool","nodeType":"ElementaryTypeName","src":"3320:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4638,"mutability":"mutable","name":"revertOnInvalid","nameLocation":"3348:15:27","nodeType":"VariableDeclaration","scope":4708,"src":"3343:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4637,"name":"bool","nodeType":"ElementaryTypeName","src":"3343:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3242:127:27"},"returnParameters":{"id":4642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4641,"mutability":"mutable","name":"valid","nameLocation":"3398:5:27","nodeType":"VariableDeclaration","scope":4708,"src":"3393:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4640,"name":"bool","nodeType":"ElementaryTypeName","src":"3393:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3392:12:27"},"scope":4709,"src":"3215:1039:27","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4710,"src":"349:3907:27","usedErrors":[396,400,404,408,411,418,421,426,435,438,445,448,453,458,461,464,469,472,475,478,482,486,490,494,496,515,524,527,530,533,540,543,546,559,574,585,590,593]}],"src":"32:4225:27"},"id":27},"erc721a/contracts/IERC721A.sol":{"ast":{"absolutePath":"erc721a/contracts/IERC721A.sol","exportedSymbols":{"IERC721A":[4915]},"id":4916,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4711,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"84:23:28"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721A","contractDependencies":[],"contractKind":"interface","documentation":{"id":4712,"nodeType":"StructuredDocumentation","src":"109:37:28","text":" @dev Interface of ERC721A."},"fullyImplemented":false,"id":4915,"linearizedBaseContracts":[4915],"name":"IERC721A","nameLocation":"157:8:28","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4713,"nodeType":"StructuredDocumentation","src":"172:76:28","text":" The caller must own the token or be an approved operator."},"errorSelector":"cfb3b942","id":4715,"name":"ApprovalCallerNotOwnerNorApproved","nameLocation":"259:33:28","nodeType":"ErrorDefinition","parameters":{"id":4714,"nodeType":"ParameterList","parameters":[],"src":"292:2:28"},"src":"253:42:28"},{"documentation":{"id":4716,"nodeType":"StructuredDocumentation","src":"301:44:28","text":" The token does not exist."},"errorSelector":"cf4700e4","id":4718,"name":"ApprovalQueryForNonexistentToken","nameLocation":"356:32:28","nodeType":"ErrorDefinition","parameters":{"id":4717,"nodeType":"ParameterList","parameters":[],"src":"388:2:28"},"src":"350:41:28"},{"documentation":{"id":4719,"nodeType":"StructuredDocumentation","src":"397:65:28","text":" Cannot query the balance for the zero address."},"errorSelector":"8f4eb604","id":4721,"name":"BalanceQueryForZeroAddress","nameLocation":"473:26:28","nodeType":"ErrorDefinition","parameters":{"id":4720,"nodeType":"ParameterList","parameters":[],"src":"499:2:28"},"src":"467:35:28"},{"documentation":{"id":4722,"nodeType":"StructuredDocumentation","src":"508:51:28","text":" Cannot mint to the zero address."},"errorSelector":"2e076300","id":4724,"name":"MintToZeroAddress","nameLocation":"570:17:28","nodeType":"ErrorDefinition","parameters":{"id":4723,"nodeType":"ParameterList","parameters":[],"src":"587:2:28"},"src":"564:26:28"},{"documentation":{"id":4725,"nodeType":"StructuredDocumentation","src":"596:72:28","text":" The quantity of tokens minted must be more than zero."},"errorSelector":"b562e8dd","id":4727,"name":"MintZeroQuantity","nameLocation":"679:16:28","nodeType":"ErrorDefinition","parameters":{"id":4726,"nodeType":"ParameterList","parameters":[],"src":"695:2:28"},"src":"673:25:28"},{"documentation":{"id":4728,"nodeType":"StructuredDocumentation","src":"704:44:28","text":" The token does not exist."},"errorSelector":"df2d9b42","id":4730,"name":"OwnerQueryForNonexistentToken","nameLocation":"759:29:28","nodeType":"ErrorDefinition","parameters":{"id":4729,"nodeType":"ParameterList","parameters":[],"src":"788:2:28"},"src":"753:38:28"},{"documentation":{"id":4731,"nodeType":"StructuredDocumentation","src":"797:76:28","text":" The caller must own the token or be an approved operator."},"errorSelector":"59c896be","id":4733,"name":"TransferCallerNotOwnerNorApproved","nameLocation":"884:33:28","nodeType":"ErrorDefinition","parameters":{"id":4732,"nodeType":"ParameterList","parameters":[],"src":"917:2:28"},"src":"878:42:28"},{"documentation":{"id":4734,"nodeType":"StructuredDocumentation","src":"926:53:28","text":" The token must be owned by `from`."},"errorSelector":"a1148100","id":4736,"name":"TransferFromIncorrectOwner","nameLocation":"990:26:28","nodeType":"ErrorDefinition","parameters":{"id":4735,"nodeType":"ParameterList","parameters":[],"src":"1016:2:28"},"src":"984:35:28"},{"documentation":{"id":4737,"nodeType":"StructuredDocumentation","src":"1025:116:28","text":" Cannot safely transfer to a contract that does not implement the\n ERC721Receiver interface."},"errorSelector":"d1a57ed6","id":4739,"name":"TransferToNonERC721ReceiverImplementer","nameLocation":"1152:38:28","nodeType":"ErrorDefinition","parameters":{"id":4738,"nodeType":"ParameterList","parameters":[],"src":"1190:2:28"},"src":"1146:47:28"},{"documentation":{"id":4740,"nodeType":"StructuredDocumentation","src":"1199:55:28","text":" Cannot transfer to the zero address."},"errorSelector":"ea553b34","id":4742,"name":"TransferToZeroAddress","nameLocation":"1265:21:28","nodeType":"ErrorDefinition","parameters":{"id":4741,"nodeType":"ParameterList","parameters":[],"src":"1286:2:28"},"src":"1259:30:28"},{"documentation":{"id":4743,"nodeType":"StructuredDocumentation","src":"1295:44:28","text":" The token does not exist."},"errorSelector":"a14c4b50","id":4745,"name":"URIQueryForNonexistentToken","nameLocation":"1350:27:28","nodeType":"ErrorDefinition","parameters":{"id":4744,"nodeType":"ParameterList","parameters":[],"src":"1377:2:28"},"src":"1344:36:28"},{"documentation":{"id":4746,"nodeType":"StructuredDocumentation","src":"1386:79:28","text":" The `quantity` minted with ERC2309 exceeds the safety limit."},"errorSelector":"3db1f9af","id":4748,"name":"MintERC2309QuantityExceedsLimit","nameLocation":"1476:31:28","nodeType":"ErrorDefinition","parameters":{"id":4747,"nodeType":"ParameterList","parameters":[],"src":"1507:2:28"},"src":"1470:40:28"},{"documentation":{"id":4749,"nodeType":"StructuredDocumentation","src":"1516:83:28","text":" The `extraData` cannot be set on an unintialized ownership slot."},"errorSelector":"00d58153","id":4751,"name":"OwnershipNotInitializedForExtraData","nameLocation":"1610:35:28","nodeType":"ErrorDefinition","parameters":{"id":4750,"nodeType":"ParameterList","parameters":[],"src":"1645:2:28"},"src":"1604:44:28"},{"canonicalName":"IERC721A.TokenOwnership","id":4760,"members":[{"constant":false,"id":4753,"mutability":"mutable","name":"addr","nameLocation":"1912:4:28","nodeType":"VariableDeclaration","scope":4760,"src":"1904:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4752,"name":"address","nodeType":"ElementaryTypeName","src":"1904:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4755,"mutability":"mutable","name":"startTimestamp","nameLocation":"2017:14:28","nodeType":"VariableDeclaration","scope":4760,"src":"2010:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4754,"name":"uint64","nodeType":"ElementaryTypeName","src":"2010:6:28","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4757,"mutability":"mutable","name":"burned","nameLocation":"2092:6:28","nodeType":"VariableDeclaration","scope":4760,"src":"2087:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4756,"name":"bool","nodeType":"ElementaryTypeName","src":"2087:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4759,"mutability":"mutable","name":"extraData","nameLocation":"2203:9:28","nodeType":"VariableDeclaration","scope":4760,"src":"2196:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4758,"name":"uint24","nodeType":"ElementaryTypeName","src":"2196:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"TokenOwnership","nameLocation":"1842:14:28","nodeType":"StructDefinition","scope":4915,"src":"1835:384:28","visibility":"public"},{"documentation":{"id":4761,"nodeType":"StructuredDocumentation","src":"2410:192:28","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":4766,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2616:11:28","nodeType":"FunctionDefinition","parameters":{"id":4762,"nodeType":"ParameterList","parameters":[],"src":"2627:2:28"},"returnParameters":{"id":4765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4766,"src":"2653:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4763,"name":"uint256","nodeType":"ElementaryTypeName","src":"2653:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:9:28"},"scope":4915,"src":"2607:55:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4767,"nodeType":"StructuredDocumentation","src":"2849:341:28","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":4774,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3204:17:28","nodeType":"FunctionDefinition","parameters":{"id":4770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4769,"mutability":"mutable","name":"interfaceId","nameLocation":"3229:11:28","nodeType":"VariableDeclaration","scope":4774,"src":"3222:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4768,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3222:6:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3221:20:28"},"returnParameters":{"id":4773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4774,"src":"3265:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4771,"name":"bool","nodeType":"ElementaryTypeName","src":"3265:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3264:6:28"},"scope":4915,"src":"3195:76:28","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":4775,"nodeType":"StructuredDocumentation","src":"3458:88:28","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":4783,"name":"Transfer","nameLocation":"3557:8:28","nodeType":"EventDefinition","parameters":{"id":4782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4777,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3582:4:28","nodeType":"VariableDeclaration","scope":4783,"src":"3566:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4776,"name":"address","nodeType":"ElementaryTypeName","src":"3566:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4779,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"3604:2:28","nodeType":"VariableDeclaration","scope":4783,"src":"3588:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4778,"name":"address","nodeType":"ElementaryTypeName","src":"3588:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4781,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3624:7:28","nodeType":"VariableDeclaration","scope":4783,"src":"3608:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4780,"name":"uint256","nodeType":"ElementaryTypeName","src":"3608:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3565:67:28"},"src":"3551:82:28"},{"anonymous":false,"documentation":{"id":4784,"nodeType":"StructuredDocumentation","src":"3639:94:28","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":4792,"name":"Approval","nameLocation":"3744:8:28","nodeType":"EventDefinition","parameters":{"id":4791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4786,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"3769:5:28","nodeType":"VariableDeclaration","scope":4792,"src":"3753:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4785,"name":"address","nodeType":"ElementaryTypeName","src":"3753:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4788,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"3792:8:28","nodeType":"VariableDeclaration","scope":4792,"src":"3776:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4787,"name":"address","nodeType":"ElementaryTypeName","src":"3776:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4790,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3818:7:28","nodeType":"VariableDeclaration","scope":4792,"src":"3802:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4789,"name":"uint256","nodeType":"ElementaryTypeName","src":"3802:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3752:74:28"},"src":"3738:89:28"},{"anonymous":false,"documentation":{"id":4793,"nodeType":"StructuredDocumentation","src":"3833:124:28","text":" @dev Emitted when `owner` enables or disables\n (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":4801,"name":"ApprovalForAll","nameLocation":"3968:14:28","nodeType":"EventDefinition","parameters":{"id":4800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4795,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"3999:5:28","nodeType":"VariableDeclaration","scope":4801,"src":"3983:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4794,"name":"address","nodeType":"ElementaryTypeName","src":"3983:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4797,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"4022:8:28","nodeType":"VariableDeclaration","scope":4801,"src":"4006:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4796,"name":"address","nodeType":"ElementaryTypeName","src":"4006:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4799,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"4037:8:28","nodeType":"VariableDeclaration","scope":4801,"src":"4032:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4798,"name":"bool","nodeType":"ElementaryTypeName","src":"4032:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3982:64:28"},"src":"3962:85:28"},{"documentation":{"id":4802,"nodeType":"StructuredDocumentation","src":"4053:74:28","text":" @dev Returns the number of tokens in `owner`'s account."},"functionSelector":"70a08231","id":4809,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4141:9:28","nodeType":"FunctionDefinition","parameters":{"id":4805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4804,"mutability":"mutable","name":"owner","nameLocation":"4159:5:28","nodeType":"VariableDeclaration","scope":4809,"src":"4151:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4803,"name":"address","nodeType":"ElementaryTypeName","src":"4151:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4150:15:28"},"returnParameters":{"id":4808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4807,"mutability":"mutable","name":"balance","nameLocation":"4197:7:28","nodeType":"VariableDeclaration","scope":4809,"src":"4189:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4806,"name":"uint256","nodeType":"ElementaryTypeName","src":"4189:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4188:17:28"},"scope":4915,"src":"4132:74:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4810,"nodeType":"StructuredDocumentation","src":"4212:131:28","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":4817,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"4357:7:28","nodeType":"FunctionDefinition","parameters":{"id":4813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4812,"mutability":"mutable","name":"tokenId","nameLocation":"4373:7:28","nodeType":"VariableDeclaration","scope":4817,"src":"4365:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4811,"name":"uint256","nodeType":"ElementaryTypeName","src":"4365:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4364:17:28"},"returnParameters":{"id":4816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4815,"mutability":"mutable","name":"owner","nameLocation":"4413:5:28","nodeType":"VariableDeclaration","scope":4817,"src":"4405:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4814,"name":"address","nodeType":"ElementaryTypeName","src":"4405:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4404:15:28"},"scope":4915,"src":"4348:72:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4818,"nodeType":"StructuredDocumentation","src":"4426:711:28","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":4829,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5151:16:28","nodeType":"FunctionDefinition","parameters":{"id":4827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4820,"mutability":"mutable","name":"from","nameLocation":"5185:4:28","nodeType":"VariableDeclaration","scope":4829,"src":"5177:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4819,"name":"address","nodeType":"ElementaryTypeName","src":"5177:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4822,"mutability":"mutable","name":"to","nameLocation":"5207:2:28","nodeType":"VariableDeclaration","scope":4829,"src":"5199:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4821,"name":"address","nodeType":"ElementaryTypeName","src":"5199:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4824,"mutability":"mutable","name":"tokenId","nameLocation":"5227:7:28","nodeType":"VariableDeclaration","scope":4829,"src":"5219:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4823,"name":"uint256","nodeType":"ElementaryTypeName","src":"5219:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4826,"mutability":"mutable","name":"data","nameLocation":"5259:4:28","nodeType":"VariableDeclaration","scope":4829,"src":"5244:19:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4825,"name":"bytes","nodeType":"ElementaryTypeName","src":"5244:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5167:102:28"},"returnParameters":{"id":4828,"nodeType":"ParameterList","parameters":[],"src":"5286:0:28"},"scope":4915,"src":"5142:145:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4830,"nodeType":"StructuredDocumentation","src":"5293:80:28","text":" @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`."},"functionSelector":"42842e0e","id":4839,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5387:16:28","nodeType":"FunctionDefinition","parameters":{"id":4837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4832,"mutability":"mutable","name":"from","nameLocation":"5421:4:28","nodeType":"VariableDeclaration","scope":4839,"src":"5413:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4831,"name":"address","nodeType":"ElementaryTypeName","src":"5413:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4834,"mutability":"mutable","name":"to","nameLocation":"5443:2:28","nodeType":"VariableDeclaration","scope":4839,"src":"5435:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4833,"name":"address","nodeType":"ElementaryTypeName","src":"5435:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4836,"mutability":"mutable","name":"tokenId","nameLocation":"5463:7:28","nodeType":"VariableDeclaration","scope":4839,"src":"5455:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4835,"name":"uint256","nodeType":"ElementaryTypeName","src":"5455:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5403:73:28"},"returnParameters":{"id":4838,"nodeType":"ParameterList","parameters":[],"src":"5493:0:28"},"scope":4915,"src":"5378:116:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4840,"nodeType":"StructuredDocumentation","src":"5500:512:28","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":4849,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"6026:12:28","nodeType":"FunctionDefinition","parameters":{"id":4847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4842,"mutability":"mutable","name":"from","nameLocation":"6056:4:28","nodeType":"VariableDeclaration","scope":4849,"src":"6048:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4841,"name":"address","nodeType":"ElementaryTypeName","src":"6048:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4844,"mutability":"mutable","name":"to","nameLocation":"6078:2:28","nodeType":"VariableDeclaration","scope":4849,"src":"6070:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4843,"name":"address","nodeType":"ElementaryTypeName","src":"6070:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4846,"mutability":"mutable","name":"tokenId","nameLocation":"6098:7:28","nodeType":"VariableDeclaration","scope":4849,"src":"6090:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4845,"name":"uint256","nodeType":"ElementaryTypeName","src":"6090:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6038:73:28"},"returnParameters":{"id":4848,"nodeType":"ParameterList","parameters":[],"src":"6128:0:28"},"scope":4915,"src":"6017:112:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4850,"nodeType":"StructuredDocumentation","src":"6135:459:28","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":4857,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"6608:7:28","nodeType":"FunctionDefinition","parameters":{"id":4855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4852,"mutability":"mutable","name":"to","nameLocation":"6624:2:28","nodeType":"VariableDeclaration","scope":4857,"src":"6616:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4851,"name":"address","nodeType":"ElementaryTypeName","src":"6616:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4854,"mutability":"mutable","name":"tokenId","nameLocation":"6636:7:28","nodeType":"VariableDeclaration","scope":4857,"src":"6628:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4853,"name":"uint256","nodeType":"ElementaryTypeName","src":"6628:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6615:29:28"},"returnParameters":{"id":4856,"nodeType":"ParameterList","parameters":[],"src":"6661:0:28"},"scope":4915,"src":"6599:63:28","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":4858,"nodeType":"StructuredDocumentation","src":"6668:316:28","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":4865,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"6998:17:28","nodeType":"FunctionDefinition","parameters":{"id":4863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4860,"mutability":"mutable","name":"operator","nameLocation":"7024:8:28","nodeType":"VariableDeclaration","scope":4865,"src":"7016:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4859,"name":"address","nodeType":"ElementaryTypeName","src":"7016:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4862,"mutability":"mutable","name":"_approved","nameLocation":"7039:9:28","nodeType":"VariableDeclaration","scope":4865,"src":"7034:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4861,"name":"bool","nodeType":"ElementaryTypeName","src":"7034:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7015:34:28"},"returnParameters":{"id":4864,"nodeType":"ParameterList","parameters":[],"src":"7058:0:28"},"scope":4915,"src":"6989:70:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4866,"nodeType":"StructuredDocumentation","src":"7065:139:28","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":4873,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"7218:11:28","nodeType":"FunctionDefinition","parameters":{"id":4869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4868,"mutability":"mutable","name":"tokenId","nameLocation":"7238:7:28","nodeType":"VariableDeclaration","scope":4873,"src":"7230:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4867,"name":"uint256","nodeType":"ElementaryTypeName","src":"7230:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7229:17:28"},"returnParameters":{"id":4872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4871,"mutability":"mutable","name":"operator","nameLocation":"7278:8:28","nodeType":"VariableDeclaration","scope":4873,"src":"7270:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4870,"name":"address","nodeType":"ElementaryTypeName","src":"7270:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7269:18:28"},"scope":4915,"src":"7209:79:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4874,"nodeType":"StructuredDocumentation","src":"7294:139:28","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":4883,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"7447:16:28","nodeType":"FunctionDefinition","parameters":{"id":4879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4876,"mutability":"mutable","name":"owner","nameLocation":"7472:5:28","nodeType":"VariableDeclaration","scope":4883,"src":"7464:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4875,"name":"address","nodeType":"ElementaryTypeName","src":"7464:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4878,"mutability":"mutable","name":"operator","nameLocation":"7487:8:28","nodeType":"VariableDeclaration","scope":4883,"src":"7479:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4877,"name":"address","nodeType":"ElementaryTypeName","src":"7479:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7463:33:28"},"returnParameters":{"id":4882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4883,"src":"7520:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4880,"name":"bool","nodeType":"ElementaryTypeName","src":"7520:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7519:6:28"},"scope":4915,"src":"7438:88:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4884,"nodeType":"StructuredDocumentation","src":"7717:58:28","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":4889,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"7789:4:28","nodeType":"FunctionDefinition","parameters":{"id":4885,"nodeType":"ParameterList","parameters":[],"src":"7793:2:28"},"returnParameters":{"id":4888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4889,"src":"7819:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4886,"name":"string","nodeType":"ElementaryTypeName","src":"7819:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7818:15:28"},"scope":4915,"src":"7780:54:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4890,"nodeType":"StructuredDocumentation","src":"7840:60:28","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":4895,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"7914:6:28","nodeType":"FunctionDefinition","parameters":{"id":4891,"nodeType":"ParameterList","parameters":[],"src":"7920:2:28"},"returnParameters":{"id":4894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4893,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4895,"src":"7946:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4892,"name":"string","nodeType":"ElementaryTypeName","src":"7946:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7945:15:28"},"scope":4915,"src":"7905:56:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4896,"nodeType":"StructuredDocumentation","src":"7967:90:28","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":4903,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"8071:8:28","nodeType":"FunctionDefinition","parameters":{"id":4899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4898,"mutability":"mutable","name":"tokenId","nameLocation":"8088:7:28","nodeType":"VariableDeclaration","scope":4903,"src":"8080:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4897,"name":"uint256","nodeType":"ElementaryTypeName","src":"8080:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8079:17:28"},"returnParameters":{"id":4902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4903,"src":"8120:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4900,"name":"string","nodeType":"ElementaryTypeName","src":"8120:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8119:15:28"},"scope":4915,"src":"8062:73:28","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":4904,"nodeType":"StructuredDocumentation","src":"8322:267:28","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":4914,"name":"ConsecutiveTransfer","nameLocation":"8600:19:28","nodeType":"EventDefinition","parameters":{"id":4913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4906,"indexed":true,"mutability":"mutable","name":"fromTokenId","nameLocation":"8636:11:28","nodeType":"VariableDeclaration","scope":4914,"src":"8620:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4905,"name":"uint256","nodeType":"ElementaryTypeName","src":"8620:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4908,"indexed":false,"mutability":"mutable","name":"toTokenId","nameLocation":"8657:9:28","nodeType":"VariableDeclaration","scope":4914,"src":"8649:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4907,"name":"uint256","nodeType":"ElementaryTypeName","src":"8649:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4910,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"8684:4:28","nodeType":"VariableDeclaration","scope":4914,"src":"8668:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4909,"name":"address","nodeType":"ElementaryTypeName","src":"8668:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4912,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"8706:2:28","nodeType":"VariableDeclaration","scope":4914,"src":"8690:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4911,"name":"address","nodeType":"ElementaryTypeName","src":"8690:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8619:90:28"},"src":"8594:116:28"}],"scope":4916,"src":"147:8565:28","usedErrors":[4715,4718,4721,4724,4727,4730,4733,4736,4739,4742,4745,4748,4751]}],"src":"84:8629:28"},"id":28},"erc721a/contracts/extensions/IERC4907A.sol":{"ast":{"absolutePath":"erc721a/contracts/extensions/IERC4907A.sol","exportedSymbols":{"IERC4907A":[4960],"IERC721A":[4915]},"id":4961,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4917,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"84:23:29"},{"absolutePath":"erc721a/contracts/IERC721A.sol","file":"../IERC721A.sol","id":4918,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4961,"sourceUnit":4916,"src":"109:25:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4920,"name":"IERC721A","nodeType":"IdentifierPath","referencedDeclaration":4915,"src":"198:8:29"},"id":4921,"nodeType":"InheritanceSpecifier","src":"198:8:29"}],"canonicalName":"IERC4907A","contractDependencies":[],"contractKind":"interface","documentation":{"id":4919,"nodeType":"StructuredDocumentation","src":"136:38:29","text":" @dev Interface of ERC4907A."},"fullyImplemented":false,"id":4960,"linearizedBaseContracts":[4960,4915],"name":"IERC4907A","nameLocation":"185:9:29","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4922,"nodeType":"StructuredDocumentation","src":"213:76:29","text":" The caller must own the token or be an approved operator."},"errorSelector":"4f1dd8e8","id":4924,"name":"SetUserCallerNotOwnerNorApproved","nameLocation":"300:32:29","nodeType":"ErrorDefinition","parameters":{"id":4923,"nodeType":"ParameterList","parameters":[],"src":"332:2:29"},"src":"294:41:29"},{"anonymous":false,"documentation":{"id":4925,"nodeType":"StructuredDocumentation","src":"341:174:29","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":4933,"name":"UpdateUser","nameLocation":"526:10:29","nodeType":"EventDefinition","parameters":{"id":4932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4927,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"553:7:29","nodeType":"VariableDeclaration","scope":4933,"src":"537:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4926,"name":"uint256","nodeType":"ElementaryTypeName","src":"537:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4929,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"578:4:29","nodeType":"VariableDeclaration","scope":4933,"src":"562:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4928,"name":"address","nodeType":"ElementaryTypeName","src":"562:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4931,"indexed":false,"mutability":"mutable","name":"expires","nameLocation":"591:7:29","nodeType":"VariableDeclaration","scope":4933,"src":"584:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4930,"name":"uint64","nodeType":"ElementaryTypeName","src":"584:6:29","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"536:63:29"},"src":"520:80:29"},{"documentation":{"id":4934,"nodeType":"StructuredDocumentation","src":"606:222:29","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":4943,"implemented":false,"kind":"function","modifiers":[],"name":"setUser","nameLocation":"842:7:29","nodeType":"FunctionDefinition","parameters":{"id":4941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4936,"mutability":"mutable","name":"tokenId","nameLocation":"867:7:29","nodeType":"VariableDeclaration","scope":4943,"src":"859:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4935,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4938,"mutability":"mutable","name":"user","nameLocation":"892:4:29","nodeType":"VariableDeclaration","scope":4943,"src":"884:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4937,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4940,"mutability":"mutable","name":"expires","nameLocation":"913:7:29","nodeType":"VariableDeclaration","scope":4943,"src":"906:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4939,"name":"uint64","nodeType":"ElementaryTypeName","src":"906:6:29","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"849:77:29"},"returnParameters":{"id":4942,"nodeType":"ParameterList","parameters":[],"src":"935:0:29"},"scope":4960,"src":"833:103:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4944,"nodeType":"StructuredDocumentation","src":"942:146:29","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":4951,"implemented":false,"kind":"function","modifiers":[],"name":"userOf","nameLocation":"1102:6:29","nodeType":"FunctionDefinition","parameters":{"id":4947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4946,"mutability":"mutable","name":"tokenId","nameLocation":"1117:7:29","nodeType":"VariableDeclaration","scope":4951,"src":"1109:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4945,"name":"uint256","nodeType":"ElementaryTypeName","src":"1109:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1108:17:29"},"returnParameters":{"id":4950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4949,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4951,"src":"1149:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4948,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1148:9:29"},"scope":4960,"src":"1093:65:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4952,"nodeType":"StructuredDocumentation","src":"1164:64:29","text":" @dev Returns the user's expires of `tokenId`."},"functionSelector":"8fc88c48","id":4959,"implemented":false,"kind":"function","modifiers":[],"name":"userExpires","nameLocation":"1242:11:29","nodeType":"FunctionDefinition","parameters":{"id":4955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4954,"mutability":"mutable","name":"tokenId","nameLocation":"1262:7:29","nodeType":"VariableDeclaration","scope":4959,"src":"1254:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4953,"name":"uint256","nodeType":"ElementaryTypeName","src":"1254:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1253:17:29"},"returnParameters":{"id":4958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4957,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4959,"src":"1294:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4956,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1293:9:29"},"scope":4960,"src":"1233:70:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4961,"src":"175:1130:29","usedErrors":[4715,4718,4721,4724,4727,4730,4733,4736,4739,4742,4745,4748,4751,4924]}],"src":"84:1222:29"},"id":29}},"contracts":{"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":"address","name":"fulfiller","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":{"@_17":{"entryPoint":null,"id":17,"parameterSlots":2,"returnSlots":0},"@_1739":{"entryPoint":null,"id":1739,"parameterSlots":1,"returnSlots":0},"@_2204":{"entryPoint":null,"id":2204,"parameterSlots":1,"returnSlots":0},"@_2375":{"entryPoint":null,"id":2375,"parameterSlots":2,"returnSlots":0},"@_3192":{"entryPoint":null,"id":3192,"parameterSlots":2,"returnSlots":0},"@_4003":{"entryPoint":null,"id":4003,"parameterSlots":0,"returnSlots":0},"@_4071":{"entryPoint":null,"id":4071,"parameterSlots":1,"returnSlots":0},"@_4561":{"entryPoint":null,"id":4561,"parameterSlots":1,"returnSlots":0},"@_617":{"entryPoint":null,"id":617,"parameterSlots":1,"returnSlots":0},"@_660":{"entryPoint":null,"id":660,"parameterSlots":2,"returnSlots":0},"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":315,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_26":{"entryPoint":null,"id":26,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:30","statements":[{"nodeType":"YulAssignment","src":"84:22:30","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:30"},"nodeType":"YulFunctionCall","src":"93:13:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:30"}]},{"body":{"nodeType":"YulBlock","src":"169:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:30"},"nodeType":"YulFunctionCall","src":"171:12:30"},"nodeType":"YulExpressionStatement","src":"171:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:30"},"nodeType":"YulFunctionCall","src":"150:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:30"},"nodeType":"YulFunctionCall","src":"146:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:30"},"nodeType":"YulFunctionCall","src":"135:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:30"},"nodeType":"YulFunctionCall","src":"125:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:30"},"nodeType":"YulFunctionCall","src":"118:50:30"},"nodeType":"YulIf","src":"115:70:30"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:30","type":""}],"src":"14:177:30"},{"body":{"nodeType":"YulBlock","src":"294:195:30","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:30"},"nodeType":"YulFunctionCall","src":"342:12:30"},"nodeType":"YulExpressionStatement","src":"342:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:30"},"nodeType":"YulFunctionCall","src":"311:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:30"},"nodeType":"YulFunctionCall","src":"307:32:30"},"nodeType":"YulIf","src":"304:52:30"},{"nodeType":"YulAssignment","src":"365:50:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:30"},"nodeType":"YulFunctionCall","src":"375:40:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:30"}]},{"nodeType":"YulAssignment","src":"424:59:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:30"},"nodeType":"YulFunctionCall","src":"464:18:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:30"},"nodeType":"YulFunctionCall","src":"434:49:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:30","type":""}],"src":"196:293:30"},{"body":{"nodeType":"YulBlock","src":"592:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"638:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"647:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"650:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"640:6:30"},"nodeType":"YulFunctionCall","src":"640:12:30"},"nodeType":"YulExpressionStatement","src":"640:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"613:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"609:3:30"},"nodeType":"YulFunctionCall","src":"609:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"634:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"605:3:30"},"nodeType":"YulFunctionCall","src":"605:32:30"},"nodeType":"YulIf","src":"602:52:30"},{"nodeType":"YulAssignment","src":"663:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"679:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"673:5:30"},"nodeType":"YulFunctionCall","src":"673:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"663:6:30"}]},{"nodeType":"YulAssignment","src":"698:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"718:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"729:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:30"},"nodeType":"YulFunctionCall","src":"714:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"708:5:30"},"nodeType":"YulFunctionCall","src":"708:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"698:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"550:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"561:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"573:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"581:6:30","type":""}],"src":"494:245:30"},{"body":{"nodeType":"YulBlock","src":"799:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"816:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"821:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:30"},"nodeType":"YulFunctionCall","src":"809:32:30"},"nodeType":"YulExpressionStatement","src":"809:32:30"},{"nodeType":"YulAssignment","src":"850:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"861:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"866:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"857:3:30"},"nodeType":"YulFunctionCall","src":"857:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"850:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"783:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"791:3:30","type":""}],"src":"744:131:30"},{"body":{"nodeType":"YulBlock","src":"935:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"952:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"957:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"945:6:30"},"nodeType":"YulFunctionCall","src":"945:31:30"},"nodeType":"YulExpressionStatement","src":"945:31:30"},{"nodeType":"YulAssignment","src":"985:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"996:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1001:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"992:3:30"},"nodeType":"YulFunctionCall","src":"992:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"985:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"919:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"927:3:30","type":""}],"src":"880:130:30"},{"body":{"nodeType":"YulBlock","src":"1070:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1087:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"1092:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1080:6:30"},"nodeType":"YulFunctionCall","src":"1080:30:30"},"nodeType":"YulExpressionStatement","src":"1080:30:30"},{"nodeType":"YulAssignment","src":"1119:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1130:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1135:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:30"},"nodeType":"YulFunctionCall","src":"1126:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1119:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1054:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1062:3:30","type":""}],"src":"1015:129:30"},{"body":{"nodeType":"YulBlock","src":"1204:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1221:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1226:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1214:6:30"},"nodeType":"YulFunctionCall","src":"1214:29:30"},"nodeType":"YulExpressionStatement","src":"1214:29:30"},{"nodeType":"YulAssignment","src":"1252:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1268:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:30"},"nodeType":"YulFunctionCall","src":"1259:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1252:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1188:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1196:3:30","type":""}],"src":"1149:128:30"},{"body":{"nodeType":"YulBlock","src":"1337:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1354:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1359:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1347:6:30"},"nodeType":"YulFunctionCall","src":"1347:31:30"},"nodeType":"YulExpressionStatement","src":"1347:31:30"},{"nodeType":"YulAssignment","src":"1387:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:30"},"nodeType":"YulFunctionCall","src":"1394:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1321:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1329:3:30","type":""}],"src":"1282:130:30"},{"body":{"nodeType":"YulBlock","src":"1472:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1489:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1494:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1482:6:30"},"nodeType":"YulFunctionCall","src":"1482:27:30"},"nodeType":"YulExpressionStatement","src":"1482:27:30"},{"nodeType":"YulAssignment","src":"1518:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1529:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1534:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1525:3:30"},"nodeType":"YulFunctionCall","src":"1525:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1518:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1456:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1464:3:30","type":""}],"src":"1417:126:30"},{"body":{"nodeType":"YulBlock","src":"1603:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1620:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1625:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1613:6:30"},"nodeType":"YulFunctionCall","src":"1613:35:30"},"nodeType":"YulExpressionStatement","src":"1613:35:30"},{"nodeType":"YulAssignment","src":"1657:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1668:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1673:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1664:3:30"},"nodeType":"YulFunctionCall","src":"1664:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1657:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1587:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1595:3:30","type":""}],"src":"1548:134:30"},{"body":{"nodeType":"YulBlock","src":"1742:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1764:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:30"},"nodeType":"YulFunctionCall","src":"1752:28:30"},"nodeType":"YulExpressionStatement","src":"1752:28:30"},{"nodeType":"YulAssignment","src":"1789:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1800:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1796:3:30"},"nodeType":"YulFunctionCall","src":"1796:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1789:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1726:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1734:3:30","type":""}],"src":"1687:127:30"},{"body":{"nodeType":"YulBlock","src":"1874:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1891:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1896:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1884:6:30"},"nodeType":"YulFunctionCall","src":"1884:34:30"},"nodeType":"YulExpressionStatement","src":"1884:34:30"},{"nodeType":"YulAssignment","src":"1927:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1938:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1934:3:30"},"nodeType":"YulFunctionCall","src":"1934:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1927:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1858:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1866:3:30","type":""}],"src":"1819:133:30"},{"body":{"nodeType":"YulBlock","src":"2012:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2029:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"2034:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2022:6:30"},"nodeType":"YulFunctionCall","src":"2022:30:30"},"nodeType":"YulExpressionStatement","src":"2022:30:30"},{"nodeType":"YulAssignment","src":"2061:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2072:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2077:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2068:3:30"},"nodeType":"YulFunctionCall","src":"2068:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2061:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2004:3:30","type":""}],"src":"1957:129:30"},{"body":{"nodeType":"YulBlock","src":"2146:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2163:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"2168:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2156:6:30"},"nodeType":"YulFunctionCall","src":"2156:16:30"},"nodeType":"YulExpressionStatement","src":"2156:16:30"},{"nodeType":"YulAssignment","src":"2181:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2192:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2197:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:30"},"nodeType":"YulFunctionCall","src":"2188:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2181:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2130:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2138:3:30","type":""}],"src":"2091:114:30"},{"body":{"nodeType":"YulBlock","src":"4321:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4338:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4343:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:30"},"nodeType":"YulFunctionCall","src":"4331:31:30"},"nodeType":"YulExpressionStatement","src":"4331:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4382:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4378:3:30"},"nodeType":"YulFunctionCall","src":"4378:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4392:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4371:6:30"},"nodeType":"YulFunctionCall","src":"4371:40:30"},"nodeType":"YulExpressionStatement","src":"4371:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4431:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4436:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4427:3:30"},"nodeType":"YulFunctionCall","src":"4427:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4441:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4420:6:30"},"nodeType":"YulFunctionCall","src":"4420:38:30"},"nodeType":"YulExpressionStatement","src":"4420:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4478:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4483:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4474:3:30"},"nodeType":"YulFunctionCall","src":"4474:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4488:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4467:6:30"},"nodeType":"YulFunctionCall","src":"4467:43:30"},"nodeType":"YulExpressionStatement","src":"4467:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4530:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4535:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4526:3:30"},"nodeType":"YulFunctionCall","src":"4526:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4540:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4519:6:30"},"nodeType":"YulFunctionCall","src":"4519:41:30"},"nodeType":"YulExpressionStatement","src":"4519:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4580:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4585:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:30"},"nodeType":"YulFunctionCall","src":"4576:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4590:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:30"},"nodeType":"YulFunctionCall","src":"4569:39:30"},"nodeType":"YulExpressionStatement","src":"4569:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4628:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4633:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4624:3:30"},"nodeType":"YulFunctionCall","src":"4624:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4638:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4617:6:30"},"nodeType":"YulFunctionCall","src":"4617:41:30"},"nodeType":"YulExpressionStatement","src":"4617:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4683:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:30"},"nodeType":"YulFunctionCall","src":"4674:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4689:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:30"},"nodeType":"YulFunctionCall","src":"4667:43:30"},"nodeType":"YulExpressionStatement","src":"4667:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4730:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4735:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:30"},"nodeType":"YulFunctionCall","src":"4726:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4741:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4719:6:30"},"nodeType":"YulFunctionCall","src":"4719:41:30"},"nodeType":"YulExpressionStatement","src":"4719:41:30"},{"nodeType":"YulAssignment","src":"4769:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5110:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5115:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:30"},"nodeType":"YulFunctionCall","src":"5106:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"5076:29:30"},"nodeType":"YulFunctionCall","src":"5076:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"5046:29:30"},"nodeType":"YulFunctionCall","src":"5046:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"5016:29:30"},"nodeType":"YulFunctionCall","src":"5016:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4986:29:30"},"nodeType":"YulFunctionCall","src":"4986:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4956:29:30"},"nodeType":"YulFunctionCall","src":"4956:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4926:29:30"},"nodeType":"YulFunctionCall","src":"4926:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4896:29:30"},"nodeType":"YulFunctionCall","src":"4896:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4866:29:30"},"nodeType":"YulFunctionCall","src":"4866:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4836:29:30"},"nodeType":"YulFunctionCall","src":"4836:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4806:29:30"},"nodeType":"YulFunctionCall","src":"4806:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4776:29:30"},"nodeType":"YulFunctionCall","src":"4776:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4769:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4313:3:30","type":""}],"src":"2210:2926:30"},{"body":{"nodeType":"YulBlock","src":"5838:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5855:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5860:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5848:6:30"},"nodeType":"YulFunctionCall","src":"5848:28:30"},"nodeType":"YulExpressionStatement","src":"5848:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5896:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5901:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:30"},"nodeType":"YulFunctionCall","src":"5892:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5906:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:30"},"nodeType":"YulFunctionCall","src":"5885:36:30"},"nodeType":"YulExpressionStatement","src":"5885:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5941:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5946:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5937:3:30"},"nodeType":"YulFunctionCall","src":"5937:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5951:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5930:6:30"},"nodeType":"YulFunctionCall","src":"5930:39:30"},"nodeType":"YulExpressionStatement","src":"5930:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5989:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5994:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:30"},"nodeType":"YulFunctionCall","src":"5985:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5999:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5978:6:30"},"nodeType":"YulFunctionCall","src":"5978:40:30"},"nodeType":"YulExpressionStatement","src":"5978:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6038:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6043:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6034:3:30"},"nodeType":"YulFunctionCall","src":"6034:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6048:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6027:6:30"},"nodeType":"YulFunctionCall","src":"6027:49:30"},"nodeType":"YulExpressionStatement","src":"6027:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6096:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6101:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6092:3:30"},"nodeType":"YulFunctionCall","src":"6092:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"6106:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6085:6:30"},"nodeType":"YulFunctionCall","src":"6085:25:30"},"nodeType":"YulExpressionStatement","src":"6085:25:30"},{"nodeType":"YulAssignment","src":"6119:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6130:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6135:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:30"},"nodeType":"YulFunctionCall","src":"6126:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6119:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5830:3:30","type":""}],"src":"5141:1003:30"},{"body":{"nodeType":"YulBlock","src":"6362:276:30","statements":[{"nodeType":"YulAssignment","src":"6372:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6384:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:30"},"nodeType":"YulFunctionCall","src":"6380:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6372:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6415:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6426:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:30"},"nodeType":"YulFunctionCall","src":"6408:25:30"},"nodeType":"YulExpressionStatement","src":"6408:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6453:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6464:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6449:3:30"},"nodeType":"YulFunctionCall","src":"6449:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6469:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6442:6:30"},"nodeType":"YulFunctionCall","src":"6442:34:30"},"nodeType":"YulExpressionStatement","src":"6442:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6496:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6507:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:30"},"nodeType":"YulFunctionCall","src":"6492:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6512:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6485:6:30"},"nodeType":"YulFunctionCall","src":"6485:34:30"},"nodeType":"YulExpressionStatement","src":"6485:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6550:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:30"},"nodeType":"YulFunctionCall","src":"6535:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6555:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:30"},"nodeType":"YulFunctionCall","src":"6528:34:30"},"nodeType":"YulExpressionStatement","src":"6528:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6593:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:30"},"nodeType":"YulFunctionCall","src":"6578:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6603:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6615:3:30"},"nodeType":"YulFunctionCall","src":"6615:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6628:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:30"},"nodeType":"YulFunctionCall","src":"6611:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6599:3:30"},"nodeType":"YulFunctionCall","src":"6599:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6571:6:30"},"nodeType":"YulFunctionCall","src":"6571:61:30"},"nodeType":"YulExpressionStatement","src":"6571:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6310:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6318:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6326:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6334:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6342:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6353:4:30","type":""}],"src":"6149:489:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101a06040523480156200001257600080fd5b5060405162003808380380620038088339810160408190526200003591620004a5565b8181818181818082808080806200004b6200013b565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa158015620000ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001109190620004dd565b5061016052505060016000555050506001600160a01b03166101805250620005029650505050505050565b6000808080620001626040805180820190915260048152631093941360e21b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b39450600091620003bd91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b80516001600160a01b0381168114620004a057600080fd5b919050565b60008060408385031215620004b957600080fd5b620004c48362000488565b9150620004d46020840162000488565b90509250929050565b60008060408385031215620004f157600080fd5b505080516020909101519092909150565b60805160a05160c05160e051610100516101205161014051610160516101805161326b6200059d6000396000818161026e015281816120280152818161270c0152818161279201526129da015260006120e4015260008181610ef801526120a201526000611dbe01526000611cee01526000818161051d01526107c701526000611d1c01526000611d6a01526000611d42015261326b6000f3fe6080604052600436106100bc5760003560e01c8063b86ae9e111610074578063f07ec3731161004e578063f07ec37314610218578063f47b774014610238578063ffc5d97a1461025c57600080fd5b8063b86ae9e1146101d2578063be92d18e146101f2578063d9e534111461020557600080fd5b80635b34b966116100a55780635b34b9661461016f5780639432cc1d14610192578063a3210e7c146101b257600080fd5b806322378003146100c157806346423aa7146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004612c48565b6102b5565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610116610111366004612cbd565b6102c8565b604080519815158952961515602089015294151595870195909552911515606086015273ffffffffffffffffffffffffffffffffffffffff16608085015260a084015260c083019190915260e0820152610100016100ed565b34801561017b57600080fd5b5061018461035b565b6040519081526020016100ed565b34801561019e57600080fd5b506100e16101ad366004612cd6565b61036a565b3480156101be57600080fd5b506100e16101cd366004612d53565b610376565b3480156101de57600080fd5b506101846101ed366004612d83565b610387565b6100e1610200366004612da0565b610556565b6100e1610213366004612de5565b610562565b34801561022457600080fd5b50610184610233366004612e45565b610577565b34801561024457600080fd5b5061024d6105a2565b6040516100ed93929190612e60565b34801561026857600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b60006102c183836105ba565b9392505050565b600080600080600080600080610340896000908152600260208190526040909120805460018201549282015460039092015460ff8083169561010084048216956201000085048316956301000000860490931694640100000000900473ffffffffffffffffffffffffffffffffffffffff1693909291565b97509750975097509750975097509750919395975091939597565b600061036561090a565b905090565b60006102c18383610967565b600061038182610b27565b92915050565b60408051610220810190915260009061038190806103a86020860186612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260408086013560208301520161040a6080860160608701612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260200161043560a0860160808701612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260200161046060c0860160a08701612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460c0013581526020018460e00135815260200184610100013581526020018461012001358152602001846101400135815260200184610160013581526020018461018001358152602001846101a001358152602001846101c001358152602001846101e0013581526020018461020001358152508361022001357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60006102c18383610c2c565b600061056f848484610daf565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610381565b60606000806105af610ed7565b925092509250909192565b60006105c4610f52565b6000808084815b818110156108fc57368888838181106105e6576105e6612ef9565b90506020028101906105f89190612f28565b9050806106086020820182612e45565b94506108006040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018360200160208101906106489190612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260408085013560208301520161067c6080850160608601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106a760a0850160808601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106d260c0850160a08601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018360c0013581526020018360e00135815260200183610100013581526020018361012001358152602001836101400135815260200183610160013581526020018361018001358152602001836101a001358152602001836101c001358152602001836101e0013581526020018361020001358152506107a08360000160208101906107789190612e45565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60008181526002602052604090209750955061081f8688600180610f90565b50865460ff166108f257610876858761083c610220860186612f66565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d292505050565b86547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117875560405173ffffffffffffffffffffffffffffffffffffffff8616907f09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6906108e99089815260200190565b60405180910390a25b50506001016105cb565b506001979650505050505050565b6000610914610f52565b503360008181526001602081815260409283902080549092019182905591518181529092917f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f910160405180910390a290565b6000610971610f52565b60008083815b81811015610b1a573687878381811061099257610992612ef9565b610240029190910191506109ab90506020820182612e45565b93503373ffffffffffffffffffffffffffffffffffffffff8516146109fc576040517f80ec737400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a3c6040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e45565b6000818152600260205260409020600181015490975090915015610a94576040517f9633f278000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010017865560405173ffffffffffffffffffffffffffffffffffffffff8616907fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275390610b089084815260200190565b60405180910390a25050600101610977565b5060019695505050505050565b600080600080610b3885600161114f565b92509250925080610b4e57506000949350505050565b610b7f6002610b636040880160208901612e45565b30610b7160208a018a612e45565b60408a01356001600061129b565b6000610b916080870160608801612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610bbb57610bb6858361138a565b610bc5565b610bc58583611427565b610bd26020860186612e45565b73ffffffffffffffffffffffffffffffffffffffff167fe68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada84604051610c1991815260200190565b60405180910390a2506001949350505050565b600080600080610c3d8660016114df565b92509250925081610c545760009350505050610381565b856000610c648260018084611656565b90506000610c786080840160608501612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610cd757610cc86002610ca86040850160208601612e45565b610cb56020860186612e45565b308660400135600188610200013561129b565b610cd28282611845565b610d3a565b604080516020808252818301909252600091602082018180368337019050509050610d2c610d0b6040850160208601612e45565b610d186020860186612e45565b3086604001356001886102000135876118fe565b610d3883838a84611964565b505b610d476020830183612e45565b6040805187815233602082015290810185905273ffffffffffffffffffffffffffffffffffffffff91909116907fe8b2cfa73a11bd60479d92890aeb77bc5f502014ec530c3f0c1774d51680f0a69060600160405180910390a2506001979650505050505050565b6000806000806000610dc388876001611a85565b929650909450909250905080610de05760009450505050506102c1565b506000610df08887600085611656565b90506000610e0460808a0160608b01612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610e2e57610e298882611845565b610e5d565b604080516020808252818301909252600091602082018180368337019050509050610e5b89838a84611964565b505b8115610e8857610e886002610e7860408b0160208c01612e45565b308660408d01356001600061129b565b60408051858152602081018890528315158183015290517f6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d389181900360600190a1506001979650505050505050565b6060600080610ee4611cea565b6040805160038082528183019092529193507f0000000000000000000000000000000000000000000000000000000000000000925060208201818036833750507f312e3100000000000000000000000000000000000000000000000000000000006020830152509391925090565b600160005414610f8e576040517f7fa8a98700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8254600090610100900460ff1615610fe5578115610fdd576040517f1a51557400000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b50600061056f565b835462010000900460ff1615611030578115610fdd576040517f836f8ef900000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b82156110805760038401541561107b578115610fdd576040517f9633f27800000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b6110c7565b83600301546000036110c7578115610fdd576040517fe567c93e00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8416036110f457505050565b600061113c611101611cea565b7f1901000000000000000000000000000000000000000000000000000000000000600090815260029190915260228581526042822091905290565b9050611149848284611de0565b50505050565b6000808061117561116536879003870187613023565b6107a06107786020890189612e45565b600081815260026020526040902080549194509060ff166111d55784156111cb576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b5060009050611294565b806003015492506111e98482600088610f90565b6111f7575060009050611294565b4261120761010088013585613146565b82600101546112169190613183565b11156112575784156111cb576040517f031ea4cb00000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b6112648160020154611ff9565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1663010100001790555060015b9250925092565b801561131057600060405190507f4ce34aa200000000000000000000000000000000000000000000000000000000815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e482015261130a828261010461209c565b50611381565b60028760038111156113245761132461319b565b036113745781600114611363576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136f86868686612238565b611381565b6113818686868686612347565b50505050505050565b6113be61139a6020840184612e45565b826113af6101208601356101808701356131ca565b6113b99190613146565b612479565b6000816113d56101208501356101408601356131ca565b6113df9190613146565b90506127106113f361016085013583613146565b6113fd91906131ca565b6114079082613205565b905061142261141c60c0850160a08601612e45565b82612479565b505050565b61146b61143a6080840160608501612e45565b6114476020850185612e45565b8361145c6101208701356101808801356131ca565b6114669190613146565b6124ee565b6000816114826101208501356101408601356131ca565b61148c9190613146565b90506127106114a061016085013583613146565b6114aa91906131ca565b6114b49082613205565b90506114226114c96080850160608601612e45565b6114d960c0860160a08701612e45565b836124ee565b60008080846114f760c082013560e083013587612656565b61150b575060009250829150819050611294565b60028161012001351015611561578415611551576040517f0a199cb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009250829150819050611294565b61158361157336839003830183613023565b6107a06107786020850185612e45565b60008181526002602052604090209094506115a18582600189610f90565b6115b45750600092508291506112949050565b805460ff166115dc576115dc6115cd6020840184612e45565b8661083c6102208b018b612f66565b611600336115f06040850160208601612e45565b84604001358561010001356126b5565b815460017fffffffffffffffff000000000000000000000000000000000000000000ff00009091163364010000000002178117835542818401556002830182905560039092018290559497909650939450505050565b6116816040518060800160405280600081526020016000815260200160008152602001600081525090565b60008061169386610120890135613205565b6101c088013560408501529050831561177f576116ba6101208801356101808901356131ca565b6116c49082613146565b6116d390610180890135613205565b91506116e96101208801356101408901356131ca565b6116f39082613146565b61170290610140890135613205565b835260408301518290826127106101608b01356117296101208d01356101408e01356131ca565b6117339190613146565b61173d91906131ca565b6117479190613146565b611756906101408b0135613205565b6117609190613205565b61176a9190613205565b6020840152610180870135606084015261183b565b6117936101208801356101808901356131ca565b61179d9087613146565b91506117b36101208801356101408901356131ca565b6117bd9087613146565b80845260408401518391612710906117db906101608c013590613146565b6117e591906131ca565b6117ef9190613205565b6117f99190613205565b6020840152841561183b57866101a001358360000181815161181b9190613183565b9052506040830180516101a08901359190611837908390613183565b9052505b5050949350505050565b80513490811015611882576040517f1a783b8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189c6118926020850185612e45565b8360200151612479565b6118b96118af60c0850160a08601612e45565b8360400151612479565b6060820151156118e0576118e06118d660a0850160808601612e45565b8360600151612479565b81516118ec9082613205565b90508015611422576114223382612479565b6119088183612862565b816119535782600114611947576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136f87878787612238565b611381828260028a8a8a8a8a612881565b3360006119776080870160608801612e45565b905061199a818361198e60c08a0160a08b01612e45565b8860400151888861291a565b6060850151156119c5576119c581836119b960a08a0160808b01612e45565b8860600151888861291a565b606085015160408601518651600092916119de91613205565b6119e89190613205565b905085602001518110611a4157611a138284611a0760208b018b612e45565b8960200151898961291a565b6020860151611a229082613205565b90508015611a3857611a3882843084898961291a565b61136f84612955565b611a5b8284611a5360208b018b612e45565b84898961291a565b611a6484612955565b61138182611a7560208a018a612e45565b8389602001516114669190613205565b6000808080611aac611a9c36899003890189613023565b6107a061077860208b018b612e45565b600081815260026020526040902080549195509060ff16611b12578515611b02576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b5060009250829150819050611ce1565b611b1f8582600089610f90565b611b33575060009250829150819050611ce1565b876101200135878260030154611b499190613183565b1180611b555750600187105b15611b95578515611b02576040517fc8910ec000000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b428861010001358260030154611bab9190613146565b8260010154611bba9190613183565b1015611bfb578515611b02576040517f2e775cae00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b86816003016000828254611c0f9190613183565b909155505060038101546101208901359003611c675780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000178155600281015460019250611c6290611ff9565b611cbb565b805460028201546003830154611cbb92640100000000900473ffffffffffffffffffffffffffffffffffffffff169190611ca7906101008d013590613146565b8460010154611cb69190613183565b61297e565b54640100000000900473ffffffffffffffffffffffffffffffffffffffff169250600191505b93509350935093565b60007f00000000000000000000000000000000000000000000000000000000000000004614611dbb57610365604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000526000825160208403805182604103600060018211611e67576040880151606089015160001a96508215611e4557601b8160ff1c0196507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811660408a01525b8689528985526020600060808760015afa508385528589526040890152506000515b8914891515169550859050611fbe57604082526044860380516040880380517f1626ba7e0000000000000000000000000000000000000000000000000000000084528a82526020600060648901868f5afa98508815611fb4577f1626ba7e0000000000000000000000000000000000000000000000000000000060005114611fb4578b3b15611f1a577f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6001876041031115611f50577f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b640101000000881a611f8a577f1f003d0a000000000000000000000000000000000000000000000000000000006000528760045260246000fd5b7f815e1d640000000000000000000000000000000000000000000000000000000060005260046000fd5b8486529190925290525b505050508061114957611fcf612a32565b7f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561208157600080fd5b505af1158015612095573d6000803e3d6000fd5b5050505050565b604080517f000000000000000000000000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000017600090815260208690527f000000000000000000000000000000000000000000000000000000000000000083526055600b209190925273ffffffffffffffffffffffffffffffffffffffff169050600080600080526020600085876000875af191506000519050816121965761214c612a32565b6040517fd13d53d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610a8b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f4ce34aa20000000000000000000000000000000000000000000000000000000014612230576040517f1cf99b260000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff84166024820152604401610a8b565b505050505050565b833b61226c577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af180612338573d156122f9576020601f3d01046020830481600302818311156122e057818303600302610200838002858002030401015b5a6020820110156122f5573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61237b577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af18061245d573d1561241f576020601f3d010460208604816003028183111561240657818303600302610200838002858002030401015b5a60208201101561241b573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b61248281612a7a565b600080600080600085875af19050806114225761249d612a32565b6040517f470c7c1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610a8b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528260045281602452602060006044600080885af1803d15601f3d116001600051141617163d151581166126475780863b151516612647578061261957816125df573d156125a0576020601f3d010460208404816003028183111561258757818303600302610200838002858002030401015b5a60208201101561259c573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452306024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528560045230602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528560045260246000fd5b50506040525050600060605250565b6000428411806126665750428311155b156126ab5781156126a3576040517f6f7eac2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006102c1565b5060019392505050565b6040517fc6c3bbe600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063c6c3bbe6906064016020604051808303816000875af1158015612755573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612779919061321c565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663e030565e82886127c34288613183565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff909116602483015267ffffffffffffffff166044820152606401600060405180830381600087803b15801561284057600080fd5b505af1158015612854573d6000803e3d6000fd5b509298975050505050505050565b600061286f836020015190565b90508181146114225761142283612955565b600060208851036128d55750604080885260208089018a90527f4ce34aa2000000000000000000000000000000000000000000000000000000009189019190915260448801526001606488018190526128e4565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61292383612a7a565b61292d8183612862565b816129435761293e86868686612ab7565b612230565b6122308282600189898960008a612881565b60408151146129615750565b600061296e826020015190565b905061297a8183612c24565b5050565b6040517fe030565e0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff848116602483015267ffffffffffffffff831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e030565e90606401600060405180830381600087803b158015612a1e57600080fd5b505af1158015611381573d6000803e3d6000fd5b3d15610f8e576020601f3d01046020604051048160030281831115612a6557818303600302610200838002858002030401015b5a602082011015611422573d6000803e3d6000fd5b80600003612ab4576040517f91b3e51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116612c145780873b151516612c145780612be65781612bac573d15612b6d576020601f3d0104602084048160030281831115612b5457818303600302610200838002858002030401015b5a602082011015612b69573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b6064810151604082019060c002604401612c3f84838361209c565b50506020905250565b60008060208385031215612c5b57600080fd5b823567ffffffffffffffff80821115612c7357600080fd5b818501915085601f830112612c8757600080fd5b813581811115612c9657600080fd5b8660208260051b8501011115612cab57600080fd5b60209290920196919550909350505050565b600060208284031215612ccf57600080fd5b5035919050565b60008060208385031215612ce957600080fd5b823567ffffffffffffffff80821115612d0157600080fd5b818501915085601f830112612d1557600080fd5b813581811115612d2457600080fd5b86602061024083028501011115612cab57600080fd5b60006102208284031215612d4d57600080fd5b50919050565b60006102208284031215612d6657600080fd5b6102c18383612d3a565b60006102408284031215612d4d57600080fd5b60006102408284031215612d9657600080fd5b6102c18383612d70565b60008060408385031215612db357600080fd5b823567ffffffffffffffff811115612dca57600080fd5b612dd685828601612d70565b95602094909401359450505050565b60008060006102608486031215612dfb57600080fd5b612e058585612d3a565b956102208501359550610240909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612e4057600080fd5b919050565b600060208284031215612e5757600080fd5b6102c182612e1c565b606081526000845180606084015260005b81811015612e8e5760208188018101516080868401015201612e71565b81811115612ea0576000608083860101525b5060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1833603018112612f5c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9b57600080fd5b83018035915067ffffffffffffffff821115612fb657600080fd5b602001915036819003821315612fcb57600080fd5b9250929050565b604051610220810167ffffffffffffffff8111828210171561301d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610220828403121561303657600080fd5b61303e612fd2565b61304783612e1c565b815261305560208401612e1c565b60208201526040830135604082015261307060608401612e1c565b606082015261308160808401612e1c565b608082015261309260a08401612e1c565b60a082015260c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561317e5761317e613117565b500290565b6000821982111561319657613196613117565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082613200577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561321757613217613117565b500390565b60006020828403121561322e57600080fd5b505191905056fea2646970667358221220a476a54f238545b2404a5fe5fd05406cd6cbb28a082caee5652ac3577eea345564736f6c634300080e0033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3808 CODESIZE SUB DUP1 PUSH3 0x3808 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 0x326B PUSH3 0x59D PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x26E ADD MSTORE DUP2 DUP2 PUSH2 0x2028 ADD MSTORE DUP2 DUP2 PUSH2 0x270C ADD MSTORE DUP2 DUP2 PUSH2 0x2792 ADD MSTORE PUSH2 0x29DA ADD MSTORE PUSH1 0x0 PUSH2 0x20E4 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0xEF8 ADD MSTORE PUSH2 0x20A2 ADD MSTORE PUSH1 0x0 PUSH2 0x1DBE ADD MSTORE PUSH1 0x0 PUSH2 0x1CEE ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x51D ADD MSTORE PUSH2 0x7C7 ADD MSTORE PUSH1 0x0 PUSH2 0x1D1C ADD MSTORE PUSH1 0x0 PUSH2 0x1D6A ADD MSTORE PUSH1 0x0 PUSH2 0x1D42 ADD MSTORE PUSH2 0x326B 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 0x2C48 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 0x2CBD 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 0x2CD6 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 0x2D53 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 0x2D83 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DA0 JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DE5 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 0x2E45 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 0x2E60 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E45 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x460 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E45 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 0xDAF 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 0xED7 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 PUSH2 0xF52 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 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5F8 SWAP2 SWAP1 PUSH2 0x2F28 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x608 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E45 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 0x2E45 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 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 0x2E45 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 0xF90 JUMP JUMPDEST POP DUP7 SLOAD PUSH1 0xFF AND PUSH2 0x8F2 JUMPI PUSH2 0x876 DUP6 DUP8 PUSH2 0x83C PUSH2 0x220 DUP7 ADD DUP7 PUSH2 0x2F66 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 0x10D2 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 0xF52 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 0xF52 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 0x2EF9 JUMP JUMPDEST PUSH2 0x240 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x9AB SWAP1 POP PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E45 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 0x2E45 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 0x114F 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 0x2E45 JUMP JUMPDEST ADDRESS PUSH2 0xB71 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB91 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBBB JUMPI PUSH2 0xBB6 DUP6 DUP4 PUSH2 0x138A JUMP JUMPDEST PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x1427 JUMP JUMPDEST PUSH2 0xBD2 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 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 0x14DF 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 0x1656 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC78 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCD7 JUMPI PUSH2 0xCC8 PUSH1 0x2 PUSH2 0xCA8 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0xCB5 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD PUSH2 0x129B JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP3 PUSH2 0x1845 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 0x2E45 JUMP JUMPDEST PUSH2 0xD18 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD DUP8 PUSH2 0x18FE JUMP JUMPDEST PUSH2 0xD38 DUP4 DUP4 DUP11 DUP5 PUSH2 0x1964 JUMP JUMPDEST POP JUMPDEST PUSH2 0xD47 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0xE8B2CFA73A11BD60479D92890AEB77BC5F502014EC530C3F0C1774D51680F0A6 SWAP1 PUSH1 0x60 ADD 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 0xDC3 DUP9 DUP8 PUSH1 0x1 PUSH2 0x1A85 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDE0 JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xDF0 DUP9 DUP8 PUSH1 0x0 DUP6 PUSH2 0x1656 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE04 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE2E JUMPI PUSH2 0xE29 DUP9 DUP3 PUSH2 0x1845 JUMP JUMPDEST PUSH2 0xE5D 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 0xE5B DUP10 DUP4 DUP11 DUP5 PUSH2 0x1964 JUMP JUMPDEST POP JUMPDEST DUP2 ISZERO PUSH2 0xE88 JUMPI PUSH2 0xE88 PUSH1 0x2 PUSH2 0xE78 PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x129B 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 0xEE4 PUSH2 0x1CEA 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 0xF8E 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 0xFE5 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x1030 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x1080 JUMPI PUSH1 0x3 DUP5 ADD SLOAD ISZERO PUSH2 0x107B JUMPI DUP2 ISZERO PUSH2 0xFDD JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST DUP4 PUSH1 0x3 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x10C7 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x10F4 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113C PUSH2 0x1101 PUSH2 0x1CEA 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 0x1149 DUP5 DUP3 DUP5 PUSH2 0x1DE0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1175 PUSH2 0x1165 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2E45 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 0x11D5 JUMPI DUP5 ISZERO PUSH2 0x11CB 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 0x1294 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD SWAP3 POP PUSH2 0x11E9 DUP5 DUP3 PUSH1 0x0 DUP9 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x11F7 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x1294 JUMP JUMPDEST TIMESTAMP PUSH2 0x1207 PUSH2 0x100 DUP9 ADD CALLDATALOAD DUP6 PUSH2 0x3146 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1216 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST GT ISZERO PUSH2 0x1257 JUMPI DUP5 ISZERO PUSH2 0x11CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x31EA4CB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x1264 DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x1FF9 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 0x1310 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 0x130A DUP3 DUP3 PUSH2 0x104 PUSH2 0x209C JUMP JUMPDEST POP PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1324 JUMPI PUSH2 0x1324 PUSH2 0x319B JUMP JUMPDEST SUB PUSH2 0x1374 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136F DUP7 DUP7 DUP7 DUP7 PUSH2 0x2238 JUMP JUMPDEST PUSH2 0x1381 JUMP JUMPDEST PUSH2 0x1381 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2347 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13BE PUSH2 0x139A PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E45 JUMP JUMPDEST DUP3 PUSH2 0x13AF PUSH2 0x120 DUP7 ADD CALLDATALOAD PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x13B9 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x13D5 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x13DF SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x13F3 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x13FD SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1407 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP PUSH2 0x1422 PUSH2 0x141C PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP3 PUSH2 0x2479 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x146B PUSH2 0x143A PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0x1447 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH2 0x145C PUSH2 0x120 DUP8 ADD CALLDATALOAD PUSH2 0x180 DUP9 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x24EE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1482 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x148C SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x14A0 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x14AA SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x14B4 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP PUSH2 0x1422 PUSH2 0x14C9 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0x14D9 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH2 0x24EE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 PUSH2 0x14F7 PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD CALLDATALOAD DUP8 PUSH2 0x2656 JUMP JUMPDEST PUSH2 0x150B JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1294 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH2 0x120 ADD CALLDATALOAD LT ISZERO PUSH2 0x1561 JUMPI DUP5 ISZERO PUSH2 0x1551 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 0x1294 JUMP JUMPDEST PUSH2 0x1583 PUSH2 0x1573 CALLDATASIZE DUP4 SWAP1 SUB DUP4 ADD DUP4 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x15A1 DUP6 DUP3 PUSH1 0x1 DUP10 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x15B4 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP PUSH2 0x1294 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x15DC JUMPI PUSH2 0x15DC PUSH2 0x15CD PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E45 JUMP JUMPDEST DUP7 PUSH2 0x83C PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x2F66 JUMP JUMPDEST PUSH2 0x1600 CALLER PUSH2 0x15F0 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP6 PUSH2 0x100 ADD CALLDATALOAD PUSH2 0x26B5 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 0x1681 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 0x1693 DUP7 PUSH2 0x120 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x1C0 DUP9 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP DUP4 ISZERO PUSH2 0x177F JUMPI PUSH2 0x16BA PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x16C4 SWAP1 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x16D3 SWAP1 PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST SWAP2 POP PUSH2 0x16E9 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x16F3 SWAP1 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x1702 SWAP1 PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP3 SWAP1 DUP3 PUSH2 0x2710 PUSH2 0x160 DUP12 ADD CALLDATALOAD PUSH2 0x1729 PUSH2 0x120 DUP14 ADD CALLDATALOAD PUSH2 0x140 DUP15 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1733 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x173D SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1747 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x1756 SWAP1 PUSH2 0x140 DUP12 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x1760 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x176A SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x183B JUMP JUMPDEST PUSH2 0x1793 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x179D SWAP1 DUP8 PUSH2 0x3146 JUMP JUMPDEST SWAP2 POP PUSH2 0x17B3 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x17BD SWAP1 DUP8 PUSH2 0x3146 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP4 SWAP2 PUSH2 0x2710 SWAP1 PUSH2 0x17DB SWAP1 PUSH2 0x160 DUP13 ADD CALLDATALOAD SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x17E5 SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x17EF SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x17F9 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE DUP5 ISZERO PUSH2 0x183B JUMPI DUP7 PUSH2 0x1A0 ADD CALLDATALOAD DUP4 PUSH1 0x0 ADD DUP2 DUP2 MLOAD PUSH2 0x181B SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH2 0x1A0 DUP10 ADD CALLDATALOAD SWAP2 SWAP1 PUSH2 0x1837 SWAP1 DUP4 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD CALLVALUE SWAP1 DUP2 LT ISZERO PUSH2 0x1882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A783B8D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x189C PUSH2 0x1892 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST PUSH2 0x18B9 PUSH2 0x18AF PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD ISZERO PUSH2 0x18E0 JUMPI PUSH2 0x18E0 PUSH2 0x18D6 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x18EC SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1422 JUMPI PUSH2 0x1422 CALLER DUP3 PUSH2 0x2479 JUMP JUMPDEST PUSH2 0x1908 DUP2 DUP4 PUSH2 0x2862 JUMP JUMPDEST DUP2 PUSH2 0x1953 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x1947 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136F DUP8 DUP8 DUP8 DUP8 PUSH2 0x2238 JUMP JUMPDEST PUSH2 0x1381 DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2881 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1977 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E45 JUMP JUMPDEST SWAP1 POP PUSH2 0x199A DUP2 DUP4 PUSH2 0x198E PUSH1 0xC0 DUP11 ADD PUSH1 0xA0 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP9 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD ISZERO PUSH2 0x19C5 JUMPI PUSH2 0x19C5 DUP2 DUP4 PUSH2 0x19B9 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD DUP9 DUP9 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x19DE SWAP2 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x19E8 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x20 ADD MLOAD DUP2 LT PUSH2 0x1A41 JUMPI PUSH2 0x1A13 DUP3 DUP5 PUSH2 0x1A07 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD MLOAD DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x1A22 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A38 JUMPI PUSH2 0x1A38 DUP3 DUP5 ADDRESS DUP5 DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH2 0x136F DUP5 PUSH2 0x2955 JUMP JUMPDEST PUSH2 0x1A5B DUP3 DUP5 PUSH2 0x1A53 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 JUMP JUMPDEST DUP5 DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH2 0x1A64 DUP5 PUSH2 0x2955 JUMP JUMPDEST PUSH2 0x1381 DUP3 PUSH2 0x1A75 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E45 JUMP JUMPDEST DUP4 DUP10 PUSH1 0x20 ADD MLOAD PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AAC PUSH2 0x1A9C CALLDATASIZE DUP10 SWAP1 SUB DUP10 ADD DUP10 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 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 0x1B12 JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1CE1 JUMP JUMPDEST PUSH2 0x1B1F DUP6 DUP3 PUSH1 0x0 DUP10 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x1B33 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CE1 JUMP JUMPDEST DUP8 PUSH2 0x120 ADD CALLDATALOAD DUP8 DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1B49 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST GT DUP1 PUSH2 0x1B55 JUMPI POP PUSH1 0x1 DUP8 LT JUMPDEST ISZERO PUSH2 0x1B95 JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1BAB SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1BBA SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST LT ISZERO PUSH2 0x1BFB JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1C0F SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 SUB PUSH2 0x1C67 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF AND PUSH3 0x10000 OR DUP2 SSTORE PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 SWAP3 POP PUSH2 0x1C62 SWAP1 PUSH2 0x1FF9 JUMP JUMPDEST PUSH2 0x1CBB JUMP JUMPDEST DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH2 0x1CBB SWAP3 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x1CA7 SWAP1 PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP1 PUSH2 0x3146 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1CB6 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x297E 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 0x1DBB 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 0x1E67 JUMPI PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x0 BYTE SWAP7 POP DUP3 ISZERO PUSH2 0x1E45 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 0x1FBE 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 0x1FB4 JUMPI PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MLOAD EQ PUSH2 0x1FB4 JUMPI DUP12 EXTCODESIZE ISZERO PUSH2 0x1F1A JUMPI PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP8 PUSH1 0x41 SUB GT ISZERO PUSH2 0x1F50 JUMPI PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH5 0x101000000 DUP9 BYTE PUSH2 0x1F8A 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 0x1149 JUMPI PUSH2 0x1FCF PUSH2 0x2A32 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 0x2081 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2095 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 0x2196 JUMPI PUSH2 0x214C PUSH2 0x2A32 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 0x2230 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 0x226C 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 0x2338 JUMPI RETURNDATASIZE ISZERO PUSH2 0x22F9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x22E0 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 0x22F5 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 0x237B 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 0x245D JUMPI RETURNDATASIZE ISZERO PUSH2 0x241F JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2406 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 0x241B 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 0x2482 DUP2 PUSH2 0x2A7A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x1422 JUMPI PUSH2 0x249D PUSH2 0x2A32 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 0x2647 JUMPI DUP1 DUP7 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2647 JUMPI DUP1 PUSH2 0x2619 JUMPI DUP2 PUSH2 0x25DF JUMPI RETURNDATASIZE ISZERO PUSH2 0x25A0 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2587 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 0x259C 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 0x2666 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x26AB JUMPI DUP2 ISZERO PUSH2 0x26A3 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 0x2755 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 0x2779 SWAP2 SWAP1 PUSH2 0x321C JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xE030565E DUP3 DUP9 PUSH2 0x27C3 TIMESTAMP DUP9 PUSH2 0x3183 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 0x2840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2854 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 0x286F DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1422 JUMPI PUSH2 0x1422 DUP4 PUSH2 0x2955 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x28D5 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 0x28E4 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 0x2923 DUP4 PUSH2 0x2A7A JUMP JUMPDEST PUSH2 0x292D DUP2 DUP4 PUSH2 0x2862 JUMP JUMPDEST DUP2 PUSH2 0x2943 JUMPI PUSH2 0x293E DUP7 DUP7 DUP7 DUP7 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2230 JUMP JUMPDEST PUSH2 0x2230 DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x2881 JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD EQ PUSH2 0x2961 JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296E DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x297A DUP2 DUP4 PUSH2 0x2C24 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 0x2A1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1381 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xF8E JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2A65 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 0x1422 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x2AB4 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 0x2C14 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2C14 JUMPI DUP1 PUSH2 0x2BE6 JUMPI DUP2 PUSH2 0x2BAC JUMPI RETURNDATASIZE ISZERO PUSH2 0x2B6D JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2B54 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 0x2B69 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 0x2C3F DUP5 DUP4 DUP4 PUSH2 0x209C JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CAB 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 0x2CCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2D01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH2 0x240 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2CAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DD6 DUP6 DUP3 DUP7 ADD PUSH2 0x2D70 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 0x2DFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E05 DUP6 DUP6 PUSH2 0x2D3A 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 0x2E40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP3 PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E8E JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x2E71 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2EA0 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 0x2F5C 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 0x2F9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2FB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2FCB 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 0x301D 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 0x3036 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303E PUSH2 0x2FD2 JUMP JUMPDEST PUSH2 0x3047 DUP4 PUSH2 0x2E1C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x3055 PUSH1 0x20 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3070 PUSH1 0x60 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3081 PUSH1 0x80 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3092 PUSH1 0xA0 DUP5 ADD PUSH2 0x2E1C 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 0x317E JUMPI PUSH2 0x317E PUSH2 0x3117 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3196 JUMPI PUSH2 0x3196 PUSH2 0x3117 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 0x3200 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 0x3217 JUMPI PUSH2 0x3217 PUSH2 0x3117 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 PUSH23 0xA54F238545B2404A5FE5FD05406CD6CBB28A082CAEE565 0x2A 0xC3 JUMPI PUSH31 0xEA345564736F6C634300080E00330000000000000000000000000000000000 ","sourceMap":"121:254:0:-:0;;;159:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;233:17;252:11;233:17;252:11;233:17;252:11;;233:17;;;;;786:19:12;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6408:25:30;;;;6449:18;;;6442:34;;;;-1:-1:-1;6492:18:30;;6485:34;;;;6535:18;;;6528:34;1371:4:12;6578:19:30;;;6571:61;1203:187:12;;;;;;;;;;6380:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;;2345:1:13;658:16:22;:31;-1:-1:-1;;;;;;;;417:20:23;;;-1:-1:-1;121:254:0;;-1:-1:-1;;;;;;;121:254:0;1527:1491:12;1616:16;;;;1794:13;353::0;;;;;;;;;;;;-1:-1:-1;;;353:13:0;;;;;273:100;1794:13:12;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4331:31:30;;-1:-1:-1;;;4387:2:30;4378:12;;4371:40;-1:-1:-1;;;4436:2:30;4427:12;;4420:38;4488:21;4483:2;4474:12;;4467:43;-1:-1:-1;;;4535:2:30;4526:12;;4519:41;-1:-1:-1;;;4585:2:30;4576:12;;4569:39;-1:-1:-1;;;4633:2:30;4624:12;;4617:41;-1:-1:-1;;;4683:3:30;4674:13;;4667:43;-1:-1:-1;;;4735:3:30;4726:13;;4719:41;-1:-1:-1;;;5115:3:30;5106:13;;809:32;-1:-1:-1;;;857:12:30;;;945:31;-1:-1:-1;;;992:12:30;;;1080:30;-1:-1:-1;;;1126:12:30;;;1214:29;-1:-1:-1;;;1259:12:30;;;1347:31;-1:-1:-1;;;1394:12:30;;;1482:27;1625:22;1525:12;;;1613:35;-1:-1:-1;;;1664:12:30;;;1752:28;1896:21;1796:12;;;1884:34;-1:-1:-1;;;1934:12:30;;;2022:30;-1:-1:-1;;;2068:12:30;;;2156:16;2188:11;;;2210:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5848:28:30;-1:-1:-1;;;5892:12:30;;;5885:36;-1:-1:-1;;;5937:12:30;;;5930:39;-1:-1:-1;;;5985:12:30;;;5978:40;6048:27;6034:12;;;6027:49;-1:-1:-1;;;6092:12:30;;;6085:25;1909:724:12;-1:-1:-1;6126:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:177:30:-;93:13;;-1:-1:-1;;;;;135:31:30;;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:30;;729:2;714:18;;;708:25;673:16;;708:25;;-1:-1:-1;494:245:30:o;6149:489::-;121:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_assertNonReentrant_4037":{"entryPoint":3922,"id":4037,"parameterSlots":0,"returnSlots":0},"@_assertNonZeroAmount_631":{"entryPoint":10874,"id":631,"parameterSlots":1,"returnSlots":0},"@_assertValidSignature_4189":{"entryPoint":7648,"id":4189,"parameterSlots":3,"returnSlots":0},"@_burnToken_4151":{"entryPoint":8185,"id":4151,"parameterSlots":1,"returnSlots":0},"@_calculateDispatch_2533":{"entryPoint":5718,"id":2533,"parameterSlots":4,"returnSlots":1},"@_callConduitUsingOffsets_2130":{"entryPoint":8348,"id":2130,"parameterSlots":3,"returnSlots":0},"@_cancel_3793":{"entryPoint":2407,"id":3793,"parameterSlots":2,"returnSlots":1},"@_deriveConduit_2240":{"entryPoint":null,"id":2240,"parameterSlots":1,"returnSlots":1},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveEIP712Digest_2299":{"entryPoint":null,"id":2299,"parameterSlots":2,"returnSlots":1},"@_deriveOrderHash_2220":{"entryPoint":null,"id":2220,"parameterSlots":2,"returnSlots":1},"@_domainSeparator_2256":{"entryPoint":7402,"id":2256,"parameterSlots":0,"returnSlots":1},"@_extendToken_4138":{"entryPoint":10622,"id":4138,"parameterSlots":3,"returnSlots":0},"@_getAccumulatorConduitKey_2140":{"entryPoint":null,"id":2140,"parameterSlots":1,"returnSlots":1},"@_getCounter_1710":{"entryPoint":null,"id":1710,"parameterSlots":1,"returnSlots":1},"@_getOrderStatus_3983":{"entryPoint":null,"id":3983,"parameterSlots":1,"returnSlots":8},"@_incrementCounter_1696":{"entryPoint":2314,"id":1696,"parameterSlots":0,"returnSlots":1},"@_information_2287":{"entryPoint":3799,"id":2287,"parameterSlots":0,"returnSlots":3},"@_insert_2185":{"entryPoint":10369,"id":2185,"parameterSlots":8,"returnSlots":0},"@_mintToken_4116":{"entryPoint":9909,"id":4116,"parameterSlots":4,"returnSlots":1},"@_performERC1155Transfer_4255":{"entryPoint":9031,"id":4255,"parameterSlots":5,"returnSlots":0},"@_performERC20Transfer_4214":{"entryPoint":10935,"id":4214,"parameterSlots":4,"returnSlots":0},"@_performERC721Transfer_4239":{"entryPoint":8760,"id":4239,"parameterSlots":4,"returnSlots":0},"@_performSelfERC20Transfer_4225":{"entryPoint":9454,"id":4225,"parameterSlots":3,"returnSlots":0},"@_revertWithReasonIfOneIsReturned_2322":{"entryPoint":10802,"id":2322,"parameterSlots":0,"returnSlots":0},"@_transferERC20AndFinalize_3156":{"entryPoint":6500,"id":3156,"parameterSlots":4,"returnSlots":0},"@_transferERC20Broken_2945":{"entryPoint":5159,"id":2945,"parameterSlots":2,"returnSlots":0},"@_transferERC20_1894":{"entryPoint":10522,"id":1894,"parameterSlots":6,"returnSlots":0},"@_transferERC721_1954":{"entryPoint":6398,"id":1954,"parameterSlots":7,"returnSlots":0},"@_transferEthAndFinalize_3025":{"entryPoint":6213,"id":3025,"parameterSlots":2,"returnSlots":0},"@_transferEthBroken_2893":{"entryPoint":5002,"id":2893,"parameterSlots":2,"returnSlots":0},"@_transferEth_1837":{"entryPoint":9337,"id":1837,"parameterSlots":2,"returnSlots":0},"@_transferIndividual721Or1155Item_1808":{"entryPoint":4763,"id":1808,"parameterSlots":7,"returnSlots":0},"@_triggerIfArmedAndNotAccumulatable_2035":{"entryPoint":10338,"id":2035,"parameterSlots":2,"returnSlots":0},"@_triggerIfArmed_2060":{"entryPoint":10581,"id":2060,"parameterSlots":1,"returnSlots":0},"@_trigger_2083":{"entryPoint":11300,"id":2083,"parameterSlots":2,"returnSlots":0},"@_validateAndBreakOrder_2839":{"entryPoint":2855,"id":2839,"parameterSlots":1,"returnSlots":1},"@_validateAndFulfillOrder_2652":{"entryPoint":3116,"id":2652,"parameterSlots":2,"returnSlots":1},"@_validateAndRepayOrder_2765":{"entryPoint":3503,"id":2765,"parameterSlots":3,"returnSlots":1},"@_validateOrderAndUpdateBreakStatus_3655":{"entryPoint":4431,"id":3655,"parameterSlots":2,"returnSlots":3},"@_validateOrderAndUpdateRepayStatus_3542":{"entryPoint":6789,"id":3542,"parameterSlots":3,"returnSlots":4},"@_validateOrderAndUpdateStatus_3356":{"entryPoint":5343,"id":3356,"parameterSlots":2,"returnSlots":3},"@_validate_3936":{"entryPoint":1466,"id":3936,"parameterSlots":2,"returnSlots":1},"@_verifyOrderStatus_4708":{"entryPoint":3984,"id":4708,"parameterSlots":4,"returnSlots":1},"@_verifySignature_4629":{"entryPoint":4306,"id":4629,"parameterSlots":3,"returnSlots":0},"@_verifyTime_4597":{"entryPoint":9814,"id":4597,"parameterSlots":3,"returnSlots":1},"@breakOrder_714":{"entryPoint":886,"id":714,"parameterSlots":1,"returnSlots":1},"@cancel_730":{"entryPoint":874,"id":730,"parameterSlots":2,"returnSlots":1},"@fulfillOrder_678":{"entryPoint":1366,"id":678,"parameterSlots":2,"returnSlots":1},"@getCounter_849":{"entryPoint":1399,"id":849,"parameterSlots":1,"returnSlots":1},"@getOrderHash_809":{"entryPoint":903,"id":809,"parameterSlots":1,"returnSlots":1},"@getOrderStatus_835":{"entryPoint":712,"id":835,"parameterSlots":1,"returnSlots":8},"@incrementCounter_757":{"entryPoint":859,"id":757,"parameterSlots":0,"returnSlots":1},"@information_862":{"entryPoint":1442,"id":862,"parameterSlots":0,"returnSlots":3},"@repayOrder_699":{"entryPoint":1378,"id":699,"parameterSlots":3,"returnSlots":1},"@shadowToken_4061":{"entryPoint":null,"id":4061,"parameterSlots":0,"returnSlots":0},"@validate_746":{"entryPoint":693,"id":746,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":11804,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_OrderComponents_calldata":{"entryPoint":11632,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_OrderParameters_calldata":{"entryPoint":11578,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":11845,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":11478,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":11336,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":11453,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderComponents_$1600_calldata_ptr":{"entryPoint":11651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderParameters_$1635_calldata_ptr":{"entryPoint":11603,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderParameters_$1635_calldata_ptrt_bytes32t_uint256":{"entryPoint":11749,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_struct$_OrderParameters_$1635_memory_ptr":{"entryPoint":12323,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Order_$1641_calldata_ptrt_bytes32":{"entryPoint":11680,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":12828,"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_address_t_uint256__to_t_bytes32_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"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_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":11872,"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":12134,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_t_struct$_Order_$1641_calldata_ptr":{"entryPoint":12072,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":12242,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":12675,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":12746,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":12614,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":12805,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":12567,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":12699,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":12025,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:13279:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"144:510:30","statements":[{"body":{"nodeType":"YulBlock","src":"190:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"199:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"202:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"192:6:30"},"nodeType":"YulFunctionCall","src":"192:12:30"},"nodeType":"YulExpressionStatement","src":"192:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"165:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"174:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"161:3:30"},"nodeType":"YulFunctionCall","src":"161:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"186:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"157:3:30"},"nodeType":"YulFunctionCall","src":"157:32:30"},"nodeType":"YulIf","src":"154:52:30"},{"nodeType":"YulVariableDeclaration","src":"215:37:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"242:9:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"229:12:30"},"nodeType":"YulFunctionCall","src":"229:23:30"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"219:6:30","type":""}]},{"nodeType":"YulVariableDeclaration","src":"261:28:30","value":{"kind":"number","nodeType":"YulLiteral","src":"271:18:30","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"265:2:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"316:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"325:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"328:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"318:6:30"},"nodeType":"YulFunctionCall","src":"318:12:30"},"nodeType":"YulExpressionStatement","src":"318:12:30"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"304:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"312:2:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"301:2:30"},"nodeType":"YulFunctionCall","src":"301:14:30"},"nodeType":"YulIf","src":"298:34:30"},{"nodeType":"YulVariableDeclaration","src":"341:32:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"355:9:30"},{"name":"offset","nodeType":"YulIdentifier","src":"366:6:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"351:3:30"},"nodeType":"YulFunctionCall","src":"351:22:30"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"345:2:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"421:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"430:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"433:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"423:6:30"},"nodeType":"YulFunctionCall","src":"423:12:30"},"nodeType":"YulExpressionStatement","src":"423:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"400:2:30"},{"kind":"number","nodeType":"YulLiteral","src":"404:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"396:3:30"},"nodeType":"YulFunctionCall","src":"396:13:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"411:7:30"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"392:3:30"},"nodeType":"YulFunctionCall","src":"392:27:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"385:6:30"},"nodeType":"YulFunctionCall","src":"385:35:30"},"nodeType":"YulIf","src":"382:55:30"},{"nodeType":"YulVariableDeclaration","src":"446:30:30","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"473:2:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"460:12:30"},"nodeType":"YulFunctionCall","src":"460:16:30"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"450:6:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"503:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"512:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"515:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"505:6:30"},"nodeType":"YulFunctionCall","src":"505:12:30"},"nodeType":"YulExpressionStatement","src":"505:12:30"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"491:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"499:2:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"488:2:30"},"nodeType":"YulFunctionCall","src":"488:14:30"},"nodeType":"YulIf","src":"485:34:30"},{"body":{"nodeType":"YulBlock","src":"577:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"586:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"589:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"579:6:30"},"nodeType":"YulFunctionCall","src":"579:12:30"},"nodeType":"YulExpressionStatement","src":"579:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"542:2:30"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"550:1:30","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"553:6:30"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"546:3:30"},"nodeType":"YulFunctionCall","src":"546:14:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"538:3:30"},"nodeType":"YulFunctionCall","src":"538:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"563:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"534:3:30"},"nodeType":"YulFunctionCall","src":"534:32:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"568:7:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"531:2:30"},"nodeType":"YulFunctionCall","src":"531:45:30"},"nodeType":"YulIf","src":"528:65:30"},{"nodeType":"YulAssignment","src":"602:21:30","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"616:2:30"},{"kind":"number","nodeType":"YulLiteral","src":"620:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"612:3:30"},"nodeType":"YulFunctionCall","src":"612:11:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"602:6:30"}]},{"nodeType":"YulAssignment","src":"632:16:30","value":{"name":"length","nodeType":"YulIdentifier","src":"642:6:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"632:6:30"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"102:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"113:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"125:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"133:6:30","type":""}],"src":"14:640:30"},{"body":{"nodeType":"YulBlock","src":"754:92:30","statements":[{"nodeType":"YulAssignment","src":"764:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"776:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"787:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"772:3:30"},"nodeType":"YulFunctionCall","src":"772:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"764:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"806:9:30"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"831:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"824:6:30"},"nodeType":"YulFunctionCall","src":"824:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"817:6:30"},"nodeType":"YulFunctionCall","src":"817:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"799:6:30"},"nodeType":"YulFunctionCall","src":"799:41:30"},"nodeType":"YulExpressionStatement","src":"799:41:30"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"723:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"734:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"745:4:30","type":""}],"src":"659:187:30"},{"body":{"nodeType":"YulBlock","src":"921:110:30","statements":[{"body":{"nodeType":"YulBlock","src":"967:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"976:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"979:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"969:6:30"},"nodeType":"YulFunctionCall","src":"969:12:30"},"nodeType":"YulExpressionStatement","src":"969:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"942:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"951:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"938:3:30"},"nodeType":"YulFunctionCall","src":"938:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"963:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"934:3:30"},"nodeType":"YulFunctionCall","src":"934:32:30"},"nodeType":"YulIf","src":"931:52:30"},{"nodeType":"YulAssignment","src":"992:33:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1015:9:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1002:12:30"},"nodeType":"YulFunctionCall","src":"1002:23:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"992:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"887:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"898:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"910:6:30","type":""}],"src":"851:180:30"},{"body":{"nodeType":"YulBlock","src":"1309:495:30","statements":[{"nodeType":"YulAssignment","src":"1319:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1331:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1342:3:30","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1327:3:30"},"nodeType":"YulFunctionCall","src":"1327:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1319:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1362:9:30"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1387:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1380:6:30"},"nodeType":"YulFunctionCall","src":"1380:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1373:6:30"},"nodeType":"YulFunctionCall","src":"1373:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1355:6:30"},"nodeType":"YulFunctionCall","src":"1355:41:30"},"nodeType":"YulExpressionStatement","src":"1355:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:30"},"nodeType":"YulFunctionCall","src":"1412:18:30"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1446:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1439:6:30"},"nodeType":"YulFunctionCall","src":"1439:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1432:6:30"},"nodeType":"YulFunctionCall","src":"1432:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1405:6:30"},"nodeType":"YulFunctionCall","src":"1405:50:30"},"nodeType":"YulExpressionStatement","src":"1405:50:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1475:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1486:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1471:3:30"},"nodeType":"YulFunctionCall","src":"1471:18:30"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1505:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1498:6:30"},"nodeType":"YulFunctionCall","src":"1498:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1491:6:30"},"nodeType":"YulFunctionCall","src":"1491:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1464:6:30"},"nodeType":"YulFunctionCall","src":"1464:50:30"},"nodeType":"YulExpressionStatement","src":"1464:50:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1534:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1530:3:30"},"nodeType":"YulFunctionCall","src":"1530:18:30"},{"arguments":[{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"1564:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1557:6:30"},"nodeType":"YulFunctionCall","src":"1557:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1550:6:30"},"nodeType":"YulFunctionCall","src":"1550:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1523:6:30"},"nodeType":"YulFunctionCall","src":"1523:50:30"},"nodeType":"YulExpressionStatement","src":"1523:50:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1593:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1604:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1589:3:30"},"nodeType":"YulFunctionCall","src":"1589:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1614:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"1622:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1610:3:30"},"nodeType":"YulFunctionCall","src":"1610:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1582:6:30"},"nodeType":"YulFunctionCall","src":"1582:84:30"},"nodeType":"YulExpressionStatement","src":"1582:84:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1697:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1682:3:30"},"nodeType":"YulFunctionCall","src":"1682:19:30"},{"name":"value5","nodeType":"YulIdentifier","src":"1703:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1675:6:30"},"nodeType":"YulFunctionCall","src":"1675:35:30"},"nodeType":"YulExpressionStatement","src":"1675:35:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1730:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1741:3:30","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1726:3:30"},"nodeType":"YulFunctionCall","src":"1726:19:30"},{"name":"value6","nodeType":"YulIdentifier","src":"1747:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1719:6:30"},"nodeType":"YulFunctionCall","src":"1719:35:30"},"nodeType":"YulExpressionStatement","src":"1719:35:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1774:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1785:3:30","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1770:3:30"},"nodeType":"YulFunctionCall","src":"1770:19:30"},{"name":"value7","nodeType":"YulIdentifier","src":"1791:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1763:6:30"},"nodeType":"YulFunctionCall","src":"1763:35:30"},"nodeType":"YulExpressionStatement","src":"1763:35:30"}]},"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:30","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1233:6:30","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1241:6:30","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1249:6:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1257:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1265:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1273:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1281:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1289:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1300:4:30","type":""}],"src":"1036:768:30"},{"body":{"nodeType":"YulBlock","src":"1910:76:30","statements":[{"nodeType":"YulAssignment","src":"1920:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1928:3:30"},"nodeType":"YulFunctionCall","src":"1928:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1920:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1962:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"1973:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1955:6:30"},"nodeType":"YulFunctionCall","src":"1955:25:30"},"nodeType":"YulExpressionStatement","src":"1955:25:30"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1879:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1890:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1901:4:30","type":""}],"src":"1809:177:30"},{"body":{"nodeType":"YulBlock","src":"2131:515:30","statements":[{"body":{"nodeType":"YulBlock","src":"2177:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2186:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2189:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2179:6:30"},"nodeType":"YulFunctionCall","src":"2179:12:30"},"nodeType":"YulExpressionStatement","src":"2179:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2152:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"2161:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2148:3:30"},"nodeType":"YulFunctionCall","src":"2148:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"2173:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2144:3:30"},"nodeType":"YulFunctionCall","src":"2144:32:30"},"nodeType":"YulIf","src":"2141:52:30"},{"nodeType":"YulVariableDeclaration","src":"2202:37:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2229:9:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2216:12:30"},"nodeType":"YulFunctionCall","src":"2216:23:30"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2206:6:30","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2248:28:30","value":{"kind":"number","nodeType":"YulLiteral","src":"2258:18:30","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2252:2:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"2303:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2312:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2315:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2305:6:30"},"nodeType":"YulFunctionCall","src":"2305:12:30"},"nodeType":"YulExpressionStatement","src":"2305:12:30"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2291:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"2299:2:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2288:2:30"},"nodeType":"YulFunctionCall","src":"2288:14:30"},"nodeType":"YulIf","src":"2285:34:30"},{"nodeType":"YulVariableDeclaration","src":"2328:32:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2342:9:30"},{"name":"offset","nodeType":"YulIdentifier","src":"2353:6:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2338:3:30"},"nodeType":"YulFunctionCall","src":"2338:22:30"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2332:2:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"2408:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2417:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2420:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2410:6:30"},"nodeType":"YulFunctionCall","src":"2410:12:30"},"nodeType":"YulExpressionStatement","src":"2410:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2387:2:30"},{"kind":"number","nodeType":"YulLiteral","src":"2391:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:30"},"nodeType":"YulFunctionCall","src":"2383:13:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2398:7:30"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2379:3:30"},"nodeType":"YulFunctionCall","src":"2379:27:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2372:6:30"},"nodeType":"YulFunctionCall","src":"2372:35:30"},"nodeType":"YulIf","src":"2369:55:30"},{"nodeType":"YulVariableDeclaration","src":"2433:30:30","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2460:2:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2447:12:30"},"nodeType":"YulFunctionCall","src":"2447:16:30"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2437:6:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"2490:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2499:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2502:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2492:6:30"},"nodeType":"YulFunctionCall","src":"2492:12:30"},"nodeType":"YulExpressionStatement","src":"2492:12:30"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2478:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"2486:2:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2475:2:30"},"nodeType":"YulFunctionCall","src":"2475:14:30"},"nodeType":"YulIf","src":"2472:34:30"},{"body":{"nodeType":"YulBlock","src":"2569:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2578:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2581:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2571:6:30"},"nodeType":"YulFunctionCall","src":"2571:12:30"},"nodeType":"YulExpressionStatement","src":"2571:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2529:2:30"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2537:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"2545:6:30","type":"","value":"0x0240"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2533:3:30"},"nodeType":"YulFunctionCall","src":"2533:19:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2525:3:30"},"nodeType":"YulFunctionCall","src":"2525:28:30"},{"kind":"number","nodeType":"YulLiteral","src":"2555:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2521:3:30"},"nodeType":"YulFunctionCall","src":"2521:37:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2560:7:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2518:2:30"},"nodeType":"YulFunctionCall","src":"2518:50:30"},"nodeType":"YulIf","src":"2515:70:30"},{"nodeType":"YulAssignment","src":"2594:21:30","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:30"},{"kind":"number","nodeType":"YulLiteral","src":"2612:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:30"},"nodeType":"YulFunctionCall","src":"2604:11:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2594:6:30"}]},{"nodeType":"YulAssignment","src":"2624:16:30","value":{"name":"length","nodeType":"YulIdentifier","src":"2634:6:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2624:6:30"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2089:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2100:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2112:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2120:6:30","type":""}],"src":"1991:655:30"},{"body":{"nodeType":"YulBlock","src":"2729:86:30","statements":[{"body":{"nodeType":"YulBlock","src":"2769:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2778:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2781:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2771:6:30"},"nodeType":"YulFunctionCall","src":"2771:12:30"},"nodeType":"YulExpressionStatement","src":"2771:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2750:3:30"},{"name":"offset","nodeType":"YulIdentifier","src":"2755:6:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2746:3:30"},"nodeType":"YulFunctionCall","src":"2746:16:30"},{"kind":"number","nodeType":"YulLiteral","src":"2764:3:30","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2742:3:30"},"nodeType":"YulFunctionCall","src":"2742:26:30"},"nodeType":"YulIf","src":"2739:46:30"},{"nodeType":"YulAssignment","src":"2794:15:30","value":{"name":"offset","nodeType":"YulIdentifier","src":"2803:6:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2794:5:30"}]}]},"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2703:6:30","type":""},{"name":"end","nodeType":"YulTypedName","src":"2711:3:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2719:5:30","type":""}],"src":"2651:164:30"},{"body":{"nodeType":"YulBlock","src":"2925:150:30","statements":[{"body":{"nodeType":"YulBlock","src":"2972:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2981:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2984:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2974:6:30"},"nodeType":"YulFunctionCall","src":"2974:12:30"},"nodeType":"YulExpressionStatement","src":"2974:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2946:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2942:3:30"},"nodeType":"YulFunctionCall","src":"2942:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"2967:3:30","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2938:3:30"},"nodeType":"YulFunctionCall","src":"2938:33:30"},"nodeType":"YulIf","src":"2935:53:30"},{"nodeType":"YulAssignment","src":"2997:72:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3050:9:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3061:7:30"}],"functionName":{"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulIdentifier","src":"3007:42:30"},"nodeType":"YulFunctionCall","src":"3007:62:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2997:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$1635_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2891:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2902:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2914:6:30","type":""}],"src":"2820:255:30"},{"body":{"nodeType":"YulBlock","src":"3158:86:30","statements":[{"body":{"nodeType":"YulBlock","src":"3198:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3207:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3210:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3200:6:30"},"nodeType":"YulFunctionCall","src":"3200:12:30"},"nodeType":"YulExpressionStatement","src":"3200:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"3179:3:30"},{"name":"offset","nodeType":"YulIdentifier","src":"3184:6:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3175:3:30"},"nodeType":"YulFunctionCall","src":"3175:16:30"},{"kind":"number","nodeType":"YulLiteral","src":"3193:3:30","type":"","value":"576"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3171:3:30"},"nodeType":"YulFunctionCall","src":"3171:26:30"},"nodeType":"YulIf","src":"3168:46:30"},{"nodeType":"YulAssignment","src":"3223:15:30","value":{"name":"offset","nodeType":"YulIdentifier","src":"3232:6:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3223:5:30"}]}]},"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3132:6:30","type":""},{"name":"end","nodeType":"YulTypedName","src":"3140:3:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3148:5:30","type":""}],"src":"3080:164:30"},{"body":{"nodeType":"YulBlock","src":"3354:150:30","statements":[{"body":{"nodeType":"YulBlock","src":"3401:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3410:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3413:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3403:6:30"},"nodeType":"YulFunctionCall","src":"3403:12:30"},"nodeType":"YulExpressionStatement","src":"3403:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3375:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"3384:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3371:3:30"},"nodeType":"YulFunctionCall","src":"3371:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"3396:3:30","type":"","value":"576"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3367:3:30"},"nodeType":"YulFunctionCall","src":"3367:33:30"},"nodeType":"YulIf","src":"3364:53:30"},{"nodeType":"YulAssignment","src":"3426:72:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3479:9:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3490:7:30"}],"functionName":{"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulIdentifier","src":"3436:42:30"},"nodeType":"YulFunctionCall","src":"3436:62:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3426:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_OrderComponents_$1600_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3320:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3331:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3343:6:30","type":""}],"src":"3249:255:30"},{"body":{"nodeType":"YulBlock","src":"3610:76:30","statements":[{"nodeType":"YulAssignment","src":"3620:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3632:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"3643:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3628:3:30"},"nodeType":"YulFunctionCall","src":"3628:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3620:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3662:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"3673:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3655:6:30"},"nodeType":"YulFunctionCall","src":"3655:25:30"},"nodeType":"YulExpressionStatement","src":"3655:25:30"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3579:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3590:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3601:4:30","type":""}],"src":"3509:177:30"},{"body":{"nodeType":"YulBlock","src":"3803:318:30","statements":[{"body":{"nodeType":"YulBlock","src":"3849:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3858:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3861:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3851:6:30"},"nodeType":"YulFunctionCall","src":"3851:12:30"},"nodeType":"YulExpressionStatement","src":"3851:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3824:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"3833:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3820:3:30"},"nodeType":"YulFunctionCall","src":"3820:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"3845:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3816:3:30"},"nodeType":"YulFunctionCall","src":"3816:32:30"},"nodeType":"YulIf","src":"3813:52:30"},{"nodeType":"YulVariableDeclaration","src":"3874:37:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3901:9:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3888:12:30"},"nodeType":"YulFunctionCall","src":"3888:23:30"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3878:6:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"3954:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3963:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3966:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3956:6:30"},"nodeType":"YulFunctionCall","src":"3956:12:30"},"nodeType":"YulExpressionStatement","src":"3956:12:30"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3926:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"3934:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3923:2:30"},"nodeType":"YulFunctionCall","src":"3923:30:30"},"nodeType":"YulIf","src":"3920:50:30"},{"nodeType":"YulAssignment","src":"3979:85:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4036:9:30"},{"name":"offset","nodeType":"YulIdentifier","src":"4047:6:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4032:3:30"},"nodeType":"YulFunctionCall","src":"4032:22:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4056:7:30"}],"functionName":{"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulIdentifier","src":"3989:42:30"},"nodeType":"YulFunctionCall","src":"3989:75:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3979:6:30"}]},{"nodeType":"YulAssignment","src":"4073:42:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4100:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"4111:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4096:3:30"},"nodeType":"YulFunctionCall","src":"4096:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4083:12:30"},"nodeType":"YulFunctionCall","src":"4083:32:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4073:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_Order_$1641_calldata_ptrt_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3761:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3772:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3784:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3792:6:30","type":""}],"src":"3691:430:30"},{"body":{"nodeType":"YulBlock","src":"4265:254:30","statements":[{"body":{"nodeType":"YulBlock","src":"4312:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4321:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4324:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4314:6:30"},"nodeType":"YulFunctionCall","src":"4314:12:30"},"nodeType":"YulExpressionStatement","src":"4314:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4286:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"4295:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4282:3:30"},"nodeType":"YulFunctionCall","src":"4282:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"4307:3:30","type":"","value":"608"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4278:3:30"},"nodeType":"YulFunctionCall","src":"4278:33:30"},"nodeType":"YulIf","src":"4275:53:30"},{"nodeType":"YulAssignment","src":"4337:72:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4390:9:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4401:7:30"}],"functionName":{"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulIdentifier","src":"4347:42:30"},"nodeType":"YulFunctionCall","src":"4347:62:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4337:6:30"}]},{"nodeType":"YulAssignment","src":"4418:43:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4445:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"4456:3:30","type":"","value":"544"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4441:3:30"},"nodeType":"YulFunctionCall","src":"4441:19:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4428:12:30"},"nodeType":"YulFunctionCall","src":"4428:33:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4418:6:30"}]},{"nodeType":"YulAssignment","src":"4470:43:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4497:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"4508:3:30","type":"","value":"576"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:30"},"nodeType":"YulFunctionCall","src":"4493:19:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4480:12:30"},"nodeType":"YulFunctionCall","src":"4480:33:30"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4470:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$1635_calldata_ptrt_bytes32t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4215:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4226:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4238:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4246:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4254:6:30","type":""}],"src":"4126:393:30"},{"body":{"nodeType":"YulBlock","src":"4573:147:30","statements":[{"nodeType":"YulAssignment","src":"4583:29:30","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4605:6:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4592:12:30"},"nodeType":"YulFunctionCall","src":"4592:20:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4583:5:30"}]},{"body":{"nodeType":"YulBlock","src":"4698:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4707:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4710:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4700:6:30"},"nodeType":"YulFunctionCall","src":"4700:12:30"},"nodeType":"YulExpressionStatement","src":"4700:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4634:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4645:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"4652:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4641:3:30"},"nodeType":"YulFunctionCall","src":"4641:54:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4631:2:30"},"nodeType":"YulFunctionCall","src":"4631:65:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4624:6:30"},"nodeType":"YulFunctionCall","src":"4624:73:30"},"nodeType":"YulIf","src":"4621:93:30"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4552:6:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4563:5:30","type":""}],"src":"4524:196:30"},{"body":{"nodeType":"YulBlock","src":"4795:116:30","statements":[{"body":{"nodeType":"YulBlock","src":"4841:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4850:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4853:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4843:6:30"},"nodeType":"YulFunctionCall","src":"4843:12:30"},"nodeType":"YulExpressionStatement","src":"4843:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4816:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"4825:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4812:3:30"},"nodeType":"YulFunctionCall","src":"4812:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"4837:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4808:3:30"},"nodeType":"YulFunctionCall","src":"4808:32:30"},"nodeType":"YulIf","src":"4805:52:30"},{"nodeType":"YulAssignment","src":"4866:39:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4895:9:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4876:18:30"},"nodeType":"YulFunctionCall","src":"4876:29:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4866:6:30"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4761:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4772:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4784:6:30","type":""}],"src":"4725:186:30"},{"body":{"nodeType":"YulBlock","src":"5093:658:30","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5121:2:30","type":"","value":"96"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:30"},"nodeType":"YulFunctionCall","src":"5103:21:30"},"nodeType":"YulExpressionStatement","src":"5103:21:30"},{"nodeType":"YulVariableDeclaration","src":"5133:27:30","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5153:6:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5147:5:30"},"nodeType":"YulFunctionCall","src":"5147:13:30"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5137:6:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5180:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5191:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5176:3:30"},"nodeType":"YulFunctionCall","src":"5176:18:30"},{"name":"length","nodeType":"YulIdentifier","src":"5196:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5169:6:30"},"nodeType":"YulFunctionCall","src":"5169:34:30"},"nodeType":"YulExpressionStatement","src":"5169:34:30"},{"nodeType":"YulVariableDeclaration","src":"5212:10:30","value":{"kind":"number","nodeType":"YulLiteral","src":"5221:1:30","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5216:1:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"5283:93:30","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5312:9:30"},{"name":"i","nodeType":"YulIdentifier","src":"5323:1:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5308:3:30"},"nodeType":"YulFunctionCall","src":"5308:17:30"},{"kind":"number","nodeType":"YulLiteral","src":"5327:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5304:3:30"},"nodeType":"YulFunctionCall","src":"5304:27:30"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5347:6:30"},{"name":"i","nodeType":"YulIdentifier","src":"5355:1:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5343:3:30"},"nodeType":"YulFunctionCall","src":"5343:14:30"},{"kind":"number","nodeType":"YulLiteral","src":"5359:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5339:3:30"},"nodeType":"YulFunctionCall","src":"5339:25:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5333:5:30"},"nodeType":"YulFunctionCall","src":"5333:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5297:6:30"},"nodeType":"YulFunctionCall","src":"5297:69:30"},"nodeType":"YulExpressionStatement","src":"5297:69:30"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5242:1:30"},{"name":"length","nodeType":"YulIdentifier","src":"5245:6:30"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5239:2:30"},"nodeType":"YulFunctionCall","src":"5239:13:30"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5253:21:30","statements":[{"nodeType":"YulAssignment","src":"5255:17:30","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5264:1:30"},{"kind":"number","nodeType":"YulLiteral","src":"5267:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5260:3:30"},"nodeType":"YulFunctionCall","src":"5260:12:30"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5255:1:30"}]}]},"pre":{"nodeType":"YulBlock","src":"5235:3:30","statements":[]},"src":"5231:145:30"},{"body":{"nodeType":"YulBlock","src":"5410:67:30","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5439:9:30"},{"name":"length","nodeType":"YulIdentifier","src":"5450:6:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5435:3:30"},"nodeType":"YulFunctionCall","src":"5435:22:30"},{"kind":"number","nodeType":"YulLiteral","src":"5459:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5431:3:30"},"nodeType":"YulFunctionCall","src":"5431:32:30"},{"kind":"number","nodeType":"YulLiteral","src":"5465:1:30","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5424:6:30"},"nodeType":"YulFunctionCall","src":"5424:43:30"},"nodeType":"YulExpressionStatement","src":"5424:43:30"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5391:1:30"},{"name":"length","nodeType":"YulIdentifier","src":"5394:6:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5388:2:30"},"nodeType":"YulFunctionCall","src":"5388:13:30"},"nodeType":"YulIf","src":"5385:92:30"},{"nodeType":"YulAssignment","src":"5486:122:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5502:9:30"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5521:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"5529:2:30","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5517:3:30"},"nodeType":"YulFunctionCall","src":"5517:15:30"},{"kind":"number","nodeType":"YulLiteral","src":"5534:66:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5513:3:30"},"nodeType":"YulFunctionCall","src":"5513:88:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5498:3:30"},"nodeType":"YulFunctionCall","src":"5498:104:30"},{"kind":"number","nodeType":"YulLiteral","src":"5604:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5494:3:30"},"nodeType":"YulFunctionCall","src":"5494:114:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5486:4:30"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5628:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5639:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5624:3:30"},"nodeType":"YulFunctionCall","src":"5624:20:30"},{"name":"value1","nodeType":"YulIdentifier","src":"5646:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5617:6:30"},"nodeType":"YulFunctionCall","src":"5617:36:30"},"nodeType":"YulExpressionStatement","src":"5617:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5673:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5684:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5669:3:30"},"nodeType":"YulFunctionCall","src":"5669:18:30"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5693:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"5701:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5689:3:30"},"nodeType":"YulFunctionCall","src":"5689:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5662:6:30"},"nodeType":"YulFunctionCall","src":"5662:83:30"},"nodeType":"YulExpressionStatement","src":"5662:83:30"}]},"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:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5057:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5065:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5073:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5084:4:30","type":""}],"src":"4916:835:30"},{"body":{"nodeType":"YulBlock","src":"5857:125:30","statements":[{"nodeType":"YulAssignment","src":"5867:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5879:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5890:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5875:3:30"},"nodeType":"YulFunctionCall","src":"5875:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5867:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5909:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5924:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"5932:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5920:3:30"},"nodeType":"YulFunctionCall","src":"5920:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5902:6:30"},"nodeType":"YulFunctionCall","src":"5902:74:30"},"nodeType":"YulExpressionStatement","src":"5902:74:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5826:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5837:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5848:4:30","type":""}],"src":"5756:226:30"},{"body":{"nodeType":"YulBlock","src":"6019:152:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6036:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6039:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6029:6:30"},"nodeType":"YulFunctionCall","src":"6029:88:30"},"nodeType":"YulExpressionStatement","src":"6029:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6133:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6136:4:30","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6126:6:30"},"nodeType":"YulFunctionCall","src":"6126:15:30"},"nodeType":"YulExpressionStatement","src":"6126:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6157:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6160:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6150:6:30"},"nodeType":"YulFunctionCall","src":"6150:15:30"},"nodeType":"YulExpressionStatement","src":"6150:15:30"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"5987:184:30"},{"body":{"nodeType":"YulBlock","src":"6276:281:30","statements":[{"nodeType":"YulVariableDeclaration","src":"6286:51:30","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"6325:11:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6312:12:30"},"nodeType":"YulFunctionCall","src":"6312:25:30"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"6290:18:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"6485:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6494:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6497:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6487:6:30"},"nodeType":"YulFunctionCall","src":"6487:12:30"},"nodeType":"YulExpressionStatement","src":"6487:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6360:18:30"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"6388:12:30"},"nodeType":"YulFunctionCall","src":"6388:14:30"},{"name":"base_ref","nodeType":"YulIdentifier","src":"6404:8:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6384:3:30"},"nodeType":"YulFunctionCall","src":"6384:29:30"},{"kind":"number","nodeType":"YulLiteral","src":"6415:66:30","type":"","value":"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:30"},"nodeType":"YulFunctionCall","src":"6380:102:30"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6356:3:30"},"nodeType":"YulFunctionCall","src":"6356:127:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6349:6:30"},"nodeType":"YulFunctionCall","src":"6349:135:30"},"nodeType":"YulIf","src":"6346:155:30"},{"nodeType":"YulAssignment","src":"6510:41:30","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"6522:8:30"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6532:18:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6518:3:30"},"nodeType":"YulFunctionCall","src":"6518:33:30"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"6510:4:30"}]}]},"name":"access_calldata_tail_t_struct$_Order_$1641_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"6241:8:30","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"6251:11:30","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"6267:4:30","type":""}],"src":"6176:381:30"},{"body":{"nodeType":"YulBlock","src":"6656:486:30","statements":[{"nodeType":"YulVariableDeclaration","src":"6666:51:30","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"6705:11:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6692:12:30"},"nodeType":"YulFunctionCall","src":"6692:25:30"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"6670:18:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"6865:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6874:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6877:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6867:6:30"},"nodeType":"YulFunctionCall","src":"6867:12:30"},"nodeType":"YulExpressionStatement","src":"6867:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6740:18:30"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"6768:12:30"},"nodeType":"YulFunctionCall","src":"6768:14:30"},{"name":"base_ref","nodeType":"YulIdentifier","src":"6784:8:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6764:3:30"},"nodeType":"YulFunctionCall","src":"6764:29:30"},{"kind":"number","nodeType":"YulLiteral","src":"6795:66:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6760:3:30"},"nodeType":"YulFunctionCall","src":"6760:102:30"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6736:3:30"},"nodeType":"YulFunctionCall","src":"6736:127:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6729:6:30"},"nodeType":"YulFunctionCall","src":"6729:135:30"},"nodeType":"YulIf","src":"6726:155:30"},{"nodeType":"YulVariableDeclaration","src":"6890:47:30","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"6908:8:30"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6918:18:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6904:3:30"},"nodeType":"YulFunctionCall","src":"6904:33:30"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"6894:6:30","type":""}]},{"nodeType":"YulAssignment","src":"6946:30:30","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"6969:6:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6956:12:30"},"nodeType":"YulFunctionCall","src":"6956:20:30"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6946:6:30"}]},{"body":{"nodeType":"YulBlock","src":"7019:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7028:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7031:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7021:6:30"},"nodeType":"YulFunctionCall","src":"7021:12:30"},"nodeType":"YulExpressionStatement","src":"7021:12:30"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6991:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"6999:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6988:2:30"},"nodeType":"YulFunctionCall","src":"6988:30:30"},"nodeType":"YulIf","src":"6985:50:30"},{"nodeType":"YulAssignment","src":"7044:25:30","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"7056:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"7064:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7052:3:30"},"nodeType":"YulFunctionCall","src":"7052:17:30"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"7044:4:30"}]},{"body":{"nodeType":"YulBlock","src":"7120:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7129:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7132:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7122:6:30"},"nodeType":"YulFunctionCall","src":"7122:12:30"},"nodeType":"YulExpressionStatement","src":"7122:12:30"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"7085:4:30"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"7095:12:30"},"nodeType":"YulFunctionCall","src":"7095:14:30"},{"name":"length","nodeType":"YulIdentifier","src":"7111:6:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7091:3:30"},"nodeType":"YulFunctionCall","src":"7091:27:30"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"7081:3:30"},"nodeType":"YulFunctionCall","src":"7081:38:30"},"nodeType":"YulIf","src":"7078:58:30"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"6613:8:30","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"6623:11:30","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"6639:4:30","type":""},{"name":"length","nodeType":"YulTypedName","src":"6645:6:30","type":""}],"src":"6562:580:30"},{"body":{"nodeType":"YulBlock","src":"7179:152:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7196:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7199:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7189:6:30"},"nodeType":"YulFunctionCall","src":"7189:88:30"},"nodeType":"YulExpressionStatement","src":"7189:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7293:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7296:4:30","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7286:6:30"},"nodeType":"YulFunctionCall","src":"7286:15:30"},"nodeType":"YulExpressionStatement","src":"7286:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7317:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7320:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7310:6:30"},"nodeType":"YulFunctionCall","src":"7310:15:30"},"nodeType":"YulExpressionStatement","src":"7310:15:30"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7147:184:30"},{"body":{"nodeType":"YulBlock","src":"7493:211:30","statements":[{"nodeType":"YulAssignment","src":"7503:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7515:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7526:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7511:3:30"},"nodeType":"YulFunctionCall","src":"7511:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7503:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7545:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"7556:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7538:6:30"},"nodeType":"YulFunctionCall","src":"7538:25:30"},"nodeType":"YulExpressionStatement","src":"7538:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7583:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7594:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7579:3:30"},"nodeType":"YulFunctionCall","src":"7579:18:30"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7603:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"7611:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7599:3:30"},"nodeType":"YulFunctionCall","src":"7599:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7572:6:30"},"nodeType":"YulFunctionCall","src":"7572:83:30"},"nodeType":"YulExpressionStatement","src":"7572:83:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7675:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7686:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7671:3:30"},"nodeType":"YulFunctionCall","src":"7671:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"7691:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7664:6:30"},"nodeType":"YulFunctionCall","src":"7664:34:30"},"nodeType":"YulExpressionStatement","src":"7664:34:30"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_uint256__to_t_bytes32_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7446:9:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7457:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7465:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7473:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7484:4:30","type":""}],"src":"7336:368:30"},{"body":{"nodeType":"YulBlock","src":"7860:178:30","statements":[{"nodeType":"YulAssignment","src":"7870:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7882:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7893:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7878:3:30"},"nodeType":"YulFunctionCall","src":"7878:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7870:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7912:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"7923:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7905:6:30"},"nodeType":"YulFunctionCall","src":"7905:25:30"},"nodeType":"YulExpressionStatement","src":"7905:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7950:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7961:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7946:3:30"},"nodeType":"YulFunctionCall","src":"7946:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"7966:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7939:6:30"},"nodeType":"YulFunctionCall","src":"7939:34:30"},"nodeType":"YulExpressionStatement","src":"7939:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7993:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8004:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7989:3:30"},"nodeType":"YulFunctionCall","src":"7989:18:30"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8023:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8016:6:30"},"nodeType":"YulFunctionCall","src":"8016:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8009:6:30"},"nodeType":"YulFunctionCall","src":"8009:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7982:6:30"},"nodeType":"YulFunctionCall","src":"7982:50:30"},"nodeType":"YulExpressionStatement","src":"7982:50:30"}]},"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":"7813:9:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7824:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7832:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7840:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7851:4:30","type":""}],"src":"7709:329:30"},{"body":{"nodeType":"YulBlock","src":"8084:360:30","statements":[{"nodeType":"YulAssignment","src":"8094:19:30","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8110:2:30","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8104:5:30"},"nodeType":"YulFunctionCall","src":"8104:9:30"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8094:6:30"}]},{"nodeType":"YulVariableDeclaration","src":"8122:34:30","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8144:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"8152:3:30","type":"","value":"544"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8140:3:30"},"nodeType":"YulFunctionCall","src":"8140:16:30"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"8126:10:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"8239:168:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8260:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8263:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8253:6:30"},"nodeType":"YulFunctionCall","src":"8253:88:30"},"nodeType":"YulExpressionStatement","src":"8253:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8361:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8364:4:30","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8354:6:30"},"nodeType":"YulFunctionCall","src":"8354:15:30"},"nodeType":"YulExpressionStatement","src":"8354:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8389:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8392:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8382:6:30"},"nodeType":"YulFunctionCall","src":"8382:15:30"},"nodeType":"YulExpressionStatement","src":"8382:15:30"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8174:10:30"},{"kind":"number","nodeType":"YulLiteral","src":"8186:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8171:2:30"},"nodeType":"YulFunctionCall","src":"8171:34:30"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8210:10:30"},{"name":"memPtr","nodeType":"YulIdentifier","src":"8222:6:30"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8207:2:30"},"nodeType":"YulFunctionCall","src":"8207:22:30"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8168:2:30"},"nodeType":"YulFunctionCall","src":"8168:62:30"},"nodeType":"YulIf","src":"8165:242:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8423:2:30","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8427:10:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8416:6:30"},"nodeType":"YulFunctionCall","src":"8416:22:30"},"nodeType":"YulExpressionStatement","src":"8416:22:30"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"8073:6:30","type":""}],"src":"8043:401:30"},{"body":{"nodeType":"YulBlock","src":"8552:1455:30","statements":[{"body":{"nodeType":"YulBlock","src":"8599:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8608:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8611:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8601:6:30"},"nodeType":"YulFunctionCall","src":"8601:12:30"},"nodeType":"YulExpressionStatement","src":"8601:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8573:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"8582:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8569:3:30"},"nodeType":"YulFunctionCall","src":"8569:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"8594:3:30","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8565:3:30"},"nodeType":"YulFunctionCall","src":"8565:33:30"},"nodeType":"YulIf","src":"8562:53:30"},{"nodeType":"YulVariableDeclaration","src":"8624:30:30","value":{"arguments":[],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8637:15:30"},"nodeType":"YulFunctionCall","src":"8637:17:30"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8628:5:30","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8670:5:30"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8696:9:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8677:18:30"},"nodeType":"YulFunctionCall","src":"8677:29:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8663:6:30"},"nodeType":"YulFunctionCall","src":"8663:44:30"},"nodeType":"YulExpressionStatement","src":"8663:44:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8727:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"8734:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8723:3:30"},"nodeType":"YulFunctionCall","src":"8723:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8762:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8773:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8758:3:30"},"nodeType":"YulFunctionCall","src":"8758:18:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8739:18:30"},"nodeType":"YulFunctionCall","src":"8739:38:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8716:6:30"},"nodeType":"YulFunctionCall","src":"8716:62:30"},"nodeType":"YulExpressionStatement","src":"8716:62:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8798:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"8805:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8794:3:30"},"nodeType":"YulFunctionCall","src":"8794:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8827:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8838:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8823:3:30"},"nodeType":"YulFunctionCall","src":"8823:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8810:12:30"},"nodeType":"YulFunctionCall","src":"8810:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8787:6:30"},"nodeType":"YulFunctionCall","src":"8787:56:30"},"nodeType":"YulExpressionStatement","src":"8787:56:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8863:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"8870:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8859:3:30"},"nodeType":"YulFunctionCall","src":"8859:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8898:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8909:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8894:3:30"},"nodeType":"YulFunctionCall","src":"8894:18:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8875:18:30"},"nodeType":"YulFunctionCall","src":"8875:38:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8852:6:30"},"nodeType":"YulFunctionCall","src":"8852:62:30"},"nodeType":"YulExpressionStatement","src":"8852:62:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8934:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"8941:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8930:3:30"},"nodeType":"YulFunctionCall","src":"8930:15:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8970:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8981:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8966:3:30"},"nodeType":"YulFunctionCall","src":"8966:19:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8947:18:30"},"nodeType":"YulFunctionCall","src":"8947:39:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8923:6:30"},"nodeType":"YulFunctionCall","src":"8923:64:30"},"nodeType":"YulExpressionStatement","src":"8923:64:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9007:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"9014:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9003:3:30"},"nodeType":"YulFunctionCall","src":"9003:15:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9043:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"9054:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9039:3:30"},"nodeType":"YulFunctionCall","src":"9039:19:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"9020:18:30"},"nodeType":"YulFunctionCall","src":"9020:39:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8996:6:30"},"nodeType":"YulFunctionCall","src":"8996:64:30"},"nodeType":"YulExpressionStatement","src":"8996:64:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9080:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"9087:3:30","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9076:3:30"},"nodeType":"YulFunctionCall","src":"9076:15:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9110:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"9121:3:30","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9106:3:30"},"nodeType":"YulFunctionCall","src":"9106:19:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9093:12:30"},"nodeType":"YulFunctionCall","src":"9093:33:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9069:6:30"},"nodeType":"YulFunctionCall","src":"9069:58:30"},"nodeType":"YulExpressionStatement","src":"9069:58:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9147:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"9154:3:30","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9143:3:30"},"nodeType":"YulFunctionCall","src":"9143:15:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9177:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"9188:3:30","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9173:3:30"},"nodeType":"YulFunctionCall","src":"9173:19:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9160:12:30"},"nodeType":"YulFunctionCall","src":"9160:33:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9136:6:30"},"nodeType":"YulFunctionCall","src":"9136:58:30"},"nodeType":"YulExpressionStatement","src":"9136:58:30"},{"nodeType":"YulVariableDeclaration","src":"9203:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9213:3:30","type":"","value":"256"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9207:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9236:5:30"},{"name":"_1","nodeType":"YulIdentifier","src":"9243:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9232:3:30"},"nodeType":"YulFunctionCall","src":"9232:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9265:9:30"},{"name":"_1","nodeType":"YulIdentifier","src":"9276:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9261:3:30"},"nodeType":"YulFunctionCall","src":"9261:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9248:12:30"},"nodeType":"YulFunctionCall","src":"9248:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9225:6:30"},"nodeType":"YulFunctionCall","src":"9225:56:30"},"nodeType":"YulExpressionStatement","src":"9225:56:30"},{"nodeType":"YulVariableDeclaration","src":"9290:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9300:3:30","type":"","value":"288"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9294:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9323:5:30"},{"name":"_2","nodeType":"YulIdentifier","src":"9330:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9319:3:30"},"nodeType":"YulFunctionCall","src":"9319:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9352:9:30"},{"name":"_2","nodeType":"YulIdentifier","src":"9363:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9348:3:30"},"nodeType":"YulFunctionCall","src":"9348:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9335:12:30"},"nodeType":"YulFunctionCall","src":"9335:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9312:6:30"},"nodeType":"YulFunctionCall","src":"9312:56:30"},"nodeType":"YulExpressionStatement","src":"9312:56:30"},{"nodeType":"YulVariableDeclaration","src":"9377:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9387:3:30","type":"","value":"320"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9381:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9410:5:30"},{"name":"_3","nodeType":"YulIdentifier","src":"9417:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9406:3:30"},"nodeType":"YulFunctionCall","src":"9406:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9439:9:30"},{"name":"_3","nodeType":"YulIdentifier","src":"9450:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9435:3:30"},"nodeType":"YulFunctionCall","src":"9435:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9422:12:30"},"nodeType":"YulFunctionCall","src":"9422:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9399:6:30"},"nodeType":"YulFunctionCall","src":"9399:56:30"},"nodeType":"YulExpressionStatement","src":"9399:56:30"},{"nodeType":"YulVariableDeclaration","src":"9464:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9474:3:30","type":"","value":"352"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9468:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9497:5:30"},{"name":"_4","nodeType":"YulIdentifier","src":"9504:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9493:3:30"},"nodeType":"YulFunctionCall","src":"9493:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9526:9:30"},{"name":"_4","nodeType":"YulIdentifier","src":"9537:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9522:3:30"},"nodeType":"YulFunctionCall","src":"9522:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9509:12:30"},"nodeType":"YulFunctionCall","src":"9509:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9486:6:30"},"nodeType":"YulFunctionCall","src":"9486:56:30"},"nodeType":"YulExpressionStatement","src":"9486:56:30"},{"nodeType":"YulVariableDeclaration","src":"9551:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9561:3:30","type":"","value":"384"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"9555:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9584:5:30"},{"name":"_5","nodeType":"YulIdentifier","src":"9591:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9580:3:30"},"nodeType":"YulFunctionCall","src":"9580:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9613:9:30"},{"name":"_5","nodeType":"YulIdentifier","src":"9624:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9609:3:30"},"nodeType":"YulFunctionCall","src":"9609:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9596:12:30"},"nodeType":"YulFunctionCall","src":"9596:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9573:6:30"},"nodeType":"YulFunctionCall","src":"9573:56:30"},"nodeType":"YulExpressionStatement","src":"9573:56:30"},{"nodeType":"YulVariableDeclaration","src":"9638:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9648:3:30","type":"","value":"416"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"9642:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9671:5:30"},{"name":"_6","nodeType":"YulIdentifier","src":"9678:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9667:3:30"},"nodeType":"YulFunctionCall","src":"9667:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9700:9:30"},{"name":"_6","nodeType":"YulIdentifier","src":"9711:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9696:3:30"},"nodeType":"YulFunctionCall","src":"9696:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9683:12:30"},"nodeType":"YulFunctionCall","src":"9683:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9660:6:30"},"nodeType":"YulFunctionCall","src":"9660:56:30"},"nodeType":"YulExpressionStatement","src":"9660:56:30"},{"nodeType":"YulVariableDeclaration","src":"9725:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9735:3:30","type":"","value":"448"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"9729:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9758:5:30"},{"name":"_7","nodeType":"YulIdentifier","src":"9765:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9754:3:30"},"nodeType":"YulFunctionCall","src":"9754:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9787:9:30"},{"name":"_7","nodeType":"YulIdentifier","src":"9798:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9783:3:30"},"nodeType":"YulFunctionCall","src":"9783:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9770:12:30"},"nodeType":"YulFunctionCall","src":"9770:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9747:6:30"},"nodeType":"YulFunctionCall","src":"9747:56:30"},"nodeType":"YulExpressionStatement","src":"9747:56:30"},{"nodeType":"YulVariableDeclaration","src":"9812:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9822:3:30","type":"","value":"480"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"9816:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9845:5:30"},{"name":"_8","nodeType":"YulIdentifier","src":"9852:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9841:3:30"},"nodeType":"YulFunctionCall","src":"9841:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9874:9:30"},{"name":"_8","nodeType":"YulIdentifier","src":"9885:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9870:3:30"},"nodeType":"YulFunctionCall","src":"9870:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9857:12:30"},"nodeType":"YulFunctionCall","src":"9857:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9834:6:30"},"nodeType":"YulFunctionCall","src":"9834:56:30"},"nodeType":"YulExpressionStatement","src":"9834:56:30"},{"nodeType":"YulVariableDeclaration","src":"9899:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9909:3:30","type":"","value":"512"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"9903:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9932:5:30"},{"name":"_9","nodeType":"YulIdentifier","src":"9939:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9928:3:30"},"nodeType":"YulFunctionCall","src":"9928:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9961:9:30"},{"name":"_9","nodeType":"YulIdentifier","src":"9972:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9957:3:30"},"nodeType":"YulFunctionCall","src":"9957:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9944:12:30"},"nodeType":"YulFunctionCall","src":"9944:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9921:6:30"},"nodeType":"YulFunctionCall","src":"9921:56:30"},"nodeType":"YulExpressionStatement","src":"9921:56:30"},{"nodeType":"YulAssignment","src":"9986:15:30","value":{"name":"value","nodeType":"YulIdentifier","src":"9996:5:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9986:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$1635_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8518:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8529:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8541:6:30","type":""}],"src":"8449:1558:30"},{"body":{"nodeType":"YulBlock","src":"10044:152:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10061:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10064:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10054:6:30"},"nodeType":"YulFunctionCall","src":"10054:88:30"},"nodeType":"YulExpressionStatement","src":"10054:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10158:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10161:4:30","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10151:6:30"},"nodeType":"YulFunctionCall","src":"10151:15:30"},"nodeType":"YulExpressionStatement","src":"10151:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10182:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10185:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10175:6:30"},"nodeType":"YulFunctionCall","src":"10175:15:30"},"nodeType":"YulExpressionStatement","src":"10175:15:30"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"10012:184:30"},{"body":{"nodeType":"YulBlock","src":"10253:176:30","statements":[{"body":{"nodeType":"YulBlock","src":"10372:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10374:16:30"},"nodeType":"YulFunctionCall","src":"10374:18:30"},"nodeType":"YulExpressionStatement","src":"10374:18:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10284:1:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10277:6:30"},"nodeType":"YulFunctionCall","src":"10277:9:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10270:6:30"},"nodeType":"YulFunctionCall","src":"10270:17:30"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10292:1:30"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10299:66:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"x","nodeType":"YulIdentifier","src":"10367:1:30"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10295:3:30"},"nodeType":"YulFunctionCall","src":"10295:74:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10289:2:30"},"nodeType":"YulFunctionCall","src":"10289:81:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10266:3:30"},"nodeType":"YulFunctionCall","src":"10266:105:30"},"nodeType":"YulIf","src":"10263:131:30"},{"nodeType":"YulAssignment","src":"10403:20:30","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10418:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"10421:1:30"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10414:3:30"},"nodeType":"YulFunctionCall","src":"10414:9:30"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"10403:7:30"}]}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10232:1:30","type":""},{"name":"y","nodeType":"YulTypedName","src":"10235:1:30","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"10241:7:30","type":""}],"src":"10201:228:30"},{"body":{"nodeType":"YulBlock","src":"10482:80:30","statements":[{"body":{"nodeType":"YulBlock","src":"10509:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10511:16:30"},"nodeType":"YulFunctionCall","src":"10511:18:30"},"nodeType":"YulExpressionStatement","src":"10511:18:30"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10498:1:30"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10505:1:30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10501:3:30"},"nodeType":"YulFunctionCall","src":"10501:6:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10495:2:30"},"nodeType":"YulFunctionCall","src":"10495:13:30"},"nodeType":"YulIf","src":"10492:39:30"},{"nodeType":"YulAssignment","src":"10540:16:30","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10551:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"10554:1:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10547:3:30"},"nodeType":"YulFunctionCall","src":"10547:9:30"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10540:3:30"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10465:1:30","type":""},{"name":"y","nodeType":"YulTypedName","src":"10468:1:30","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10474:3:30","type":""}],"src":"10434:128:30"},{"body":{"nodeType":"YulBlock","src":"10599:152:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10616:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10619:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10609:6:30"},"nodeType":"YulFunctionCall","src":"10609:88:30"},"nodeType":"YulExpressionStatement","src":"10609:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10713:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10716:4:30","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10706:6:30"},"nodeType":"YulFunctionCall","src":"10706:15:30"},"nodeType":"YulExpressionStatement","src":"10706:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10737:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10740:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10730:6:30"},"nodeType":"YulFunctionCall","src":"10730:15:30"},"nodeType":"YulExpressionStatement","src":"10730:15:30"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"10567:184:30"},{"body":{"nodeType":"YulBlock","src":"10802:228:30","statements":[{"body":{"nodeType":"YulBlock","src":"10833:168:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10854:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10857:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10847:6:30"},"nodeType":"YulFunctionCall","src":"10847:88:30"},"nodeType":"YulExpressionStatement","src":"10847:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10955:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10958:4:30","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10948:6:30"},"nodeType":"YulFunctionCall","src":"10948:15:30"},"nodeType":"YulExpressionStatement","src":"10948:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10983:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10986:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10976:6:30"},"nodeType":"YulFunctionCall","src":"10976:15:30"},"nodeType":"YulExpressionStatement","src":"10976:15:30"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10822:1:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10815:6:30"},"nodeType":"YulFunctionCall","src":"10815:9:30"},"nodeType":"YulIf","src":"10812:189:30"},{"nodeType":"YulAssignment","src":"11010:14:30","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11019:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"11022:1:30"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"11015:3:30"},"nodeType":"YulFunctionCall","src":"11015:9:30"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"11010:1:30"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10787:1:30","type":""},{"name":"y","nodeType":"YulTypedName","src":"10790:1:30","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"10796:1:30","type":""}],"src":"10756:274:30"},{"body":{"nodeType":"YulBlock","src":"11084:76:30","statements":[{"body":{"nodeType":"YulBlock","src":"11106:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11108:16:30"},"nodeType":"YulFunctionCall","src":"11108:18:30"},"nodeType":"YulExpressionStatement","src":"11108:18:30"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11100:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"11103:1:30"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11097:2:30"},"nodeType":"YulFunctionCall","src":"11097:8:30"},"nodeType":"YulIf","src":"11094:34:30"},{"nodeType":"YulAssignment","src":"11137:17:30","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11149:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"11152:1:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11145:3:30"},"nodeType":"YulFunctionCall","src":"11145:9:30"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"11137:4:30"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"11066:1:30","type":""},{"name":"y","nodeType":"YulTypedName","src":"11069:1:30","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"11075:4:30","type":""}],"src":"11035:125:30"},{"body":{"nodeType":"YulBlock","src":"11294:168:30","statements":[{"nodeType":"YulAssignment","src":"11304:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11316:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11327:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11312:3:30"},"nodeType":"YulFunctionCall","src":"11312:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11304:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11346:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"11357:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11339:6:30"},"nodeType":"YulFunctionCall","src":"11339:25:30"},"nodeType":"YulExpressionStatement","src":"11339:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11384:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11395:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11380:3:30"},"nodeType":"YulFunctionCall","src":"11380:18:30"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11404:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"11412:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11400:3:30"},"nodeType":"YulFunctionCall","src":"11400:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11373:6:30"},"nodeType":"YulFunctionCall","src":"11373:83:30"},"nodeType":"YulExpressionStatement","src":"11373:83:30"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11255:9:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11266:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11274:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11285:4:30","type":""}],"src":"11165:297:30"},{"body":{"nodeType":"YulBlock","src":"11604:168:30","statements":[{"nodeType":"YulAssignment","src":"11614:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11626:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11637:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11622:3:30"},"nodeType":"YulFunctionCall","src":"11622:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11614:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11656:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11671:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"11679:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11667:3:30"},"nodeType":"YulFunctionCall","src":"11667:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11649:6:30"},"nodeType":"YulFunctionCall","src":"11649:74:30"},"nodeType":"YulExpressionStatement","src":"11649:74:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11743:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11754:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11739:3:30"},"nodeType":"YulFunctionCall","src":"11739:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"11759:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11732:6:30"},"nodeType":"YulFunctionCall","src":"11732:34:30"},"nodeType":"YulExpressionStatement","src":"11732:34:30"}]},"name":"abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11565:9:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11576:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11584:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11595:4:30","type":""}],"src":"11467:305:30"},{"body":{"nodeType":"YulBlock","src":"11934:241:30","statements":[{"nodeType":"YulAssignment","src":"11944:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11956:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11967:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11952:3:30"},"nodeType":"YulFunctionCall","src":"11952:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11944:4:30"}]},{"nodeType":"YulVariableDeclaration","src":"11979:52:30","value":{"kind":"number","nodeType":"YulLiteral","src":"11989:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11983:2:30","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12047:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12062:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"12070:2:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12058:3:30"},"nodeType":"YulFunctionCall","src":"12058:15:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12040:6:30"},"nodeType":"YulFunctionCall","src":"12040:34:30"},"nodeType":"YulExpressionStatement","src":"12040:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12094:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12105:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12090:3:30"},"nodeType":"YulFunctionCall","src":"12090:18:30"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12114:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"12122:2:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12110:3:30"},"nodeType":"YulFunctionCall","src":"12110:15:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12083:6:30"},"nodeType":"YulFunctionCall","src":"12083:43:30"},"nodeType":"YulExpressionStatement","src":"12083:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12146:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12157:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12142:3:30"},"nodeType":"YulFunctionCall","src":"12142:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"12162:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12135:6:30"},"nodeType":"YulFunctionCall","src":"12135:34:30"},"nodeType":"YulExpressionStatement","src":"12135:34:30"}]},"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":"11887:9:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11898:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11906:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11914:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11925:4:30","type":""}],"src":"11777:398:30"},{"body":{"nodeType":"YulBlock","src":"12261:103:30","statements":[{"body":{"nodeType":"YulBlock","src":"12307:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12316:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12319:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12309:6:30"},"nodeType":"YulFunctionCall","src":"12309:12:30"},"nodeType":"YulExpressionStatement","src":"12309:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12282:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"12291:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12278:3:30"},"nodeType":"YulFunctionCall","src":"12278:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"12303:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12274:3:30"},"nodeType":"YulFunctionCall","src":"12274:32:30"},"nodeType":"YulIf","src":"12271:52:30"},{"nodeType":"YulAssignment","src":"12332:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12348:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12342:5:30"},"nodeType":"YulFunctionCall","src":"12342:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12332:6:30"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12227:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12238:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12250:6:30","type":""}],"src":"12180:184:30"},{"body":{"nodeType":"YulBlock","src":"12524:236:30","statements":[{"nodeType":"YulAssignment","src":"12534:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12546:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12557:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12542:3:30"},"nodeType":"YulFunctionCall","src":"12542:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12534:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12576:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"12587:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12569:6:30"},"nodeType":"YulFunctionCall","src":"12569:25:30"},"nodeType":"YulExpressionStatement","src":"12569:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12614:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12625:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12610:3:30"},"nodeType":"YulFunctionCall","src":"12610:18:30"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12634:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"12642:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12630:3:30"},"nodeType":"YulFunctionCall","src":"12630:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12603:6:30"},"nodeType":"YulFunctionCall","src":"12603:83:30"},"nodeType":"YulExpressionStatement","src":"12603:83:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12706:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12717:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12702:3:30"},"nodeType":"YulFunctionCall","src":"12702:18:30"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12726:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"12734:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12722:3:30"},"nodeType":"YulFunctionCall","src":"12722:31:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12695:6:30"},"nodeType":"YulFunctionCall","src":"12695:59:30"},"nodeType":"YulExpressionStatement","src":"12695:59:30"}]},"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":"12477:9:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12488:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12496:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12504:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12515:4:30","type":""}],"src":"12369:391:30"},{"body":{"nodeType":"YulBlock","src":"12978:299:30","statements":[{"nodeType":"YulAssignment","src":"12988:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13000:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13011:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12996:3:30"},"nodeType":"YulFunctionCall","src":"12996:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12988:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13031:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"13042:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13024:6:30"},"nodeType":"YulFunctionCall","src":"13024:25:30"},"nodeType":"YulExpressionStatement","src":"13024:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13069:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13080:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13065:3:30"},"nodeType":"YulFunctionCall","src":"13065:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"13085:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13058:6:30"},"nodeType":"YulFunctionCall","src":"13058:34:30"},"nodeType":"YulExpressionStatement","src":"13058:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13112:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13123:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13108:3:30"},"nodeType":"YulFunctionCall","src":"13108:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"13128:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13101:6:30"},"nodeType":"YulFunctionCall","src":"13101:34:30"},"nodeType":"YulExpressionStatement","src":"13101:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13155:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13166:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13151:3:30"},"nodeType":"YulFunctionCall","src":"13151:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"13171:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13144:6:30"},"nodeType":"YulFunctionCall","src":"13144:34:30"},"nodeType":"YulExpressionStatement","src":"13144:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13198:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13209:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13194:3:30"},"nodeType":"YulFunctionCall","src":"13194:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"13219:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"13227:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13215:3:30"},"nodeType":"YulFunctionCall","src":"13215:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13187:6:30"},"nodeType":"YulFunctionCall","src":"13187:84:30"},"nodeType":"YulExpressionStatement","src":"13187:84:30"}]},"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":"12915:9:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"12926:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12934:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12942:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12950:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12958:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12969:4:30","type":""}],"src":"12765:512:30"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_array$_t_struct$_Order_$1641_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_$1600_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_$1635_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_$1600_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_$1641_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_$1635_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_$1641_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_address_t_uint256__to_t_bytes32_t_address_t_uint256__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), value2)\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_$1635_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":30,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"869":[{"length":32,"start":7490}],"871":[{"length":32,"start":7530}],"873":[{"length":32,"start":7452}],"875":[{"length":32,"start":1309},{"length":32,"start":1991}],"877":[{"length":32,"start":7406}],"879":[{"length":32,"start":7614}],"882":[{"length":32,"start":3832},{"length":32,"start":8354}],"884":[{"length":32,"start":8420}],"4061":[{"length":32,"start":622},{"length":32,"start":8232},{"length":32,"start":9996},{"length":32,"start":10130},{"length":32,"start":10714}]},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c8063b86ae9e111610074578063f07ec3731161004e578063f07ec37314610218578063f47b774014610238578063ffc5d97a1461025c57600080fd5b8063b86ae9e1146101d2578063be92d18e146101f2578063d9e534111461020557600080fd5b80635b34b966116100a55780635b34b9661461016f5780639432cc1d14610192578063a3210e7c146101b257600080fd5b806322378003146100c157806346423aa7146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004612c48565b6102b5565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610116610111366004612cbd565b6102c8565b604080519815158952961515602089015294151595870195909552911515606086015273ffffffffffffffffffffffffffffffffffffffff16608085015260a084015260c083019190915260e0820152610100016100ed565b34801561017b57600080fd5b5061018461035b565b6040519081526020016100ed565b34801561019e57600080fd5b506100e16101ad366004612cd6565b61036a565b3480156101be57600080fd5b506100e16101cd366004612d53565b610376565b3480156101de57600080fd5b506101846101ed366004612d83565b610387565b6100e1610200366004612da0565b610556565b6100e1610213366004612de5565b610562565b34801561022457600080fd5b50610184610233366004612e45565b610577565b34801561024457600080fd5b5061024d6105a2565b6040516100ed93929190612e60565b34801561026857600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b60006102c183836105ba565b9392505050565b600080600080600080600080610340896000908152600260208190526040909120805460018201549282015460039092015460ff8083169561010084048216956201000085048316956301000000860490931694640100000000900473ffffffffffffffffffffffffffffffffffffffff1693909291565b97509750975097509750975097509750919395975091939597565b600061036561090a565b905090565b60006102c18383610967565b600061038182610b27565b92915050565b60408051610220810190915260009061038190806103a86020860186612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260408086013560208301520161040a6080860160608701612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260200161043560a0860160808701612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260200161046060c0860160a08701612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460c0013581526020018460e00135815260200184610100013581526020018461012001358152602001846101400135815260200184610160013581526020018461018001358152602001846101a001358152602001846101c001358152602001846101e0013581526020018461020001358152508361022001357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60006102c18383610c2c565b600061056f848484610daf565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610381565b60606000806105af610ed7565b925092509250909192565b60006105c4610f52565b6000808084815b818110156108fc57368888838181106105e6576105e6612ef9565b90506020028101906105f89190612f28565b9050806106086020820182612e45565b94506108006040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018360200160208101906106489190612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260408085013560208301520161067c6080850160608601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106a760a0850160808601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106d260c0850160a08601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018360c0013581526020018360e00135815260200183610100013581526020018361012001358152602001836101400135815260200183610160013581526020018361018001358152602001836101a001358152602001836101c001358152602001836101e0013581526020018361020001358152506107a08360000160208101906107789190612e45565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60008181526002602052604090209750955061081f8688600180610f90565b50865460ff166108f257610876858761083c610220860186612f66565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d292505050565b86547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117875560405173ffffffffffffffffffffffffffffffffffffffff8616907f09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6906108e99089815260200190565b60405180910390a25b50506001016105cb565b506001979650505050505050565b6000610914610f52565b503360008181526001602081815260409283902080549092019182905591518181529092917f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f910160405180910390a290565b6000610971610f52565b60008083815b81811015610b1a573687878381811061099257610992612ef9565b610240029190910191506109ab90506020820182612e45565b93503373ffffffffffffffffffffffffffffffffffffffff8516146109fc576040517f80ec737400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a3c6040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e45565b6000818152600260205260409020600181015490975090915015610a94576040517f9633f278000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010017865560405173ffffffffffffffffffffffffffffffffffffffff8616907fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275390610b089084815260200190565b60405180910390a25050600101610977565b5060019695505050505050565b600080600080610b3885600161114f565b92509250925080610b4e57506000949350505050565b610b7f6002610b636040880160208901612e45565b30610b7160208a018a612e45565b60408a01356001600061129b565b6000610b916080870160608801612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610bbb57610bb6858361138a565b610bc5565b610bc58583611427565b610bd26020860186612e45565b73ffffffffffffffffffffffffffffffffffffffff167fe68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada84604051610c1991815260200190565b60405180910390a2506001949350505050565b600080600080610c3d8660016114df565b92509250925081610c545760009350505050610381565b856000610c648260018084611656565b90506000610c786080840160608501612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610cd757610cc86002610ca86040850160208601612e45565b610cb56020860186612e45565b308660400135600188610200013561129b565b610cd28282611845565b610d3a565b604080516020808252818301909252600091602082018180368337019050509050610d2c610d0b6040850160208601612e45565b610d186020860186612e45565b3086604001356001886102000135876118fe565b610d3883838a84611964565b505b610d476020830183612e45565b6040805187815233602082015290810185905273ffffffffffffffffffffffffffffffffffffffff91909116907fe8b2cfa73a11bd60479d92890aeb77bc5f502014ec530c3f0c1774d51680f0a69060600160405180910390a2506001979650505050505050565b6000806000806000610dc388876001611a85565b929650909450909250905080610de05760009450505050506102c1565b506000610df08887600085611656565b90506000610e0460808a0160608b01612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610e2e57610e298882611845565b610e5d565b604080516020808252818301909252600091602082018180368337019050509050610e5b89838a84611964565b505b8115610e8857610e886002610e7860408b0160208c01612e45565b308660408d01356001600061129b565b60408051858152602081018890528315158183015290517f6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d389181900360600190a1506001979650505050505050565b6060600080610ee4611cea565b6040805160038082528183019092529193507f0000000000000000000000000000000000000000000000000000000000000000925060208201818036833750507f312e3100000000000000000000000000000000000000000000000000000000006020830152509391925090565b600160005414610f8e576040517f7fa8a98700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8254600090610100900460ff1615610fe5578115610fdd576040517f1a51557400000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b50600061056f565b835462010000900460ff1615611030578115610fdd576040517f836f8ef900000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b82156110805760038401541561107b578115610fdd576040517f9633f27800000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b6110c7565b83600301546000036110c7578115610fdd576040517fe567c93e00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8416036110f457505050565b600061113c611101611cea565b7f1901000000000000000000000000000000000000000000000000000000000000600090815260029190915260228581526042822091905290565b9050611149848284611de0565b50505050565b6000808061117561116536879003870187613023565b6107a06107786020890189612e45565b600081815260026020526040902080549194509060ff166111d55784156111cb576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b5060009050611294565b806003015492506111e98482600088610f90565b6111f7575060009050611294565b4261120761010088013585613146565b82600101546112169190613183565b11156112575784156111cb576040517f031ea4cb00000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b6112648160020154611ff9565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1663010100001790555060015b9250925092565b801561131057600060405190507f4ce34aa200000000000000000000000000000000000000000000000000000000815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e482015261130a828261010461209c565b50611381565b60028760038111156113245761132461319b565b036113745781600114611363576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136f86868686612238565b611381565b6113818686868686612347565b50505050505050565b6113be61139a6020840184612e45565b826113af6101208601356101808701356131ca565b6113b99190613146565b612479565b6000816113d56101208501356101408601356131ca565b6113df9190613146565b90506127106113f361016085013583613146565b6113fd91906131ca565b6114079082613205565b905061142261141c60c0850160a08601612e45565b82612479565b505050565b61146b61143a6080840160608501612e45565b6114476020850185612e45565b8361145c6101208701356101808801356131ca565b6114669190613146565b6124ee565b6000816114826101208501356101408601356131ca565b61148c9190613146565b90506127106114a061016085013583613146565b6114aa91906131ca565b6114b49082613205565b90506114226114c96080850160608601612e45565b6114d960c0860160a08701612e45565b836124ee565b60008080846114f760c082013560e083013587612656565b61150b575060009250829150819050611294565b60028161012001351015611561578415611551576040517f0a199cb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009250829150819050611294565b61158361157336839003830183613023565b6107a06107786020850185612e45565b60008181526002602052604090209094506115a18582600189610f90565b6115b45750600092508291506112949050565b805460ff166115dc576115dc6115cd6020840184612e45565b8661083c6102208b018b612f66565b611600336115f06040850160208601612e45565b84604001358561010001356126b5565b815460017fffffffffffffffff000000000000000000000000000000000000000000ff00009091163364010000000002178117835542818401556002830182905560039092018290559497909650939450505050565b6116816040518060800160405280600081526020016000815260200160008152602001600081525090565b60008061169386610120890135613205565b6101c088013560408501529050831561177f576116ba6101208801356101808901356131ca565b6116c49082613146565b6116d390610180890135613205565b91506116e96101208801356101408901356131ca565b6116f39082613146565b61170290610140890135613205565b835260408301518290826127106101608b01356117296101208d01356101408e01356131ca565b6117339190613146565b61173d91906131ca565b6117479190613146565b611756906101408b0135613205565b6117609190613205565b61176a9190613205565b6020840152610180870135606084015261183b565b6117936101208801356101808901356131ca565b61179d9087613146565b91506117b36101208801356101408901356131ca565b6117bd9087613146565b80845260408401518391612710906117db906101608c013590613146565b6117e591906131ca565b6117ef9190613205565b6117f99190613205565b6020840152841561183b57866101a001358360000181815161181b9190613183565b9052506040830180516101a08901359190611837908390613183565b9052505b5050949350505050565b80513490811015611882576040517f1a783b8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189c6118926020850185612e45565b8360200151612479565b6118b96118af60c0850160a08601612e45565b8360400151612479565b6060820151156118e0576118e06118d660a0850160808601612e45565b8360600151612479565b81516118ec9082613205565b90508015611422576114223382612479565b6119088183612862565b816119535782600114611947576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136f87878787612238565b611381828260028a8a8a8a8a612881565b3360006119776080870160608801612e45565b905061199a818361198e60c08a0160a08b01612e45565b8860400151888861291a565b6060850151156119c5576119c581836119b960a08a0160808b01612e45565b8860600151888861291a565b606085015160408601518651600092916119de91613205565b6119e89190613205565b905085602001518110611a4157611a138284611a0760208b018b612e45565b8960200151898961291a565b6020860151611a229082613205565b90508015611a3857611a3882843084898961291a565b61136f84612955565b611a5b8284611a5360208b018b612e45565b84898961291a565b611a6484612955565b61138182611a7560208a018a612e45565b8389602001516114669190613205565b6000808080611aac611a9c36899003890189613023565b6107a061077860208b018b612e45565b600081815260026020526040902080549195509060ff16611b12578515611b02576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b5060009250829150819050611ce1565b611b1f8582600089610f90565b611b33575060009250829150819050611ce1565b876101200135878260030154611b499190613183565b1180611b555750600187105b15611b95578515611b02576040517fc8910ec000000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b428861010001358260030154611bab9190613146565b8260010154611bba9190613183565b1015611bfb578515611b02576040517f2e775cae00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b86816003016000828254611c0f9190613183565b909155505060038101546101208901359003611c675780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000178155600281015460019250611c6290611ff9565b611cbb565b805460028201546003830154611cbb92640100000000900473ffffffffffffffffffffffffffffffffffffffff169190611ca7906101008d013590613146565b8460010154611cb69190613183565b61297e565b54640100000000900473ffffffffffffffffffffffffffffffffffffffff169250600191505b93509350935093565b60007f00000000000000000000000000000000000000000000000000000000000000004614611dbb57610365604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000526000825160208403805182604103600060018211611e67576040880151606089015160001a96508215611e4557601b8160ff1c0196507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811660408a01525b8689528985526020600060808760015afa508385528589526040890152506000515b8914891515169550859050611fbe57604082526044860380516040880380517f1626ba7e0000000000000000000000000000000000000000000000000000000084528a82526020600060648901868f5afa98508815611fb4577f1626ba7e0000000000000000000000000000000000000000000000000000000060005114611fb4578b3b15611f1a577f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6001876041031115611f50577f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b640101000000881a611f8a577f1f003d0a000000000000000000000000000000000000000000000000000000006000528760045260246000fd5b7f815e1d640000000000000000000000000000000000000000000000000000000060005260046000fd5b8486529190925290525b505050508061114957611fcf612a32565b7f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561208157600080fd5b505af1158015612095573d6000803e3d6000fd5b5050505050565b604080517f000000000000000000000000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000017600090815260208690527f000000000000000000000000000000000000000000000000000000000000000083526055600b209190925273ffffffffffffffffffffffffffffffffffffffff169050600080600080526020600085876000875af191506000519050816121965761214c612a32565b6040517fd13d53d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610a8b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f4ce34aa20000000000000000000000000000000000000000000000000000000014612230576040517f1cf99b260000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff84166024820152604401610a8b565b505050505050565b833b61226c577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af180612338573d156122f9576020601f3d01046020830481600302818311156122e057818303600302610200838002858002030401015b5a6020820110156122f5573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61237b577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af18061245d573d1561241f576020601f3d010460208604816003028183111561240657818303600302610200838002858002030401015b5a60208201101561241b573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b61248281612a7a565b600080600080600085875af19050806114225761249d612a32565b6040517f470c7c1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610a8b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528260045281602452602060006044600080885af1803d15601f3d116001600051141617163d151581166126475780863b151516612647578061261957816125df573d156125a0576020601f3d010460208404816003028183111561258757818303600302610200838002858002030401015b5a60208201101561259c573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452306024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528560045230602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528560045260246000fd5b50506040525050600060605250565b6000428411806126665750428311155b156126ab5781156126a3576040517f6f7eac2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006102c1565b5060019392505050565b6040517fc6c3bbe600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063c6c3bbe6906064016020604051808303816000875af1158015612755573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612779919061321c565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663e030565e82886127c34288613183565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff909116602483015267ffffffffffffffff166044820152606401600060405180830381600087803b15801561284057600080fd5b505af1158015612854573d6000803e3d6000fd5b509298975050505050505050565b600061286f836020015190565b90508181146114225761142283612955565b600060208851036128d55750604080885260208089018a90527f4ce34aa2000000000000000000000000000000000000000000000000000000009189019190915260448801526001606488018190526128e4565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61292383612a7a565b61292d8183612862565b816129435761293e86868686612ab7565b612230565b6122308282600189898960008a612881565b60408151146129615750565b600061296e826020015190565b905061297a8183612c24565b5050565b6040517fe030565e0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff848116602483015267ffffffffffffffff831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e030565e90606401600060405180830381600087803b158015612a1e57600080fd5b505af1158015611381573d6000803e3d6000fd5b3d15610f8e576020601f3d01046020604051048160030281831115612a6557818303600302610200838002858002030401015b5a602082011015611422573d6000803e3d6000fd5b80600003612ab4576040517f91b3e51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116612c145780873b151516612c145780612be65781612bac573d15612b6d576020601f3d0104602084048160030281831115612b5457818303600302610200838002858002030401015b5a602082011015612b69573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b6064810151604082019060c002604401612c3f84838361209c565b50506020905250565b60008060208385031215612c5b57600080fd5b823567ffffffffffffffff80821115612c7357600080fd5b818501915085601f830112612c8757600080fd5b813581811115612c9657600080fd5b8660208260051b8501011115612cab57600080fd5b60209290920196919550909350505050565b600060208284031215612ccf57600080fd5b5035919050565b60008060208385031215612ce957600080fd5b823567ffffffffffffffff80821115612d0157600080fd5b818501915085601f830112612d1557600080fd5b813581811115612d2457600080fd5b86602061024083028501011115612cab57600080fd5b60006102208284031215612d4d57600080fd5b50919050565b60006102208284031215612d6657600080fd5b6102c18383612d3a565b60006102408284031215612d4d57600080fd5b60006102408284031215612d9657600080fd5b6102c18383612d70565b60008060408385031215612db357600080fd5b823567ffffffffffffffff811115612dca57600080fd5b612dd685828601612d70565b95602094909401359450505050565b60008060006102608486031215612dfb57600080fd5b612e058585612d3a565b956102208501359550610240909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612e4057600080fd5b919050565b600060208284031215612e5757600080fd5b6102c182612e1c565b606081526000845180606084015260005b81811015612e8e5760208188018101516080868401015201612e71565b81811115612ea0576000608083860101525b5060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1833603018112612f5c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9b57600080fd5b83018035915067ffffffffffffffff821115612fb657600080fd5b602001915036819003821315612fcb57600080fd5b9250929050565b604051610220810167ffffffffffffffff8111828210171561301d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610220828403121561303657600080fd5b61303e612fd2565b61304783612e1c565b815261305560208401612e1c565b60208201526040830135604082015261307060608401612e1c565b606082015261308160808401612e1c565b608082015261309260a08401612e1c565b60a082015260c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561317e5761317e613117565b500290565b6000821982111561319657613196613117565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082613200577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561321757613217613117565b500390565b60006020828403121561322e57600080fd5b505191905056fea2646970667358221220a476a54f238545b2404a5fe5fd05406cd6cbb28a082caee5652ac3577eea345564736f6c634300080e0033","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 0x2C48 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 0x2CBD 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 0x2CD6 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 0x2D53 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 0x2D83 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DA0 JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DE5 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 0x2E45 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 0x2E60 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E45 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x460 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E45 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 0xDAF 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 0xED7 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 PUSH2 0xF52 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 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5F8 SWAP2 SWAP1 PUSH2 0x2F28 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x608 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E45 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 0x2E45 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 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 0x2E45 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 0xF90 JUMP JUMPDEST POP DUP7 SLOAD PUSH1 0xFF AND PUSH2 0x8F2 JUMPI PUSH2 0x876 DUP6 DUP8 PUSH2 0x83C PUSH2 0x220 DUP7 ADD DUP7 PUSH2 0x2F66 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 0x10D2 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 0xF52 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 0xF52 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 0x2EF9 JUMP JUMPDEST PUSH2 0x240 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x9AB SWAP1 POP PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E45 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 0x2E45 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 0x114F 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 0x2E45 JUMP JUMPDEST ADDRESS PUSH2 0xB71 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB91 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBBB JUMPI PUSH2 0xBB6 DUP6 DUP4 PUSH2 0x138A JUMP JUMPDEST PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x1427 JUMP JUMPDEST PUSH2 0xBD2 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 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 0x14DF 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 0x1656 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC78 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCD7 JUMPI PUSH2 0xCC8 PUSH1 0x2 PUSH2 0xCA8 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0xCB5 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD PUSH2 0x129B JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP3 PUSH2 0x1845 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 0x2E45 JUMP JUMPDEST PUSH2 0xD18 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD DUP8 PUSH2 0x18FE JUMP JUMPDEST PUSH2 0xD38 DUP4 DUP4 DUP11 DUP5 PUSH2 0x1964 JUMP JUMPDEST POP JUMPDEST PUSH2 0xD47 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0xE8B2CFA73A11BD60479D92890AEB77BC5F502014EC530C3F0C1774D51680F0A6 SWAP1 PUSH1 0x60 ADD 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 0xDC3 DUP9 DUP8 PUSH1 0x1 PUSH2 0x1A85 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDE0 JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xDF0 DUP9 DUP8 PUSH1 0x0 DUP6 PUSH2 0x1656 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE04 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE2E JUMPI PUSH2 0xE29 DUP9 DUP3 PUSH2 0x1845 JUMP JUMPDEST PUSH2 0xE5D 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 0xE5B DUP10 DUP4 DUP11 DUP5 PUSH2 0x1964 JUMP JUMPDEST POP JUMPDEST DUP2 ISZERO PUSH2 0xE88 JUMPI PUSH2 0xE88 PUSH1 0x2 PUSH2 0xE78 PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x129B 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 0xEE4 PUSH2 0x1CEA 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 0xF8E 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 0xFE5 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x1030 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x1080 JUMPI PUSH1 0x3 DUP5 ADD SLOAD ISZERO PUSH2 0x107B JUMPI DUP2 ISZERO PUSH2 0xFDD JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST DUP4 PUSH1 0x3 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x10C7 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x10F4 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113C PUSH2 0x1101 PUSH2 0x1CEA 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 0x1149 DUP5 DUP3 DUP5 PUSH2 0x1DE0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1175 PUSH2 0x1165 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2E45 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 0x11D5 JUMPI DUP5 ISZERO PUSH2 0x11CB 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 0x1294 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD SWAP3 POP PUSH2 0x11E9 DUP5 DUP3 PUSH1 0x0 DUP9 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x11F7 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x1294 JUMP JUMPDEST TIMESTAMP PUSH2 0x1207 PUSH2 0x100 DUP9 ADD CALLDATALOAD DUP6 PUSH2 0x3146 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1216 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST GT ISZERO PUSH2 0x1257 JUMPI DUP5 ISZERO PUSH2 0x11CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x31EA4CB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x1264 DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x1FF9 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 0x1310 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 0x130A DUP3 DUP3 PUSH2 0x104 PUSH2 0x209C JUMP JUMPDEST POP PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1324 JUMPI PUSH2 0x1324 PUSH2 0x319B JUMP JUMPDEST SUB PUSH2 0x1374 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136F DUP7 DUP7 DUP7 DUP7 PUSH2 0x2238 JUMP JUMPDEST PUSH2 0x1381 JUMP JUMPDEST PUSH2 0x1381 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2347 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13BE PUSH2 0x139A PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E45 JUMP JUMPDEST DUP3 PUSH2 0x13AF PUSH2 0x120 DUP7 ADD CALLDATALOAD PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x13B9 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x13D5 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x13DF SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x13F3 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x13FD SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1407 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP PUSH2 0x1422 PUSH2 0x141C PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP3 PUSH2 0x2479 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x146B PUSH2 0x143A PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0x1447 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH2 0x145C PUSH2 0x120 DUP8 ADD CALLDATALOAD PUSH2 0x180 DUP9 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x24EE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1482 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x148C SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x14A0 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x14AA SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x14B4 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP PUSH2 0x1422 PUSH2 0x14C9 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0x14D9 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH2 0x24EE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 PUSH2 0x14F7 PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD CALLDATALOAD DUP8 PUSH2 0x2656 JUMP JUMPDEST PUSH2 0x150B JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1294 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH2 0x120 ADD CALLDATALOAD LT ISZERO PUSH2 0x1561 JUMPI DUP5 ISZERO PUSH2 0x1551 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 0x1294 JUMP JUMPDEST PUSH2 0x1583 PUSH2 0x1573 CALLDATASIZE DUP4 SWAP1 SUB DUP4 ADD DUP4 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x15A1 DUP6 DUP3 PUSH1 0x1 DUP10 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x15B4 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP PUSH2 0x1294 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x15DC JUMPI PUSH2 0x15DC PUSH2 0x15CD PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E45 JUMP JUMPDEST DUP7 PUSH2 0x83C PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x2F66 JUMP JUMPDEST PUSH2 0x1600 CALLER PUSH2 0x15F0 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP6 PUSH2 0x100 ADD CALLDATALOAD PUSH2 0x26B5 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 0x1681 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 0x1693 DUP7 PUSH2 0x120 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x1C0 DUP9 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP DUP4 ISZERO PUSH2 0x177F JUMPI PUSH2 0x16BA PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x16C4 SWAP1 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x16D3 SWAP1 PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST SWAP2 POP PUSH2 0x16E9 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x16F3 SWAP1 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x1702 SWAP1 PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP3 SWAP1 DUP3 PUSH2 0x2710 PUSH2 0x160 DUP12 ADD CALLDATALOAD PUSH2 0x1729 PUSH2 0x120 DUP14 ADD CALLDATALOAD PUSH2 0x140 DUP15 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1733 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x173D SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1747 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x1756 SWAP1 PUSH2 0x140 DUP12 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x1760 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x176A SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x183B JUMP JUMPDEST PUSH2 0x1793 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x179D SWAP1 DUP8 PUSH2 0x3146 JUMP JUMPDEST SWAP2 POP PUSH2 0x17B3 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x17BD SWAP1 DUP8 PUSH2 0x3146 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP4 SWAP2 PUSH2 0x2710 SWAP1 PUSH2 0x17DB SWAP1 PUSH2 0x160 DUP13 ADD CALLDATALOAD SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x17E5 SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x17EF SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x17F9 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE DUP5 ISZERO PUSH2 0x183B JUMPI DUP7 PUSH2 0x1A0 ADD CALLDATALOAD DUP4 PUSH1 0x0 ADD DUP2 DUP2 MLOAD PUSH2 0x181B SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH2 0x1A0 DUP10 ADD CALLDATALOAD SWAP2 SWAP1 PUSH2 0x1837 SWAP1 DUP4 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD CALLVALUE SWAP1 DUP2 LT ISZERO PUSH2 0x1882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A783B8D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x189C PUSH2 0x1892 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST PUSH2 0x18B9 PUSH2 0x18AF PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD ISZERO PUSH2 0x18E0 JUMPI PUSH2 0x18E0 PUSH2 0x18D6 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x18EC SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1422 JUMPI PUSH2 0x1422 CALLER DUP3 PUSH2 0x2479 JUMP JUMPDEST PUSH2 0x1908 DUP2 DUP4 PUSH2 0x2862 JUMP JUMPDEST DUP2 PUSH2 0x1953 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x1947 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136F DUP8 DUP8 DUP8 DUP8 PUSH2 0x2238 JUMP JUMPDEST PUSH2 0x1381 DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2881 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1977 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E45 JUMP JUMPDEST SWAP1 POP PUSH2 0x199A DUP2 DUP4 PUSH2 0x198E PUSH1 0xC0 DUP11 ADD PUSH1 0xA0 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP9 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD ISZERO PUSH2 0x19C5 JUMPI PUSH2 0x19C5 DUP2 DUP4 PUSH2 0x19B9 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD DUP9 DUP9 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x19DE SWAP2 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x19E8 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x20 ADD MLOAD DUP2 LT PUSH2 0x1A41 JUMPI PUSH2 0x1A13 DUP3 DUP5 PUSH2 0x1A07 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD MLOAD DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x1A22 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A38 JUMPI PUSH2 0x1A38 DUP3 DUP5 ADDRESS DUP5 DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH2 0x136F DUP5 PUSH2 0x2955 JUMP JUMPDEST PUSH2 0x1A5B DUP3 DUP5 PUSH2 0x1A53 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 JUMP JUMPDEST DUP5 DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH2 0x1A64 DUP5 PUSH2 0x2955 JUMP JUMPDEST PUSH2 0x1381 DUP3 PUSH2 0x1A75 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E45 JUMP JUMPDEST DUP4 DUP10 PUSH1 0x20 ADD MLOAD PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AAC PUSH2 0x1A9C CALLDATASIZE DUP10 SWAP1 SUB DUP10 ADD DUP10 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 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 0x1B12 JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1CE1 JUMP JUMPDEST PUSH2 0x1B1F DUP6 DUP3 PUSH1 0x0 DUP10 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x1B33 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CE1 JUMP JUMPDEST DUP8 PUSH2 0x120 ADD CALLDATALOAD DUP8 DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1B49 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST GT DUP1 PUSH2 0x1B55 JUMPI POP PUSH1 0x1 DUP8 LT JUMPDEST ISZERO PUSH2 0x1B95 JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1BAB SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1BBA SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST LT ISZERO PUSH2 0x1BFB JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1C0F SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 SUB PUSH2 0x1C67 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF AND PUSH3 0x10000 OR DUP2 SSTORE PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 SWAP3 POP PUSH2 0x1C62 SWAP1 PUSH2 0x1FF9 JUMP JUMPDEST PUSH2 0x1CBB JUMP JUMPDEST DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH2 0x1CBB SWAP3 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x1CA7 SWAP1 PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP1 PUSH2 0x3146 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1CB6 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x297E 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 0x1DBB 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 0x1E67 JUMPI PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x0 BYTE SWAP7 POP DUP3 ISZERO PUSH2 0x1E45 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 0x1FBE 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 0x1FB4 JUMPI PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MLOAD EQ PUSH2 0x1FB4 JUMPI DUP12 EXTCODESIZE ISZERO PUSH2 0x1F1A JUMPI PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP8 PUSH1 0x41 SUB GT ISZERO PUSH2 0x1F50 JUMPI PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH5 0x101000000 DUP9 BYTE PUSH2 0x1F8A 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 0x1149 JUMPI PUSH2 0x1FCF PUSH2 0x2A32 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 0x2081 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2095 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 0x2196 JUMPI PUSH2 0x214C PUSH2 0x2A32 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 0x2230 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 0x226C 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 0x2338 JUMPI RETURNDATASIZE ISZERO PUSH2 0x22F9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x22E0 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 0x22F5 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 0x237B 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 0x245D JUMPI RETURNDATASIZE ISZERO PUSH2 0x241F JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2406 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 0x241B 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 0x2482 DUP2 PUSH2 0x2A7A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x1422 JUMPI PUSH2 0x249D PUSH2 0x2A32 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 0x2647 JUMPI DUP1 DUP7 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2647 JUMPI DUP1 PUSH2 0x2619 JUMPI DUP2 PUSH2 0x25DF JUMPI RETURNDATASIZE ISZERO PUSH2 0x25A0 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2587 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 0x259C 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 0x2666 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x26AB JUMPI DUP2 ISZERO PUSH2 0x26A3 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 0x2755 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 0x2779 SWAP2 SWAP1 PUSH2 0x321C JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xE030565E DUP3 DUP9 PUSH2 0x27C3 TIMESTAMP DUP9 PUSH2 0x3183 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 0x2840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2854 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 0x286F DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1422 JUMPI PUSH2 0x1422 DUP4 PUSH2 0x2955 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x28D5 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 0x28E4 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 0x2923 DUP4 PUSH2 0x2A7A JUMP JUMPDEST PUSH2 0x292D DUP2 DUP4 PUSH2 0x2862 JUMP JUMPDEST DUP2 PUSH2 0x2943 JUMPI PUSH2 0x293E DUP7 DUP7 DUP7 DUP7 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2230 JUMP JUMPDEST PUSH2 0x2230 DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x2881 JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD EQ PUSH2 0x2961 JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296E DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x297A DUP2 DUP4 PUSH2 0x2C24 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 0x2A1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1381 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xF8E JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2A65 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 0x1422 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x2AB4 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 0x2C14 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2C14 JUMPI DUP1 PUSH2 0x2BE6 JUMPI DUP2 PUSH2 0x2BAC JUMPI RETURNDATASIZE ISZERO PUSH2 0x2B6D JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2B54 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 0x2B69 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 0x2C3F DUP5 DUP4 DUP4 PUSH2 0x209C JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CAB 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 0x2CCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2D01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH2 0x240 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2CAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DD6 DUP6 DUP3 DUP7 ADD PUSH2 0x2D70 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 0x2DFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E05 DUP6 DUP6 PUSH2 0x2D3A 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 0x2E40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP3 PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E8E JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x2E71 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2EA0 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 0x2F5C 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 0x2F9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2FB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2FCB 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 0x301D 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 0x3036 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303E PUSH2 0x2FD2 JUMP JUMPDEST PUSH2 0x3047 DUP4 PUSH2 0x2E1C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x3055 PUSH1 0x20 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3070 PUSH1 0x60 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3081 PUSH1 0x80 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3092 PUSH1 0xA0 DUP5 ADD PUSH2 0x2E1C 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 0x317E JUMPI PUSH2 0x317E PUSH2 0x3117 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3196 JUMPI PUSH2 0x3196 PUSH2 0x3117 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 0x3200 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 0x3217 JUMPI PUSH2 0x3217 PUSH2 0x3117 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 PUSH23 0xA54F238545B2404A5FE5FD05406CD6CBB28A082CAEE565 0x2A 0xC3 JUMPI PUSH31 0xEA345564736F6C634300080E00330000000000000000000000000000000000 ","sourceMap":"121:254:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1283:143:11;;;;;;;;;;-1:-1:-1;1283:143:11;;;;;:::i;:::-;;:::i;:::-;;;824:14:30;;817:22;799:41;;787:2;772:18;1283:143:11;;;;;;;;2337:394;;;;;;;;;;-1:-1:-1;2337:394:11;;;;;:::i;:::-;;:::i;:::-;;;;1380:14:30;;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:11;1036:768:30;1432:115:11;;;;;;;;;;;;;:::i;:::-;;;1955:25:30;;;1943:2;1928:18;1432:115:11;1809:177:30;1128:149:11;;;;;;;;;;-1:-1:-1;1128:149:11;;;;;:::i;:::-;;:::i;954:168::-;;;;;;;;;;-1:-1:-1;954:168:11;;;;;:::i;:::-;;:::i;1553:778::-;;;;;;;;;;-1:-1:-1;1553:778:11;;;;;:::i;:::-;;:::i;456:224::-;;;;;;:::i;:::-;;:::i;686:262::-;;;;;;:::i;:::-;;:::i;2737:152::-;;;;;;;;;;-1:-1:-1;2737:152:11;;;;;:::i;:::-;;:::i;2895:233::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;336:36:23:-;;;;;;;;;;;;;;;;;;5932:42:30;5920:55;;;5902:74;;5890:2;5875:18;336:36:23;5756:226:30;1283:143:11;1360:14;1402:17;1412:6;;1402:9;:17::i;:::-;1390:29;1283:143;-1:-1:-1;;;1283:143:11:o;2337:394::-;2440:16;2470;2500;2530:13;2557:17;2588;2619:16;2649:17;2698:26;2714:9;11847:16:21;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:11;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:11: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:18;;;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:11;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:11:o;2737:152::-;738:18:16;;;2821:15:11;738:18:16;;;:9;:18;;;;;;2862:20:11;598:165:16;2895:233:11;2978:21;3013:23;3050:25;3107:14;:12;:14::i;:::-;3100:21;;;;;;2895:233;;;:::o;8359:3378:21:-;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:21;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:16;;683:22;738:18;;;:9;:18;;;;;;;598:165;10367:36:21;619:29:18;;;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:21;10529:23;;;;:12;:23;;;;;;-1:-1:-1;9439:982:21;-1:-1:-1;10647:253:21;9439:982;10529:23;10751:4;;10647:18;:253::i;:::-;-1:-1:-1;10990:23:21;;;;10985:512;;11091:53;11108:7;11117:9;11128:15;;;;:5;:15;:::i;:::-;11091:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11091:16:21;;-1:-1:-1;;;11091:53:21:i;:::-;11238:30;;;;11264:4;11238:30;;;11374:104;;;;;;;;;;11414:9;1955:25:30;;1943:2;1928:18;;1809:177;11374:104:21;;;;;;;;10985:512;-1:-1:-1;;11596:3:21;;8974:2640;;;-1:-1:-1;11726:4:21;;8359:3378;-1:-1:-1;;;;;;;8359:3378:21:o;348:244:16:-;395:18;425:21;:19;:21::i;:::-;-1:-1:-1;506:10:16;496:21;;;;:9;:21;;;;;;;;;494:23;;;;;;;;;543:42;;1955:25:30;;;494:23:16;;506:10;543:42;;1928:18:30;543:42:16;;;;;;;348:244;:::o;5758:2595:21:-;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:21;;-1:-1:-1;6521:13:21;;;6483:9;6521:13;:::i;:::-;6511:23;-1:-1:-1;6557:10:21;: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:21;;-1:-1:-1;7706:25:21;7702:109;;7762:30;;;;;;;;1955:25:30;;;1928:18;;7762:30:21;;;;;;;;7702:109;7900:31;;7949:30;;7900:31;7949:30;;;8082:34;;;;;;;;;;8097:9;1955:25:30;;1943:2;1928:18;;1809:177;8082:34:21;;;;;;;;-1:-1:-1;;8212:3:21;;6354:1876;;;-1:-1:-1;8342:4:21;;5758:2595;-1:-1:-1;;;;;;5758:2595:21:o;5055:968:20:-;5158:4;5192:17;5223;5254:10;5277:86;5325:10;5349:4;5277:34;:86::i;:::-;5178:185;;;;;;5379:5;5374:49;;-1:-1:-1;5407:5:20;;5055:968;-1:-1:-1;;;;5055:968:20:o;5374:49::-;5433:234;5479:15;5508:16;;;;;;;;:::i;:::-;5546:4;5565:18;;;;:10;:18;:::i;:::-;5597:21;;;;5632:1;5655;5433:32;:234::i;:::-;5713:1;5682:19;;;;;;;;:::i;:::-;:33;;;5678:225;;5731:41;5750:10;5762:9;5731:18;:41::i;:::-;5678:225;;;5803:89;5841:10;5869:9;5803:20;:89::i;:::-;5966:18;;;;:10;:18;:::i;:::-;5918:76;;;5943:9;5918:76;;;;1955:25:30;;1943:2;1928:18;;1809:177;5918:76:20;;;;;;;;-1:-1:-1;6012:4:20;;5055:968;-1:-1:-1;;;;5055:968:20:o;1801:1703::-;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:20;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:13;2820:30:20;;;;;;;;;2793:24;;2820:30;;;;;;;;;;-1:-1:-1;;2793:57:20;-1:-1:-1;2864:276:20;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:130;;;7538:25:30;;;3433:10:20;7594:2:30;7579:18;;7572:83;7671:18;;;7664:34;;;3345:130:20;;;;;;;;7526:2:30;7511:18;3345:130:20;;;;;;;-1:-1:-1;3493:4:20;;1801:1703;-1:-1:-1;;;;;;;1801:1703:20:o;3510:1539::-;3660:4;3680:17;3707;3734:16;3774:10;3921:124;3973:10;4001:8;4027:4;3921:34;:124::i;:::-;3798:247;;-1:-1:-1;3798:247:20;;-1:-1:-1;3798:247:20;;-1:-1:-1;3798:247:20;-1:-1:-1;3798:247:20;4060:57;;4097:5;4090:12;;;;;;;;4060:57;3760:367;4137:24;4164:60;4183:10;4195:8;4205:5;4212:11;4164:18;:60::i;:::-;4137:87;-1:-1:-1;4270:1:20;4239:19;;;;;;;;:::i;:::-;:33;;;4235:370;;4288:45;4312:10;4324:8;4288:23;:45::i;:::-;4235:370;;;4391:30;;;14291:4:13;4391:30:20;;;;;;;;;4364:24;;4391:30;;;;;;;;;;-1:-1:-1;4391:30:20;4364:57;;4435:159;4478:10;4506:8;4532:19;4569:11;4435:25;:159::i;:::-;4350:255;4235:370;4619:11;4615:299;;;4646:257;4696:15;4729:16;;;;;;;;:::i;:::-;4771:4;4794:9;4821:21;;;;4860:1;4887;4646:32;:257::i;:::-;4929:91;;;7905:25:30;;;7961:2;7946:18;;7939:34;;;8016:14;;8009:22;7989:18;;;7982:50;4929:91:20;;;;;;;7893:2:30;4929:91:20;;;-1:-1:-1;5038:4:20;;3510:1539;-1:-1:-1;;;;;;;3510:1539:20:o;3829:695:18:-;3913:21;3948:23;3985:25;4093:18;:16;:18::i;:::-;4324:26;;;2270:1:13;4324:26:18;;;;;;;;;4075:36;;-1:-1:-1;4228:19:18;;-1:-1:-1;4324:26:18;;;;;;;;-1:-1:-1;;4480:27:18;4470:7;4457:21;;4450:58;-1:-1:-1;4457:21:18;3829:695;;-1:-1:-1;3829:695:18;:::o;1511:215:22:-;2345:1:13;1636:16:22;;:32;1632:88;;1691:18;;;;;;;;;;;;;;1632:88;1511:215::o;3215:1039:27:-;3419:23;;3393:10;;3419:23;;;;;3415:168;;;3462:15;3458:88;;;3504:27;;;;;;;;1955:25:30;;;1928:18;;3504:27:27;1809:177:30;3458:88:27;-1:-1:-1;3567:5:27;3560:12;;3415:168;3597:23;;;;;;;3593:173;;;3640:15;3636:93;;;3682:32;;;;;;;;1955:25:30;;;1928:18;;3682:32:27;1809:177:30;3593:173:27;3780:8;3776:449;;;3808:21;;;;:25;3804:192;;3857:15;3853:99;;;3903:30;;;;;;;;1955:25:30;;;1928:18;;3903:30:27;1809:177:30;3804:192:27;3776:449;;;4030:11;:21;;;4055:1;4030:26;4026:189;;4080:15;4076:95;;;4126:26;;;;;;;;1955:25:30;;;1928:18;;4126:26:27;1809:177:30;4026:189:27;-1:-1:-1;4243:4:27;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:18;4937:13;5124:25;;;5249:29;5242:54;;;;5601:23;5594:42;;;5724:25;5711:39;;5829:34;;;5711:39;4817:1062;3014:50:27;2997:67;;3153:49;3175:7;3184:6;3192:9;3153:21;:49::i;:::-;2770:439;2640:569;;;:::o;4418:1334:21:-;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:21;4877;;4872:193;;4920:15;4916:89;;;4962:28;;;;;;;;1955:25:30;;;1928:18;;4962:28:21;1809:177:30;4916:89:21;-1:-1:-1;5048:5:21;;-1:-1:-1;5018:36:21;;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:21;;-1:-1:-1;5306:36:21;;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:30;;;1928:18;;5502:26:21;1809:177:30;5363:240:21;5613:32;5624:11;:20;;;5613:10;:32::i;:::-;5656:30;;5696:27;;;;;;-1:-1:-1;;4418:1334:21;;;;;;:::o;2173:3517:17:-;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:13;4888:24:17;: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;6029:552:20:-;6159:143;6193:23;;;;:15;:23;:::i;:::-;6283:9;6231:49;6257:23;;;;6231;;;;:49;:::i;:::-;:61;;;;:::i;:::-;6159:12;:143::i;:::-;6312:18;6384:9;6333:48;6358:23;;;;6333:22;;;;:48;:::i;:::-;:60;;;;:::i;:::-;6312:81;-1:-1:-1;6466:5:20;6429:34;6442:21;;;;6312:81;6429:34;:::i;:::-;:42;;;;:::i;:::-;6416:55;;:10;:55;:::i;:::-;6403:68;-1:-1:-1;6481:93:20;6515:24;;;;;;;;:::i;:::-;6554:10;6481:12;:93::i;:::-;6149:432;6029:552;;:::o;6587:497::-;6714:119;6740:19;;;;;;;;:::i;:::-;6761:18;;;;:10;:18;:::i;:::-;6823:9;6781:39;6802:18;;;;6781;;;;:39;:::i;:::-;:51;;;;:::i;:::-;6714:25;:119::i;:::-;6844:18;6906:9;6865:38;6885:18;;;;6865:17;;;;:38;:::i;:::-;:50;;;;:::i;:::-;6844:71;-1:-1:-1;6983:5:20;6951:29;6964:16;;;;6844:71;6951:29;:::i;:::-;:37;;;;:::i;:::-;6938:50;;:10;:50;:::i;:::-;6925:63;-1:-1:-1;6998:79:20;7024:19;;;;;;;;:::i;:::-;7045;;;;;;;;:::i;:::-;7066:10;6998:25;:79::i;523:1861:21:-;675:17;;;814:5;858:142;887:25;;;;930:23;;;;971:15;858:11;:142::i;:::-;840:225;;-1:-1:-1;1041:1:21;;-1:-1:-1;1041:1:21;;-1:-1:-1;1041:1:21;;-1:-1:-1;1025:29:21;;840:225;1105:1;1079:15;:23;;;:27;1075:185;;;1126:15;1122:85;;;1168:24;;;;;;;;;;;;;;1122:85;-1:-1:-1;1236:1:21;;-1:-1:-1;1236:1:21;;-1:-1:-1;1236:1:21;;-1:-1:-1;1220:29:21;;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:21;1270:117;1432:23;1576:4;1598:15;1484:18;:143::i;:::-;1466:225;;-1:-1:-1;1671:5:21;;-1:-1:-1;1671:5:21;;-1:-1:-1;1652:28:21;;-1:-1:-1;1652:28:21;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:21;;-1:-1:-1;;;;523:1861:21:o;661:1134:20:-;856:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:19:20;891:15;;936:25;953:8;936:14;;;;:25;:::i;:::-;989:18;;;;972:14;;;:35;916:45;-1:-1:-1;1017:772:20;;;;1087:31;1104:14;;;;1087;;;;:31;:::i;:::-;1074:45;;:9;:45;:::i;:::-;1057:62;;:14;;;;:62;:::i;:::-;1047:72;-1:-1:-1;1175:30:20;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:20;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:20;;;:28;;1754:10;;;;;1736:14;:28;;1754:10;;1736:28;:::i;:::-;;;-1:-1:-1;1662:117:20;881:914;;661:1134;;;;;;:::o;7090:882::-;7281:16;;7257:9;;7281:33;-1:-1:-1;7277:98:20;;;7337:27;;;;;;;;;;;;;;7277:98;7385:100;7419:23;;;;:15;:23;:::i;:::-;7457:8;:18;;;7385:12;:100::i;:::-;7496:102;7530:24;;;;;;;;:::i;:::-;7569:8;:19;;;7496:12;:102::i;:::-;7613:17;;;;:21;7609:162;;7650:110;7688:22;;;;;;;;:::i;:::-;7729:8;:17;;;7650:12;:110::i;:::-;7799:16;;7781:34;;;;:::i;:::-;;-1:-1:-1;7830:18:20;;7826:140;;7892:49;7913:10;7926:14;7892:12;:49::i;9569:1092:17:-;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;7978:1787:20:-;8194:10;8179:12;8230:19;;;;;;;;:::i;:::-;8214:35;-1:-1:-1;8260:176:20;8214:35;8307:4;8325:19;;;;;;;;:::i;:::-;8358:8;:19;;;8391:10;8415:11;8260:14;:176::i;:::-;8451:17;;;;:21;8447:252;;8488:200;8520:5;8543:4;8565:17;;;;;;;;:::i;:::-;8600:8;:17;;;8635:10;8663:11;8488:14;:200::i;:::-;8765:17;;;;8743:19;;;;8724:16;;8709:12;;8765:17;8724:38;;;:::i;:::-;:58;;;;:::i;:::-;8709:73;;8804:8;:18;;;8796:4;:26;8792:967;;8838:202;8870:5;8893:4;8915:18;;;;:10;:18;:::i;:::-;8951:8;:18;;;8987:10;9015:11;8838:14;:202::i;:::-;9062:18;;;;9054:26;;;;:::i;:::-;;-1:-1:-1;9098:8:20;;9094:258;;9126:211;9162:5;9189:4;9223;9250;9276:10;9308:11;9126:14;:211::i;:::-;9365:28;9381:11;9365:15;:28::i;8792:967::-;9424:188;9456:5;9479:4;9501:18;;;;:10;:18;:::i;:::-;9537:4;9559:10;9587:11;9424:14;:188::i;:::-;9626:28;9642:11;9626:15;:28::i;:::-;9669:79;9695:5;9702:18;;;;:10;:18;:::i;:::-;9743:4;9722:8;:18;;;:25;;;;:::i;2390:2022:21:-;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:21;2905;;2900:201;;2948:15;2944:89;;;2990:28;;;;;;;;1955:25:30;;;1928:18;;2990:28:21;1809:177:30;2944:89:21;-1:-1:-1;3073:1:21;;-1:-1:-1;3073:1:21;;-1:-1:-1;3073:1:21;;-1:-1:-1;3046:44:21;;2900:201;3129:144;3165:9;3192:11;3221:5;3244:15;3129:18;:144::i;:::-;3111:242;;-1:-1:-1;3325:1:21;;-1:-1:-1;3325:1:21;;-1:-1:-1;3325:1:21;;-1:-1:-1;3298:44:21;;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:30;;;1928:18;;3498:38:21;1809:177:30;3363:256:21;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:30;;;1928:18;;3780:23:21;1809:177:30;3629:257:21;3921:8;3896:11;:21;;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;;3943:21:21;;;;3968:18;;;;3943:43;;3939:401;;4002:30;;;;;;;;:23;4089:20;;;4028:4;;-1:-1:-1;4078:32:21;;: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:21;;-1:-1:-1;2390:2022:21;;;;;;;;:::o;3281:208:18:-;3332:7;3402:9;3385:13;:26;:97;;3458:24;1203:187:12;;;1231:24;1203:187;;;13024:25:30;1273:10:12;13065:18:30;;;13058:34;;;;1301:13:12;13108:18:30;;;13101:34;1332:13:12;13151:18:30;;;13144:34;1371:4:12;13194:19:30;;;13187:84;1154:7:12;;12996:19:30;;1203:187:12;;;;;;;;;;;;1180:220;;;;;;1173:227;;1097:310;;3385:97:18;-1:-1:-1;3426:17:18;;3281:208::o;1066:9919:24:-;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:24;;;5739:34;;;5901:24;5886:40;;5854:138;-1:-1:-1;;6158:8:24;2802:3382;6453:27;;6482:13;;;6449:47;;-1:-1:-1;6449:47:24;;-1:-1:-1;6602:3944:24;;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:23;1030:47;;;;;;;;1955:25:30;;;1051:11:23;1030:38;;;;;1928:18:30;;1030:47:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:110;:::o;17154:1355:17:-;1774:21:18;1768:28;;1392:19;1983:18;1980:41;17371:15:17;1970:52:18;;;2117:7;2110:27;;;1537;2232:41;;2660:31;2539:28;2445:264;2899:48;;;;2800:23;2379:458;17371:44:17;;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:30;5920:55;;18264:29:17;;;5902:74:30;5875:18;;18264:29:17;5756:226:30;18050:254:17;18391:43;;;18401:33;18391:43;18387:116;;18457:35;;;;;;;;11339:25:30;;;11412:42;11400:55;;11380:18;;;11373:83;11312:18;;18457:35:17;11165:297:30;18387:116:17;17293:1216;;;17154:1355;;;:::o;21079:4914:25:-;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:25;25857:41;-1:-1:-1;;25975:1:25;25965:8;25958:19;-1:-1:-1;;21079:4914:25: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:25;31884:26;;;;31952:8;31945:26;32013:8;32006:26;32132:21;32125:41;-1:-1:-1;;32243:1:25;-1:-1:-1;32226:19:25;-1:-1:-1;;;26641:5620:25:o;5921:742:17:-;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;;;;;11679:42:30;11667:55;;6607:39:17;;;11649:74:30;11739:18;;;11732:34;;;11622:18;;6607:39:17;11467:305:30;10946:9529:25;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:25;20339:41;-1:-1:-1;;20457:1:25;20447:8;20440:19;-1:-1:-1;10946:9529:25:o;1338:627:27:-;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:27;1862:12;;1571:314;-1:-1:-1;1954:4:27;1338:627;;;;;:::o;450:358:23:-;624:72;;;;;671:4;624:72;;;12040:34:30;624:38:23;12110:15:30;;;12090:18;;;12083:43;12142:18;;;12135:34;;;591:7:23;;;;645:11;624:38;;;;11952:18:30;;624:72:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;610:86;-1:-1:-1;706:30:23;716:11;706:30;;610:86;742:2;753:26;764:15;753:8;:26;:::i;:::-;706:75;;;;;;;;;;;;;12569:25:30;;;;12642:42;12630:55;;;12610:18;;;12603:83;12734:18;12722:31;12702:18;;;12695:59;12542:18;;706:75:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;798:3:23;;450:358;-1:-1:-1;;;;;;;;450:358:23:o;13407:458:17:-;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:13;20721:11:17;:18;:41;20717:1009;;-1:-1:-1;20916:16:17;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:17;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:13;14354:11:17;: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:23:-;901:60;;;;;;;;12569:25:30;;;901:30:23;12630:55:30;;;12610:18;;;12603:83;12734:18;12722:31;;12702:18;;;12695:59;911:11:23;901:30;;;;12542:18:30;;901:60:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:2237:19;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:10;596:6;606:1;596:11;592:68;;630:19;;;;;;;;;;;;;;592:68;463:203;:::o;1325:9615:25:-;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:25;10804:41;-1:-1:-1;;10922:1:25;10912:8;10905:19;-1:-1:-1;;1325:9615:25:o;15371:1113:17:-;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:17;16428:40;;-1:-1:-1;15371:1113:17:o;14:640:30:-;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:30;;-1:-1:-1;;;;14:640:30: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:30;;851:180;-1:-1:-1;851:180:30: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:30;2651:164;-1:-1:-1;2651:164:30: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:30: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:30;4493:19;;;4480:33;;4126:393;-1:-1:-1;;;4126:393:30: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:30: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:30;6988:30;;6985:50;;;7031:1;7028;7021:12;6985:50;7064:4;7052:17;;-1:-1:-1;7095:14:30;7091:27;;;7081:38;;7078:58;;;7132:1;7129;7122:12;7078:58;6562:580;;;;;:::o;8043:401::-;8110:2;8104:9;8152:3;8140:16;;8186:18;8171:34;;8207:22;;;8168:62;8165:242;;;8263:77;8260:1;8253:88;8364:4;8361:1;8354:15;8392:4;8389:1;8382:15;8165:242;8423:2;8416:22;8043:401;:::o;8449:1558::-;8541:6;8594:3;8582:9;8573:7;8569:23;8565:33;8562:53;;;8611:1;8608;8601:12;8562:53;8637:17;;:::i;:::-;8677:29;8696:9;8677:29;:::i;:::-;8670:5;8663:44;8739:38;8773:2;8762:9;8758:18;8739:38;:::i;:::-;8734:2;8727:5;8723:14;8716:62;8838:2;8827:9;8823:18;8810:32;8805:2;8798:5;8794:14;8787:56;8875:38;8909:2;8898:9;8894:18;8875:38;:::i;:::-;8870:2;8863:5;8859:14;8852:62;8947:39;8981:3;8970:9;8966:19;8947:39;:::i;:::-;8941:3;8934:5;8930:15;8923:64;9020:39;9054:3;9043:9;9039:19;9020:39;:::i;:::-;9014:3;9003:15;;8996:64;9121:3;9106:19;;;9093:33;9076:15;;;9069:58;9188:3;9173:19;;;9160:33;9143:15;;;9136:58;9213:3;9261:18;;;9248:32;9232:14;;;9225:56;9300:3;9348:18;;;9335:32;9319:14;;;9312:56;9387:3;9435:18;;;9422:32;9406:14;;;9399:56;9474:3;9522:18;;;9509:32;9493:14;;;9486:56;9561:3;9609:18;;;9596:32;9580:14;;;9573:56;9648:3;9696:18;;;9683:32;9667:14;;;9660:56;9735:3;9783:18;;;9770:32;9754:14;;;9747:56;9822:3;9870:18;;;9857:32;9841:14;;;9834:56;9909:3;9957:18;;;9944:32;9928:14;;;9921:56;;;;-1:-1:-1;9007:5:30;8449:1558;-1:-1:-1;8449:1558:30:o;10012:184::-;10064:77;10061:1;10054:88;10161:4;10158:1;10151:15;10185:4;10182:1;10175:15;10201:228;10241:7;10367:1;10299:66;10295:74;10292:1;10289:81;10284:1;10277:9;10270:17;10266:105;10263:131;;;10374:18;;:::i;:::-;-1:-1:-1;10414:9:30;;10201:228::o;10434:128::-;10474:3;10505:1;10501:6;10498:1;10495:13;10492:39;;;10511:18;;:::i;:::-;-1:-1:-1;10547:9:30;;10434:128::o;10567:184::-;10619:77;10616:1;10609:88;10716:4;10713:1;10706:15;10740:4;10737:1;10730:15;10756:274;10796:1;10822;10812:189;;10857:77;10854:1;10847:88;10958:4;10955:1;10948:15;10986:4;10983:1;10976:15;10812:189;-1:-1:-1;11015:9:30;;10756:274::o;11035:125::-;11075:4;11103:1;11100;11097:8;11094:34;;;11108:18;;:::i;:::-;-1:-1:-1;11145:9:30;;11035:125::o;12180:184::-;12250:6;12303:2;12291:9;12282:7;12278:23;12274:32;12271:52;;;12319:1;12316;12309:12;12271:52;-1:-1:-1;12342:16:30;;12180:184;-1:-1:-1;12180:184:30:o"},"gasEstimates":{"creation":{"codeDepositCost":"2581400","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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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            msg.sender,\\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\":\"0xeb45a47def0e63c67a9df11e8a95564f605a27e6f099c937ede116ce38a16971\",\"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":3994,"contract":"contracts/BNPL.sol:BNPL","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":1672,"contract":"contracts/BNPL.sol:BNPL","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":3178,"contract":"contracts/BNPL.sol:BNPL","label":"_orderStatus","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(OrderStatus)1658_storage)"},{"astId":648,"contract":"contracts/BNPL.sol:BNPL","label":"_orderStatus","offset":0,"slot":"3","type":"t_mapping(t_bytes32,t_struct(OrderStatus)1658_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)1658_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OrderStatus)","numberOfBytes":"32","value":"t_struct(OrderStatus)1658_storage"},"t_struct(OrderStatus)1658_storage":{"encoding":"inplace","label":"struct OrderStatus","members":[{"astId":1643,"contract":"contracts/BNPL.sol:BNPL","label":"isValidated","offset":0,"slot":"0","type":"t_bool"},{"astId":1645,"contract":"contracts/BNPL.sol:BNPL","label":"isCancelled","offset":1,"slot":"0","type":"t_bool"},{"astId":1647,"contract":"contracts/BNPL.sol:BNPL","label":"isFinalized","offset":2,"slot":"0","type":"t_bool"},{"astId":1649,"contract":"contracts/BNPL.sol:BNPL","label":"isBroken","offset":3,"slot":"0","type":"t_bool"},{"astId":1651,"contract":"contracts/BNPL.sol:BNPL","label":"fulfiller","offset":4,"slot":"0","type":"t_address"},{"astId":1653,"contract":"contracts/BNPL.sol:BNPL","label":"startedAt","offset":0,"slot":"1","type":"t_uint256"},{"astId":1655,"contract":"contracts/BNPL.sol:BNPL","label":"shadowId","offset":0,"slot":"2","type":"t_uint256"},{"astId":1657,"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/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":"address","name":"fulfiller","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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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/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":"address","name":"fulfiller","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":{"@_2204":{"entryPoint":null,"id":2204,"parameterSlots":1,"returnSlots":0},"@_4003":{"entryPoint":null,"id":4003,"parameterSlots":0,"returnSlots":0},"@_617":{"entryPoint":null,"id":617,"parameterSlots":1,"returnSlots":0},"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":270,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_952":{"entryPoint":null,"id":952,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:30","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:30"},"nodeType":"YulFunctionCall","src":"143:12:30"},"nodeType":"YulExpressionStatement","src":"143:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:30"},"nodeType":"YulFunctionCall","src":"112:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:30"},"nodeType":"YulFunctionCall","src":"108:32:30"},"nodeType":"YulIf","src":"105:52:30"},{"nodeType":"YulVariableDeclaration","src":"166:29:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:30"},"nodeType":"YulFunctionCall","src":"179:16:30"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:30"},"nodeType":"YulFunctionCall","src":"260:12:30"},"nodeType":"YulExpressionStatement","src":"260:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:30"},"nodeType":"YulFunctionCall","src":"239:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:30"},"nodeType":"YulFunctionCall","src":"235:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:30"},"nodeType":"YulFunctionCall","src":"224:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:30"},"nodeType":"YulFunctionCall","src":"214:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:30"},"nodeType":"YulFunctionCall","src":"207:50:30"},"nodeType":"YulIf","src":"204:70:30"},{"nodeType":"YulAssignment","src":"283:15:30","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:30"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:30","type":""}],"src":"14:290:30"},{"body":{"nodeType":"YulBlock","src":"407:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:30"},"nodeType":"YulFunctionCall","src":"455:12:30"},"nodeType":"YulExpressionStatement","src":"455:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:30"},"nodeType":"YulFunctionCall","src":"424:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:30"},"nodeType":"YulFunctionCall","src":"420:32:30"},"nodeType":"YulIf","src":"417:52:30"},{"nodeType":"YulAssignment","src":"478:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:30"},"nodeType":"YulFunctionCall","src":"488:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:30"}]},{"nodeType":"YulAssignment","src":"513:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:30"},"nodeType":"YulFunctionCall","src":"529:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:30"},"nodeType":"YulFunctionCall","src":"523:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:30","type":""}],"src":"309:245:30"},{"body":{"nodeType":"YulBlock","src":"614:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:30"},"nodeType":"YulFunctionCall","src":"624:32:30"},"nodeType":"YulExpressionStatement","src":"624:32:30"},{"nodeType":"YulAssignment","src":"665:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:30"},"nodeType":"YulFunctionCall","src":"672:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:30","type":""}],"src":"559:131:30"},{"body":{"nodeType":"YulBlock","src":"750:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:30"},"nodeType":"YulFunctionCall","src":"760:31:30"},"nodeType":"YulExpressionStatement","src":"760:31:30"},{"nodeType":"YulAssignment","src":"800:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:30"},"nodeType":"YulFunctionCall","src":"807:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:30","type":""}],"src":"695:130:30"},{"body":{"nodeType":"YulBlock","src":"885:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:30"},"nodeType":"YulFunctionCall","src":"895:30:30"},"nodeType":"YulExpressionStatement","src":"895:30:30"},{"nodeType":"YulAssignment","src":"934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:30"},"nodeType":"YulFunctionCall","src":"941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:30","type":""}],"src":"830:129:30"},{"body":{"nodeType":"YulBlock","src":"1019:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:30"},"nodeType":"YulFunctionCall","src":"1029:29:30"},"nodeType":"YulExpressionStatement","src":"1029:29:30"},{"nodeType":"YulAssignment","src":"1067:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:30"},"nodeType":"YulFunctionCall","src":"1074:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:30","type":""}],"src":"964:128:30"},{"body":{"nodeType":"YulBlock","src":"1152:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:30"},"nodeType":"YulFunctionCall","src":"1162:31:30"},"nodeType":"YulExpressionStatement","src":"1162:31:30"},{"nodeType":"YulAssignment","src":"1202:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:30"},"nodeType":"YulFunctionCall","src":"1209:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:30","type":""}],"src":"1097:130:30"},{"body":{"nodeType":"YulBlock","src":"1287:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:30"},"nodeType":"YulFunctionCall","src":"1297:27:30"},"nodeType":"YulExpressionStatement","src":"1297:27:30"},{"nodeType":"YulAssignment","src":"1333:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:30"},"nodeType":"YulFunctionCall","src":"1340:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:30","type":""}],"src":"1232:126:30"},{"body":{"nodeType":"YulBlock","src":"1418:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:30"},"nodeType":"YulFunctionCall","src":"1428:35:30"},"nodeType":"YulExpressionStatement","src":"1428:35:30"},{"nodeType":"YulAssignment","src":"1472:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:30"},"nodeType":"YulFunctionCall","src":"1479:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:30","type":""}],"src":"1363:134:30"},{"body":{"nodeType":"YulBlock","src":"1557:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:30"},"nodeType":"YulFunctionCall","src":"1567:28:30"},"nodeType":"YulExpressionStatement","src":"1567:28:30"},{"nodeType":"YulAssignment","src":"1604:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:30"},"nodeType":"YulFunctionCall","src":"1611:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:30","type":""}],"src":"1502:127:30"},{"body":{"nodeType":"YulBlock","src":"1689:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:30"},"nodeType":"YulFunctionCall","src":"1699:34:30"},"nodeType":"YulExpressionStatement","src":"1699:34:30"},{"nodeType":"YulAssignment","src":"1742:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:30"},"nodeType":"YulFunctionCall","src":"1749:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:30","type":""}],"src":"1634:133:30"},{"body":{"nodeType":"YulBlock","src":"1827:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:30"},"nodeType":"YulFunctionCall","src":"1837:30:30"},"nodeType":"YulExpressionStatement","src":"1837:30:30"},{"nodeType":"YulAssignment","src":"1876:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:30"},"nodeType":"YulFunctionCall","src":"1883:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:30","type":""}],"src":"1772:129:30"},{"body":{"nodeType":"YulBlock","src":"1961:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:30"},"nodeType":"YulFunctionCall","src":"1971:16:30"},"nodeType":"YulExpressionStatement","src":"1971:16:30"},{"nodeType":"YulAssignment","src":"1996:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:30"},"nodeType":"YulFunctionCall","src":"2003:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:30","type":""}],"src":"1906:114:30"},{"body":{"nodeType":"YulBlock","src":"4136:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:30"},"nodeType":"YulFunctionCall","src":"4146:31:30"},"nodeType":"YulExpressionStatement","src":"4146:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:30"},"nodeType":"YulFunctionCall","src":"4193:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:30"},"nodeType":"YulFunctionCall","src":"4186:40:30"},"nodeType":"YulExpressionStatement","src":"4186:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:30"},"nodeType":"YulFunctionCall","src":"4242:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:30"},"nodeType":"YulFunctionCall","src":"4235:38:30"},"nodeType":"YulExpressionStatement","src":"4235:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:30"},"nodeType":"YulFunctionCall","src":"4289:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:30"},"nodeType":"YulFunctionCall","src":"4282:43:30"},"nodeType":"YulExpressionStatement","src":"4282:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:30"},"nodeType":"YulFunctionCall","src":"4341:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:30"},"nodeType":"YulFunctionCall","src":"4334:41:30"},"nodeType":"YulExpressionStatement","src":"4334:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:30"},"nodeType":"YulFunctionCall","src":"4391:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:30"},"nodeType":"YulFunctionCall","src":"4384:39:30"},"nodeType":"YulExpressionStatement","src":"4384:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:30"},"nodeType":"YulFunctionCall","src":"4439:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:30"},"nodeType":"YulFunctionCall","src":"4432:41:30"},"nodeType":"YulExpressionStatement","src":"4432:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:30"},"nodeType":"YulFunctionCall","src":"4489:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:30"},"nodeType":"YulFunctionCall","src":"4482:43:30"},"nodeType":"YulExpressionStatement","src":"4482:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:30"},"nodeType":"YulFunctionCall","src":"4541:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:30"},"nodeType":"YulFunctionCall","src":"4534:41:30"},"nodeType":"YulExpressionStatement","src":"4534:41:30"},{"nodeType":"YulAssignment","src":"4584:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:30"},"nodeType":"YulFunctionCall","src":"4921:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:30"},"nodeType":"YulFunctionCall","src":"4891:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:30"},"nodeType":"YulFunctionCall","src":"4861:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:30"},"nodeType":"YulFunctionCall","src":"4831:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:30"},"nodeType":"YulFunctionCall","src":"4801:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:30"},"nodeType":"YulFunctionCall","src":"4771:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:30"},"nodeType":"YulFunctionCall","src":"4741:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:30"},"nodeType":"YulFunctionCall","src":"4711:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:30"},"nodeType":"YulFunctionCall","src":"4681:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:30"},"nodeType":"YulFunctionCall","src":"4651:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:30"},"nodeType":"YulFunctionCall","src":"4621:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:30"},"nodeType":"YulFunctionCall","src":"4591:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:30","type":""}],"src":"2025:2926:30"},{"body":{"nodeType":"YulBlock","src":"5653:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:30"},"nodeType":"YulFunctionCall","src":"5663:28:30"},"nodeType":"YulExpressionStatement","src":"5663:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:30"},"nodeType":"YulFunctionCall","src":"5707:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:30"},"nodeType":"YulFunctionCall","src":"5700:36:30"},"nodeType":"YulExpressionStatement","src":"5700:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:30"},"nodeType":"YulFunctionCall","src":"5752:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:30"},"nodeType":"YulFunctionCall","src":"5745:39:30"},"nodeType":"YulExpressionStatement","src":"5745:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:30"},"nodeType":"YulFunctionCall","src":"5800:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:30"},"nodeType":"YulFunctionCall","src":"5793:40:30"},"nodeType":"YulExpressionStatement","src":"5793:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:30"},"nodeType":"YulFunctionCall","src":"5849:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:30"},"nodeType":"YulFunctionCall","src":"5842:49:30"},"nodeType":"YulExpressionStatement","src":"5842:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:30"},"nodeType":"YulFunctionCall","src":"5907:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:30"},"nodeType":"YulFunctionCall","src":"5900:25:30"},"nodeType":"YulExpressionStatement","src":"5900:25:30"},{"nodeType":"YulAssignment","src":"5934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:30"},"nodeType":"YulFunctionCall","src":"5941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:30","type":""}],"src":"4956:1003:30"},{"body":{"nodeType":"YulBlock","src":"6177:276:30","statements":[{"nodeType":"YulAssignment","src":"6187:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:30"},"nodeType":"YulFunctionCall","src":"6195:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:30"},"nodeType":"YulFunctionCall","src":"6223:25:30"},"nodeType":"YulExpressionStatement","src":"6223:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:30"},"nodeType":"YulFunctionCall","src":"6264:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:30"},"nodeType":"YulFunctionCall","src":"6257:34:30"},"nodeType":"YulExpressionStatement","src":"6257:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:30"},"nodeType":"YulFunctionCall","src":"6307:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:30"},"nodeType":"YulFunctionCall","src":"6300:34:30"},"nodeType":"YulExpressionStatement","src":"6300:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:30"},"nodeType":"YulFunctionCall","src":"6350:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:30"},"nodeType":"YulFunctionCall","src":"6343:34:30"},"nodeType":"YulExpressionStatement","src":"6343:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:30"},"nodeType":"YulFunctionCall","src":"6393:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:30"},"nodeType":"YulFunctionCall","src":"6430:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:30"},"nodeType":"YulFunctionCall","src":"6426:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:30"},"nodeType":"YulFunctionCall","src":"6414:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:30"},"nodeType":"YulFunctionCall","src":"6386:61:30"},"nodeType":"YulExpressionStatement","src":"6386:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:30","type":""}],"src":"5964:489:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"61018060405234801561001157600080fd5b5060405161054038038061054083398101604081905261003091610462565b808061003a61010e565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fc9190610492565b506101605250506001600055506104b6565b600080808061013d60408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3945060009161039791016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b60006020828403121561047457600080fd5b81516001600160a01b038116811461048b57600080fd5b9392505050565b600080604083850312156104a557600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051603f6105016000396000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea26469706673582212206823dd52aa914ed1b45e429e56feca706d41090f3f6495c1079a58f0f0fba2c864736f6c634300080e0033","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 PUSH9 0x23DD52AA914ED1B45E TIMESTAMP SWAP15 JUMP INVALID 0xCA PUSH17 0x6D41090F3F6495C1079A58F0F0FBA2C864 PUSH20 0x6F6C634300080E00330000000000000000000000 ","sourceMap":"266:402:10:-:0;;;366:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;432:17;;786:19:12;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6223:25:30;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:30;;6300:34;;;;6350:18;;;6343:34;1371:4:12;6393:19:30;;;6386:61;1203:187:12;;;;;;;;;;6195:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;;2345:1:13;658:16:22;:31;-1:-1:-1;266:402:10;;1527:1491:12;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:12;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4146:31:30;;-1:-1:-1;;;4202:2:30;4193:12;;4186:40;-1:-1:-1;;;4251:2:30;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:30;4341:12;;4334:41;-1:-1:-1;;;4400:2:30;4391:12;;4384:39;-1:-1:-1;;;4448:2:30;4439:12;;4432:41;-1:-1:-1;;;4498:3:30;4489:13;;4482:43;-1:-1:-1;;;4550:3:30;4541:13;;4534:41;-1:-1:-1;;;4930:3:30;4921:13;;624:32;-1:-1:-1;;;672:12:30;;;760:31;-1:-1:-1;;;807:12:30;;;895:30;-1:-1:-1;;;941:12:30;;;1029:29;-1:-1:-1;;;1074:12:30;;;1162:31;-1:-1:-1;;;1209:12:30;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:30;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:30;;;1837:30;-1:-1:-1;;;1883:12:30;;;1971:16;2003:11;;;2025:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5663:28:30;-1:-1:-1;;;5707:12:30;;;5700:36;-1:-1:-1;;;5752:12:30;;;5745:39;-1:-1:-1;;;5800:12:30;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:30;;;5900:25;1909:724:12;-1:-1:-1;5941:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:30:-;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:30;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:30: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:30;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:30:o;5964:489::-;266:402:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212206823dd52aa914ed1b45e429e56feca706d41090f3f6495c1079a58f0f0fba2c864736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x23DD52AA914ED1B45E TIMESTAMP SWAP15 JUMP INVALID 0xCA PUSH17 0x6D41090F3F6495C1079A58F0F0FBA2C864 PUSH20 0x6F6C634300080E00330000000000000000000000 ","sourceMap":"266:402:10:-: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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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":3994,"contract":"contracts/lib/Assertions.sol:Assertions","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":1672,"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":"address","name":"fulfiller","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":{"@_1739":{"entryPoint":null,"id":1739,"parameterSlots":1,"returnSlots":0},"@_2204":{"entryPoint":null,"id":2204,"parameterSlots":1,"returnSlots":0},"@_2375":{"entryPoint":null,"id":2375,"parameterSlots":2,"returnSlots":0},"@_3192":{"entryPoint":null,"id":3192,"parameterSlots":2,"returnSlots":0},"@_4003":{"entryPoint":null,"id":4003,"parameterSlots":0,"returnSlots":0},"@_4071":{"entryPoint":null,"id":4071,"parameterSlots":1,"returnSlots":0},"@_4561":{"entryPoint":null,"id":4561,"parameterSlots":1,"returnSlots":0},"@_617":{"entryPoint":null,"id":617,"parameterSlots":1,"returnSlots":0},"@_660":{"entryPoint":null,"id":660,"parameterSlots":2,"returnSlots":0},"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":311,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_952":{"entryPoint":null,"id":952,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:30","statements":[{"nodeType":"YulAssignment","src":"84:22:30","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:30"},"nodeType":"YulFunctionCall","src":"93:13:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:30"}]},{"body":{"nodeType":"YulBlock","src":"169:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:30"},"nodeType":"YulFunctionCall","src":"171:12:30"},"nodeType":"YulExpressionStatement","src":"171:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:30"},"nodeType":"YulFunctionCall","src":"150:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:30"},"nodeType":"YulFunctionCall","src":"146:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:30"},"nodeType":"YulFunctionCall","src":"135:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:30"},"nodeType":"YulFunctionCall","src":"125:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:30"},"nodeType":"YulFunctionCall","src":"118:50:30"},"nodeType":"YulIf","src":"115:70:30"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:30","type":""}],"src":"14:177:30"},{"body":{"nodeType":"YulBlock","src":"294:195:30","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:30"},"nodeType":"YulFunctionCall","src":"342:12:30"},"nodeType":"YulExpressionStatement","src":"342:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:30"},"nodeType":"YulFunctionCall","src":"311:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:30"},"nodeType":"YulFunctionCall","src":"307:32:30"},"nodeType":"YulIf","src":"304:52:30"},{"nodeType":"YulAssignment","src":"365:50:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:30"},"nodeType":"YulFunctionCall","src":"375:40:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:30"}]},{"nodeType":"YulAssignment","src":"424:59:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:30"},"nodeType":"YulFunctionCall","src":"464:18:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:30"},"nodeType":"YulFunctionCall","src":"434:49:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:30","type":""}],"src":"196:293:30"},{"body":{"nodeType":"YulBlock","src":"592:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"638:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"647:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"650:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"640:6:30"},"nodeType":"YulFunctionCall","src":"640:12:30"},"nodeType":"YulExpressionStatement","src":"640:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"613:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"609:3:30"},"nodeType":"YulFunctionCall","src":"609:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"634:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"605:3:30"},"nodeType":"YulFunctionCall","src":"605:32:30"},"nodeType":"YulIf","src":"602:52:30"},{"nodeType":"YulAssignment","src":"663:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"679:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"673:5:30"},"nodeType":"YulFunctionCall","src":"673:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"663:6:30"}]},{"nodeType":"YulAssignment","src":"698:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"718:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"729:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:30"},"nodeType":"YulFunctionCall","src":"714:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"708:5:30"},"nodeType":"YulFunctionCall","src":"708:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"698:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"550:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"561:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"573:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"581:6:30","type":""}],"src":"494:245:30"},{"body":{"nodeType":"YulBlock","src":"799:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"816:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"821:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:30"},"nodeType":"YulFunctionCall","src":"809:32:30"},"nodeType":"YulExpressionStatement","src":"809:32:30"},{"nodeType":"YulAssignment","src":"850:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"861:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"866:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"857:3:30"},"nodeType":"YulFunctionCall","src":"857:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"850:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"783:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"791:3:30","type":""}],"src":"744:131:30"},{"body":{"nodeType":"YulBlock","src":"935:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"952:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"957:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"945:6:30"},"nodeType":"YulFunctionCall","src":"945:31:30"},"nodeType":"YulExpressionStatement","src":"945:31:30"},{"nodeType":"YulAssignment","src":"985:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"996:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1001:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"992:3:30"},"nodeType":"YulFunctionCall","src":"992:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"985:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"919:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"927:3:30","type":""}],"src":"880:130:30"},{"body":{"nodeType":"YulBlock","src":"1070:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1087:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"1092:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1080:6:30"},"nodeType":"YulFunctionCall","src":"1080:30:30"},"nodeType":"YulExpressionStatement","src":"1080:30:30"},{"nodeType":"YulAssignment","src":"1119:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1130:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1135:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:30"},"nodeType":"YulFunctionCall","src":"1126:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1119:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1054:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1062:3:30","type":""}],"src":"1015:129:30"},{"body":{"nodeType":"YulBlock","src":"1204:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1221:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1226:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1214:6:30"},"nodeType":"YulFunctionCall","src":"1214:29:30"},"nodeType":"YulExpressionStatement","src":"1214:29:30"},{"nodeType":"YulAssignment","src":"1252:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1268:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:30"},"nodeType":"YulFunctionCall","src":"1259:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1252:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1188:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1196:3:30","type":""}],"src":"1149:128:30"},{"body":{"nodeType":"YulBlock","src":"1337:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1354:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1359:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1347:6:30"},"nodeType":"YulFunctionCall","src":"1347:31:30"},"nodeType":"YulExpressionStatement","src":"1347:31:30"},{"nodeType":"YulAssignment","src":"1387:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:30"},"nodeType":"YulFunctionCall","src":"1394:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1321:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1329:3:30","type":""}],"src":"1282:130:30"},{"body":{"nodeType":"YulBlock","src":"1472:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1489:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1494:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1482:6:30"},"nodeType":"YulFunctionCall","src":"1482:27:30"},"nodeType":"YulExpressionStatement","src":"1482:27:30"},{"nodeType":"YulAssignment","src":"1518:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1529:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1534:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1525:3:30"},"nodeType":"YulFunctionCall","src":"1525:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1518:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1456:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1464:3:30","type":""}],"src":"1417:126:30"},{"body":{"nodeType":"YulBlock","src":"1603:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1620:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1625:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1613:6:30"},"nodeType":"YulFunctionCall","src":"1613:35:30"},"nodeType":"YulExpressionStatement","src":"1613:35:30"},{"nodeType":"YulAssignment","src":"1657:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1668:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1673:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1664:3:30"},"nodeType":"YulFunctionCall","src":"1664:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1657:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1587:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1595:3:30","type":""}],"src":"1548:134:30"},{"body":{"nodeType":"YulBlock","src":"1742:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1764:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:30"},"nodeType":"YulFunctionCall","src":"1752:28:30"},"nodeType":"YulExpressionStatement","src":"1752:28:30"},{"nodeType":"YulAssignment","src":"1789:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1800:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1796:3:30"},"nodeType":"YulFunctionCall","src":"1796:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1789:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1726:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1734:3:30","type":""}],"src":"1687:127:30"},{"body":{"nodeType":"YulBlock","src":"1874:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1891:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1896:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1884:6:30"},"nodeType":"YulFunctionCall","src":"1884:34:30"},"nodeType":"YulExpressionStatement","src":"1884:34:30"},{"nodeType":"YulAssignment","src":"1927:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1938:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1934:3:30"},"nodeType":"YulFunctionCall","src":"1934:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1927:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1858:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1866:3:30","type":""}],"src":"1819:133:30"},{"body":{"nodeType":"YulBlock","src":"2012:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2029:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"2034:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2022:6:30"},"nodeType":"YulFunctionCall","src":"2022:30:30"},"nodeType":"YulExpressionStatement","src":"2022:30:30"},{"nodeType":"YulAssignment","src":"2061:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2072:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2077:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2068:3:30"},"nodeType":"YulFunctionCall","src":"2068:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2061:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2004:3:30","type":""}],"src":"1957:129:30"},{"body":{"nodeType":"YulBlock","src":"2146:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2163:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"2168:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2156:6:30"},"nodeType":"YulFunctionCall","src":"2156:16:30"},"nodeType":"YulExpressionStatement","src":"2156:16:30"},{"nodeType":"YulAssignment","src":"2181:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2192:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2197:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:30"},"nodeType":"YulFunctionCall","src":"2188:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2181:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2130:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2138:3:30","type":""}],"src":"2091:114:30"},{"body":{"nodeType":"YulBlock","src":"4321:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4338:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4343:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:30"},"nodeType":"YulFunctionCall","src":"4331:31:30"},"nodeType":"YulExpressionStatement","src":"4331:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4382:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4378:3:30"},"nodeType":"YulFunctionCall","src":"4378:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4392:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4371:6:30"},"nodeType":"YulFunctionCall","src":"4371:40:30"},"nodeType":"YulExpressionStatement","src":"4371:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4431:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4436:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4427:3:30"},"nodeType":"YulFunctionCall","src":"4427:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4441:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4420:6:30"},"nodeType":"YulFunctionCall","src":"4420:38:30"},"nodeType":"YulExpressionStatement","src":"4420:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4478:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4483:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4474:3:30"},"nodeType":"YulFunctionCall","src":"4474:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4488:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4467:6:30"},"nodeType":"YulFunctionCall","src":"4467:43:30"},"nodeType":"YulExpressionStatement","src":"4467:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4530:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4535:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4526:3:30"},"nodeType":"YulFunctionCall","src":"4526:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4540:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4519:6:30"},"nodeType":"YulFunctionCall","src":"4519:41:30"},"nodeType":"YulExpressionStatement","src":"4519:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4580:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4585:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:30"},"nodeType":"YulFunctionCall","src":"4576:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4590:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:30"},"nodeType":"YulFunctionCall","src":"4569:39:30"},"nodeType":"YulExpressionStatement","src":"4569:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4628:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4633:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4624:3:30"},"nodeType":"YulFunctionCall","src":"4624:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4638:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4617:6:30"},"nodeType":"YulFunctionCall","src":"4617:41:30"},"nodeType":"YulExpressionStatement","src":"4617:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4683:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:30"},"nodeType":"YulFunctionCall","src":"4674:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4689:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:30"},"nodeType":"YulFunctionCall","src":"4667:43:30"},"nodeType":"YulExpressionStatement","src":"4667:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4730:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4735:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:30"},"nodeType":"YulFunctionCall","src":"4726:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4741:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4719:6:30"},"nodeType":"YulFunctionCall","src":"4719:41:30"},"nodeType":"YulExpressionStatement","src":"4719:41:30"},{"nodeType":"YulAssignment","src":"4769:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5110:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5115:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:30"},"nodeType":"YulFunctionCall","src":"5106:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"5076:29:30"},"nodeType":"YulFunctionCall","src":"5076:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"5046:29:30"},"nodeType":"YulFunctionCall","src":"5046:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"5016:29:30"},"nodeType":"YulFunctionCall","src":"5016:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4986:29:30"},"nodeType":"YulFunctionCall","src":"4986:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4956:29:30"},"nodeType":"YulFunctionCall","src":"4956:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4926:29:30"},"nodeType":"YulFunctionCall","src":"4926:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4896:29:30"},"nodeType":"YulFunctionCall","src":"4896:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4866:29:30"},"nodeType":"YulFunctionCall","src":"4866:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4836:29:30"},"nodeType":"YulFunctionCall","src":"4836:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4806:29:30"},"nodeType":"YulFunctionCall","src":"4806:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4776:29:30"},"nodeType":"YulFunctionCall","src":"4776:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4769:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4313:3:30","type":""}],"src":"2210:2926:30"},{"body":{"nodeType":"YulBlock","src":"5838:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5855:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5860:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5848:6:30"},"nodeType":"YulFunctionCall","src":"5848:28:30"},"nodeType":"YulExpressionStatement","src":"5848:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5896:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5901:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:30"},"nodeType":"YulFunctionCall","src":"5892:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5906:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:30"},"nodeType":"YulFunctionCall","src":"5885:36:30"},"nodeType":"YulExpressionStatement","src":"5885:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5941:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5946:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5937:3:30"},"nodeType":"YulFunctionCall","src":"5937:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5951:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5930:6:30"},"nodeType":"YulFunctionCall","src":"5930:39:30"},"nodeType":"YulExpressionStatement","src":"5930:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5989:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5994:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:30"},"nodeType":"YulFunctionCall","src":"5985:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5999:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5978:6:30"},"nodeType":"YulFunctionCall","src":"5978:40:30"},"nodeType":"YulExpressionStatement","src":"5978:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6038:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6043:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6034:3:30"},"nodeType":"YulFunctionCall","src":"6034:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6048:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6027:6:30"},"nodeType":"YulFunctionCall","src":"6027:49:30"},"nodeType":"YulExpressionStatement","src":"6027:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6096:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6101:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6092:3:30"},"nodeType":"YulFunctionCall","src":"6092:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"6106:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6085:6:30"},"nodeType":"YulFunctionCall","src":"6085:25:30"},"nodeType":"YulExpressionStatement","src":"6085:25:30"},{"nodeType":"YulAssignment","src":"6119:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6130:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6135:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:30"},"nodeType":"YulFunctionCall","src":"6126:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6119:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5830:3:30","type":""}],"src":"5141:1003:30"},{"body":{"nodeType":"YulBlock","src":"6362:276:30","statements":[{"nodeType":"YulAssignment","src":"6372:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6384:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:30"},"nodeType":"YulFunctionCall","src":"6380:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6372:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6415:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6426:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:30"},"nodeType":"YulFunctionCall","src":"6408:25:30"},"nodeType":"YulExpressionStatement","src":"6408:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6453:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6464:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6449:3:30"},"nodeType":"YulFunctionCall","src":"6449:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6469:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6442:6:30"},"nodeType":"YulFunctionCall","src":"6442:34:30"},"nodeType":"YulExpressionStatement","src":"6442:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6496:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6507:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:30"},"nodeType":"YulFunctionCall","src":"6492:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6512:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6485:6:30"},"nodeType":"YulFunctionCall","src":"6485:34:30"},"nodeType":"YulExpressionStatement","src":"6485:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6550:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:30"},"nodeType":"YulFunctionCall","src":"6535:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6555:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:30"},"nodeType":"YulFunctionCall","src":"6528:34:30"},"nodeType":"YulExpressionStatement","src":"6528:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6593:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:30"},"nodeType":"YulFunctionCall","src":"6578:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6603:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6615:3:30"},"nodeType":"YulFunctionCall","src":"6615:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6628:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:30"},"nodeType":"YulFunctionCall","src":"6611:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6599:3:30"},"nodeType":"YulFunctionCall","src":"6599:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6571:6:30"},"nodeType":"YulFunctionCall","src":"6571:61:30"},"nodeType":"YulExpressionStatement","src":"6571:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6310:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6318:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6326:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6334:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6342:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6353:4:30","type":""}],"src":"6149:489:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101a06040523480156200001257600080fd5b506040516200380d3803806200380d8339810160408190526200003591620004aa565b818181818082808080806200004962000137565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa158015620000e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010e9190620004e2565b5061016052505060016000555050506001600160a01b0316610180525062000507945050505050565b60008080806200016760408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b39450600091620003c291016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b80516001600160a01b0381168114620004a557600080fd5b919050565b60008060408385031215620004be57600080fd5b620004c9836200048d565b9150620004d9602084016200048d565b90509250929050565b60008060408385031215620004f657600080fd5b505080516020909101519092909150565b60805160a05160c05160e051610100516101205161014051610160516101805161326b620005a26000396000818161026e015281816120280152818161270c0152818161279201526129da015260006120e4015260008181610ef801526120a201526000611dbe01526000611cee01526000818161051d01526107c701526000611d1c01526000611d6a01526000611d42015261326b6000f3fe6080604052600436106100bc5760003560e01c8063b86ae9e111610074578063f07ec3731161004e578063f07ec37314610218578063f47b774014610238578063ffc5d97a1461025c57600080fd5b8063b86ae9e1146101d2578063be92d18e146101f2578063d9e534111461020557600080fd5b80635b34b966116100a55780635b34b9661461016f5780639432cc1d14610192578063a3210e7c146101b257600080fd5b806322378003146100c157806346423aa7146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004612c48565b6102b5565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610116610111366004612cbd565b6102c8565b604080519815158952961515602089015294151595870195909552911515606086015273ffffffffffffffffffffffffffffffffffffffff16608085015260a084015260c083019190915260e0820152610100016100ed565b34801561017b57600080fd5b5061018461035b565b6040519081526020016100ed565b34801561019e57600080fd5b506100e16101ad366004612cd6565b61036a565b3480156101be57600080fd5b506100e16101cd366004612d53565b610376565b3480156101de57600080fd5b506101846101ed366004612d83565b610387565b6100e1610200366004612da0565b610556565b6100e1610213366004612de5565b610562565b34801561022457600080fd5b50610184610233366004612e45565b610577565b34801561024457600080fd5b5061024d6105a2565b6040516100ed93929190612e60565b34801561026857600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b60006102c183836105ba565b9392505050565b600080600080600080600080610340896000908152600260208190526040909120805460018201549282015460039092015460ff8083169561010084048216956201000085048316956301000000860490931694640100000000900473ffffffffffffffffffffffffffffffffffffffff1693909291565b97509750975097509750975097509750919395975091939597565b600061036561090a565b905090565b60006102c18383610967565b600061038182610b27565b92915050565b60408051610220810190915260009061038190806103a86020860186612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260408086013560208301520161040a6080860160608701612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260200161043560a0860160808701612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260200161046060c0860160a08701612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460c0013581526020018460e00135815260200184610100013581526020018461012001358152602001846101400135815260200184610160013581526020018461018001358152602001846101a001358152602001846101c001358152602001846101e0013581526020018461020001358152508361022001357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60006102c18383610c2c565b600061056f848484610daf565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610381565b60606000806105af610ed7565b925092509250909192565b60006105c4610f52565b6000808084815b818110156108fc57368888838181106105e6576105e6612ef9565b90506020028101906105f89190612f28565b9050806106086020820182612e45565b94506108006040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018360200160208101906106489190612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260408085013560208301520161067c6080850160608601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106a760a0850160808601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106d260c0850160a08601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018360c0013581526020018360e00135815260200183610100013581526020018361012001358152602001836101400135815260200183610160013581526020018361018001358152602001836101a001358152602001836101c001358152602001836101e0013581526020018361020001358152506107a08360000160208101906107789190612e45565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60008181526002602052604090209750955061081f8688600180610f90565b50865460ff166108f257610876858761083c610220860186612f66565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d292505050565b86547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117875560405173ffffffffffffffffffffffffffffffffffffffff8616907f09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6906108e99089815260200190565b60405180910390a25b50506001016105cb565b506001979650505050505050565b6000610914610f52565b503360008181526001602081815260409283902080549092019182905591518181529092917f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f910160405180910390a290565b6000610971610f52565b60008083815b81811015610b1a573687878381811061099257610992612ef9565b610240029190910191506109ab90506020820182612e45565b93503373ffffffffffffffffffffffffffffffffffffffff8516146109fc576040517f80ec737400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a3c6040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e45565b6000818152600260205260409020600181015490975090915015610a94576040517f9633f278000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010017865560405173ffffffffffffffffffffffffffffffffffffffff8616907fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275390610b089084815260200190565b60405180910390a25050600101610977565b5060019695505050505050565b600080600080610b3885600161114f565b92509250925080610b4e57506000949350505050565b610b7f6002610b636040880160208901612e45565b30610b7160208a018a612e45565b60408a01356001600061129b565b6000610b916080870160608801612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610bbb57610bb6858361138a565b610bc5565b610bc58583611427565b610bd26020860186612e45565b73ffffffffffffffffffffffffffffffffffffffff167fe68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada84604051610c1991815260200190565b60405180910390a2506001949350505050565b600080600080610c3d8660016114df565b92509250925081610c545760009350505050610381565b856000610c648260018084611656565b90506000610c786080840160608501612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610cd757610cc86002610ca86040850160208601612e45565b610cb56020860186612e45565b308660400135600188610200013561129b565b610cd28282611845565b610d3a565b604080516020808252818301909252600091602082018180368337019050509050610d2c610d0b6040850160208601612e45565b610d186020860186612e45565b3086604001356001886102000135876118fe565b610d3883838a84611964565b505b610d476020830183612e45565b6040805187815233602082015290810185905273ffffffffffffffffffffffffffffffffffffffff91909116907fe8b2cfa73a11bd60479d92890aeb77bc5f502014ec530c3f0c1774d51680f0a69060600160405180910390a2506001979650505050505050565b6000806000806000610dc388876001611a85565b929650909450909250905080610de05760009450505050506102c1565b506000610df08887600085611656565b90506000610e0460808a0160608b01612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610e2e57610e298882611845565b610e5d565b604080516020808252818301909252600091602082018180368337019050509050610e5b89838a84611964565b505b8115610e8857610e886002610e7860408b0160208c01612e45565b308660408d01356001600061129b565b60408051858152602081018890528315158183015290517f6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d389181900360600190a1506001979650505050505050565b6060600080610ee4611cea565b6040805160038082528183019092529193507f0000000000000000000000000000000000000000000000000000000000000000925060208201818036833750507f312e3100000000000000000000000000000000000000000000000000000000006020830152509391925090565b600160005414610f8e576040517f7fa8a98700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8254600090610100900460ff1615610fe5578115610fdd576040517f1a51557400000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b50600061056f565b835462010000900460ff1615611030578115610fdd576040517f836f8ef900000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b82156110805760038401541561107b578115610fdd576040517f9633f27800000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b6110c7565b83600301546000036110c7578115610fdd576040517fe567c93e00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8416036110f457505050565b600061113c611101611cea565b7f1901000000000000000000000000000000000000000000000000000000000000600090815260029190915260228581526042822091905290565b9050611149848284611de0565b50505050565b6000808061117561116536879003870187613023565b6107a06107786020890189612e45565b600081815260026020526040902080549194509060ff166111d55784156111cb576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b5060009050611294565b806003015492506111e98482600088610f90565b6111f7575060009050611294565b4261120761010088013585613146565b82600101546112169190613183565b11156112575784156111cb576040517f031ea4cb00000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b6112648160020154611ff9565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1663010100001790555060015b9250925092565b801561131057600060405190507f4ce34aa200000000000000000000000000000000000000000000000000000000815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e482015261130a828261010461209c565b50611381565b60028760038111156113245761132461319b565b036113745781600114611363576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136f86868686612238565b611381565b6113818686868686612347565b50505050505050565b6113be61139a6020840184612e45565b826113af6101208601356101808701356131ca565b6113b99190613146565b612479565b6000816113d56101208501356101408601356131ca565b6113df9190613146565b90506127106113f361016085013583613146565b6113fd91906131ca565b6114079082613205565b905061142261141c60c0850160a08601612e45565b82612479565b505050565b61146b61143a6080840160608501612e45565b6114476020850185612e45565b8361145c6101208701356101808801356131ca565b6114669190613146565b6124ee565b6000816114826101208501356101408601356131ca565b61148c9190613146565b90506127106114a061016085013583613146565b6114aa91906131ca565b6114b49082613205565b90506114226114c96080850160608601612e45565b6114d960c0860160a08701612e45565b836124ee565b60008080846114f760c082013560e083013587612656565b61150b575060009250829150819050611294565b60028161012001351015611561578415611551576040517f0a199cb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009250829150819050611294565b61158361157336839003830183613023565b6107a06107786020850185612e45565b60008181526002602052604090209094506115a18582600189610f90565b6115b45750600092508291506112949050565b805460ff166115dc576115dc6115cd6020840184612e45565b8661083c6102208b018b612f66565b611600336115f06040850160208601612e45565b84604001358561010001356126b5565b815460017fffffffffffffffff000000000000000000000000000000000000000000ff00009091163364010000000002178117835542818401556002830182905560039092018290559497909650939450505050565b6116816040518060800160405280600081526020016000815260200160008152602001600081525090565b60008061169386610120890135613205565b6101c088013560408501529050831561177f576116ba6101208801356101808901356131ca565b6116c49082613146565b6116d390610180890135613205565b91506116e96101208801356101408901356131ca565b6116f39082613146565b61170290610140890135613205565b835260408301518290826127106101608b01356117296101208d01356101408e01356131ca565b6117339190613146565b61173d91906131ca565b6117479190613146565b611756906101408b0135613205565b6117609190613205565b61176a9190613205565b6020840152610180870135606084015261183b565b6117936101208801356101808901356131ca565b61179d9087613146565b91506117b36101208801356101408901356131ca565b6117bd9087613146565b80845260408401518391612710906117db906101608c013590613146565b6117e591906131ca565b6117ef9190613205565b6117f99190613205565b6020840152841561183b57866101a001358360000181815161181b9190613183565b9052506040830180516101a08901359190611837908390613183565b9052505b5050949350505050565b80513490811015611882576040517f1a783b8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189c6118926020850185612e45565b8360200151612479565b6118b96118af60c0850160a08601612e45565b8360400151612479565b6060820151156118e0576118e06118d660a0850160808601612e45565b8360600151612479565b81516118ec9082613205565b90508015611422576114223382612479565b6119088183612862565b816119535782600114611947576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136f87878787612238565b611381828260028a8a8a8a8a612881565b3360006119776080870160608801612e45565b905061199a818361198e60c08a0160a08b01612e45565b8860400151888861291a565b6060850151156119c5576119c581836119b960a08a0160808b01612e45565b8860600151888861291a565b606085015160408601518651600092916119de91613205565b6119e89190613205565b905085602001518110611a4157611a138284611a0760208b018b612e45565b8960200151898961291a565b6020860151611a229082613205565b90508015611a3857611a3882843084898961291a565b61136f84612955565b611a5b8284611a5360208b018b612e45565b84898961291a565b611a6484612955565b61138182611a7560208a018a612e45565b8389602001516114669190613205565b6000808080611aac611a9c36899003890189613023565b6107a061077860208b018b612e45565b600081815260026020526040902080549195509060ff16611b12578515611b02576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b5060009250829150819050611ce1565b611b1f8582600089610f90565b611b33575060009250829150819050611ce1565b876101200135878260030154611b499190613183565b1180611b555750600187105b15611b95578515611b02576040517fc8910ec000000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b428861010001358260030154611bab9190613146565b8260010154611bba9190613183565b1015611bfb578515611b02576040517f2e775cae00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b86816003016000828254611c0f9190613183565b909155505060038101546101208901359003611c675780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000178155600281015460019250611c6290611ff9565b611cbb565b805460028201546003830154611cbb92640100000000900473ffffffffffffffffffffffffffffffffffffffff169190611ca7906101008d013590613146565b8460010154611cb69190613183565b61297e565b54640100000000900473ffffffffffffffffffffffffffffffffffffffff169250600191505b93509350935093565b60007f00000000000000000000000000000000000000000000000000000000000000004614611dbb57610365604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000526000825160208403805182604103600060018211611e67576040880151606089015160001a96508215611e4557601b8160ff1c0196507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811660408a01525b8689528985526020600060808760015afa508385528589526040890152506000515b8914891515169550859050611fbe57604082526044860380516040880380517f1626ba7e0000000000000000000000000000000000000000000000000000000084528a82526020600060648901868f5afa98508815611fb4577f1626ba7e0000000000000000000000000000000000000000000000000000000060005114611fb4578b3b15611f1a577f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6001876041031115611f50577f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b640101000000881a611f8a577f1f003d0a000000000000000000000000000000000000000000000000000000006000528760045260246000fd5b7f815e1d640000000000000000000000000000000000000000000000000000000060005260046000fd5b8486529190925290525b505050508061114957611fcf612a32565b7f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561208157600080fd5b505af1158015612095573d6000803e3d6000fd5b5050505050565b604080517f000000000000000000000000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000017600090815260208690527f000000000000000000000000000000000000000000000000000000000000000083526055600b209190925273ffffffffffffffffffffffffffffffffffffffff169050600080600080526020600085876000875af191506000519050816121965761214c612a32565b6040517fd13d53d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610a8b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f4ce34aa20000000000000000000000000000000000000000000000000000000014612230576040517f1cf99b260000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff84166024820152604401610a8b565b505050505050565b833b61226c577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af180612338573d156122f9576020601f3d01046020830481600302818311156122e057818303600302610200838002858002030401015b5a6020820110156122f5573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61237b577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af18061245d573d1561241f576020601f3d010460208604816003028183111561240657818303600302610200838002858002030401015b5a60208201101561241b573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b61248281612a7a565b600080600080600085875af19050806114225761249d612a32565b6040517f470c7c1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610a8b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528260045281602452602060006044600080885af1803d15601f3d116001600051141617163d151581166126475780863b151516612647578061261957816125df573d156125a0576020601f3d010460208404816003028183111561258757818303600302610200838002858002030401015b5a60208201101561259c573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452306024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528560045230602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528560045260246000fd5b50506040525050600060605250565b6000428411806126665750428311155b156126ab5781156126a3576040517f6f7eac2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006102c1565b5060019392505050565b6040517fc6c3bbe600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063c6c3bbe6906064016020604051808303816000875af1158015612755573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612779919061321c565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663e030565e82886127c34288613183565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff909116602483015267ffffffffffffffff166044820152606401600060405180830381600087803b15801561284057600080fd5b505af1158015612854573d6000803e3d6000fd5b509298975050505050505050565b600061286f836020015190565b90508181146114225761142283612955565b600060208851036128d55750604080885260208089018a90527f4ce34aa2000000000000000000000000000000000000000000000000000000009189019190915260448801526001606488018190526128e4565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61292383612a7a565b61292d8183612862565b816129435761293e86868686612ab7565b612230565b6122308282600189898960008a612881565b60408151146129615750565b600061296e826020015190565b905061297a8183612c24565b5050565b6040517fe030565e0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff848116602483015267ffffffffffffffff831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e030565e90606401600060405180830381600087803b158015612a1e57600080fd5b505af1158015611381573d6000803e3d6000fd5b3d15610f8e576020601f3d01046020604051048160030281831115612a6557818303600302610200838002858002030401015b5a602082011015611422573d6000803e3d6000fd5b80600003612ab4576040517f91b3e51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116612c145780873b151516612c145780612be65781612bac573d15612b6d576020601f3d0104602084048160030281831115612b5457818303600302610200838002858002030401015b5a602082011015612b69573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b6064810151604082019060c002604401612c3f84838361209c565b50506020905250565b60008060208385031215612c5b57600080fd5b823567ffffffffffffffff80821115612c7357600080fd5b818501915085601f830112612c8757600080fd5b813581811115612c9657600080fd5b8660208260051b8501011115612cab57600080fd5b60209290920196919550909350505050565b600060208284031215612ccf57600080fd5b5035919050565b60008060208385031215612ce957600080fd5b823567ffffffffffffffff80821115612d0157600080fd5b818501915085601f830112612d1557600080fd5b813581811115612d2457600080fd5b86602061024083028501011115612cab57600080fd5b60006102208284031215612d4d57600080fd5b50919050565b60006102208284031215612d6657600080fd5b6102c18383612d3a565b60006102408284031215612d4d57600080fd5b60006102408284031215612d9657600080fd5b6102c18383612d70565b60008060408385031215612db357600080fd5b823567ffffffffffffffff811115612dca57600080fd5b612dd685828601612d70565b95602094909401359450505050565b60008060006102608486031215612dfb57600080fd5b612e058585612d3a565b956102208501359550610240909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612e4057600080fd5b919050565b600060208284031215612e5757600080fd5b6102c182612e1c565b606081526000845180606084015260005b81811015612e8e5760208188018101516080868401015201612e71565b81811115612ea0576000608083860101525b5060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1833603018112612f5c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9b57600080fd5b83018035915067ffffffffffffffff821115612fb657600080fd5b602001915036819003821315612fcb57600080fd5b9250929050565b604051610220810167ffffffffffffffff8111828210171561301d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610220828403121561303657600080fd5b61303e612fd2565b61304783612e1c565b815261305560208401612e1c565b60208201526040830135604082015261307060608401612e1c565b606082015261308160808401612e1c565b608082015261309260a08401612e1c565b60a082015260c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561317e5761317e613117565b500290565b6000821982111561319657613196613117565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082613200577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561321757613217613117565b500390565b60006020828403121561322e57600080fd5b505191905056fea2646970667358221220d2166cbed459bda433b4b9ef8053ccc6cf06b90c03130d7b9d3a8f580684831564736f6c634300080e0033","opcodes":"PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x380D CODESIZE SUB DUP1 PUSH3 0x380D 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 0x326B PUSH3 0x5A2 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x26E ADD MSTORE DUP2 DUP2 PUSH2 0x2028 ADD MSTORE DUP2 DUP2 PUSH2 0x270C ADD MSTORE DUP2 DUP2 PUSH2 0x2792 ADD MSTORE PUSH2 0x29DA ADD MSTORE PUSH1 0x0 PUSH2 0x20E4 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0xEF8 ADD MSTORE PUSH2 0x20A2 ADD MSTORE PUSH1 0x0 PUSH2 0x1DBE ADD MSTORE PUSH1 0x0 PUSH2 0x1CEE ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x51D ADD MSTORE PUSH2 0x7C7 ADD MSTORE PUSH1 0x0 PUSH2 0x1D1C ADD MSTORE PUSH1 0x0 PUSH2 0x1D6A ADD MSTORE PUSH1 0x0 PUSH2 0x1D42 ADD MSTORE PUSH2 0x326B 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 0x2C48 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 0x2CBD 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 0x2CD6 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 0x2D53 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 0x2D83 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DA0 JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DE5 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 0x2E45 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 0x2E60 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E45 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x460 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E45 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 0xDAF 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 0xED7 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 PUSH2 0xF52 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 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5F8 SWAP2 SWAP1 PUSH2 0x2F28 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x608 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E45 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 0x2E45 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 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 0x2E45 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 0xF90 JUMP JUMPDEST POP DUP7 SLOAD PUSH1 0xFF AND PUSH2 0x8F2 JUMPI PUSH2 0x876 DUP6 DUP8 PUSH2 0x83C PUSH2 0x220 DUP7 ADD DUP7 PUSH2 0x2F66 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 0x10D2 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 0xF52 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 0xF52 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 0x2EF9 JUMP JUMPDEST PUSH2 0x240 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x9AB SWAP1 POP PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E45 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 0x2E45 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 0x114F 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 0x2E45 JUMP JUMPDEST ADDRESS PUSH2 0xB71 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB91 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBBB JUMPI PUSH2 0xBB6 DUP6 DUP4 PUSH2 0x138A JUMP JUMPDEST PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x1427 JUMP JUMPDEST PUSH2 0xBD2 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 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 0x14DF 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 0x1656 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC78 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCD7 JUMPI PUSH2 0xCC8 PUSH1 0x2 PUSH2 0xCA8 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0xCB5 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD PUSH2 0x129B JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP3 PUSH2 0x1845 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 0x2E45 JUMP JUMPDEST PUSH2 0xD18 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD DUP8 PUSH2 0x18FE JUMP JUMPDEST PUSH2 0xD38 DUP4 DUP4 DUP11 DUP5 PUSH2 0x1964 JUMP JUMPDEST POP JUMPDEST PUSH2 0xD47 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0xE8B2CFA73A11BD60479D92890AEB77BC5F502014EC530C3F0C1774D51680F0A6 SWAP1 PUSH1 0x60 ADD 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 0xDC3 DUP9 DUP8 PUSH1 0x1 PUSH2 0x1A85 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDE0 JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xDF0 DUP9 DUP8 PUSH1 0x0 DUP6 PUSH2 0x1656 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE04 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE2E JUMPI PUSH2 0xE29 DUP9 DUP3 PUSH2 0x1845 JUMP JUMPDEST PUSH2 0xE5D 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 0xE5B DUP10 DUP4 DUP11 DUP5 PUSH2 0x1964 JUMP JUMPDEST POP JUMPDEST DUP2 ISZERO PUSH2 0xE88 JUMPI PUSH2 0xE88 PUSH1 0x2 PUSH2 0xE78 PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x129B 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 0xEE4 PUSH2 0x1CEA 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 0xF8E 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 0xFE5 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x1030 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x1080 JUMPI PUSH1 0x3 DUP5 ADD SLOAD ISZERO PUSH2 0x107B JUMPI DUP2 ISZERO PUSH2 0xFDD JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST DUP4 PUSH1 0x3 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x10C7 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x10F4 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113C PUSH2 0x1101 PUSH2 0x1CEA 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 0x1149 DUP5 DUP3 DUP5 PUSH2 0x1DE0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1175 PUSH2 0x1165 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2E45 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 0x11D5 JUMPI DUP5 ISZERO PUSH2 0x11CB 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 0x1294 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD SWAP3 POP PUSH2 0x11E9 DUP5 DUP3 PUSH1 0x0 DUP9 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x11F7 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x1294 JUMP JUMPDEST TIMESTAMP PUSH2 0x1207 PUSH2 0x100 DUP9 ADD CALLDATALOAD DUP6 PUSH2 0x3146 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1216 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST GT ISZERO PUSH2 0x1257 JUMPI DUP5 ISZERO PUSH2 0x11CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x31EA4CB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x1264 DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x1FF9 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 0x1310 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 0x130A DUP3 DUP3 PUSH2 0x104 PUSH2 0x209C JUMP JUMPDEST POP PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1324 JUMPI PUSH2 0x1324 PUSH2 0x319B JUMP JUMPDEST SUB PUSH2 0x1374 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136F DUP7 DUP7 DUP7 DUP7 PUSH2 0x2238 JUMP JUMPDEST PUSH2 0x1381 JUMP JUMPDEST PUSH2 0x1381 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2347 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13BE PUSH2 0x139A PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E45 JUMP JUMPDEST DUP3 PUSH2 0x13AF PUSH2 0x120 DUP7 ADD CALLDATALOAD PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x13B9 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x13D5 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x13DF SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x13F3 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x13FD SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1407 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP PUSH2 0x1422 PUSH2 0x141C PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP3 PUSH2 0x2479 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x146B PUSH2 0x143A PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0x1447 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH2 0x145C PUSH2 0x120 DUP8 ADD CALLDATALOAD PUSH2 0x180 DUP9 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x24EE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1482 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x148C SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x14A0 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x14AA SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x14B4 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP PUSH2 0x1422 PUSH2 0x14C9 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0x14D9 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH2 0x24EE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 PUSH2 0x14F7 PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD CALLDATALOAD DUP8 PUSH2 0x2656 JUMP JUMPDEST PUSH2 0x150B JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1294 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH2 0x120 ADD CALLDATALOAD LT ISZERO PUSH2 0x1561 JUMPI DUP5 ISZERO PUSH2 0x1551 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 0x1294 JUMP JUMPDEST PUSH2 0x1583 PUSH2 0x1573 CALLDATASIZE DUP4 SWAP1 SUB DUP4 ADD DUP4 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x15A1 DUP6 DUP3 PUSH1 0x1 DUP10 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x15B4 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP PUSH2 0x1294 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x15DC JUMPI PUSH2 0x15DC PUSH2 0x15CD PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E45 JUMP JUMPDEST DUP7 PUSH2 0x83C PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x2F66 JUMP JUMPDEST PUSH2 0x1600 CALLER PUSH2 0x15F0 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP6 PUSH2 0x100 ADD CALLDATALOAD PUSH2 0x26B5 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 0x1681 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 0x1693 DUP7 PUSH2 0x120 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x1C0 DUP9 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP DUP4 ISZERO PUSH2 0x177F JUMPI PUSH2 0x16BA PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x16C4 SWAP1 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x16D3 SWAP1 PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST SWAP2 POP PUSH2 0x16E9 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x16F3 SWAP1 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x1702 SWAP1 PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP3 SWAP1 DUP3 PUSH2 0x2710 PUSH2 0x160 DUP12 ADD CALLDATALOAD PUSH2 0x1729 PUSH2 0x120 DUP14 ADD CALLDATALOAD PUSH2 0x140 DUP15 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1733 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x173D SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1747 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x1756 SWAP1 PUSH2 0x140 DUP12 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x1760 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x176A SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x183B JUMP JUMPDEST PUSH2 0x1793 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x179D SWAP1 DUP8 PUSH2 0x3146 JUMP JUMPDEST SWAP2 POP PUSH2 0x17B3 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x17BD SWAP1 DUP8 PUSH2 0x3146 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP4 SWAP2 PUSH2 0x2710 SWAP1 PUSH2 0x17DB SWAP1 PUSH2 0x160 DUP13 ADD CALLDATALOAD SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x17E5 SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x17EF SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x17F9 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE DUP5 ISZERO PUSH2 0x183B JUMPI DUP7 PUSH2 0x1A0 ADD CALLDATALOAD DUP4 PUSH1 0x0 ADD DUP2 DUP2 MLOAD PUSH2 0x181B SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH2 0x1A0 DUP10 ADD CALLDATALOAD SWAP2 SWAP1 PUSH2 0x1837 SWAP1 DUP4 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD CALLVALUE SWAP1 DUP2 LT ISZERO PUSH2 0x1882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A783B8D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x189C PUSH2 0x1892 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST PUSH2 0x18B9 PUSH2 0x18AF PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD ISZERO PUSH2 0x18E0 JUMPI PUSH2 0x18E0 PUSH2 0x18D6 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x18EC SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1422 JUMPI PUSH2 0x1422 CALLER DUP3 PUSH2 0x2479 JUMP JUMPDEST PUSH2 0x1908 DUP2 DUP4 PUSH2 0x2862 JUMP JUMPDEST DUP2 PUSH2 0x1953 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x1947 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136F DUP8 DUP8 DUP8 DUP8 PUSH2 0x2238 JUMP JUMPDEST PUSH2 0x1381 DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2881 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1977 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E45 JUMP JUMPDEST SWAP1 POP PUSH2 0x199A DUP2 DUP4 PUSH2 0x198E PUSH1 0xC0 DUP11 ADD PUSH1 0xA0 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP9 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD ISZERO PUSH2 0x19C5 JUMPI PUSH2 0x19C5 DUP2 DUP4 PUSH2 0x19B9 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD DUP9 DUP9 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x19DE SWAP2 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x19E8 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x20 ADD MLOAD DUP2 LT PUSH2 0x1A41 JUMPI PUSH2 0x1A13 DUP3 DUP5 PUSH2 0x1A07 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD MLOAD DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x1A22 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A38 JUMPI PUSH2 0x1A38 DUP3 DUP5 ADDRESS DUP5 DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH2 0x136F DUP5 PUSH2 0x2955 JUMP JUMPDEST PUSH2 0x1A5B DUP3 DUP5 PUSH2 0x1A53 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 JUMP JUMPDEST DUP5 DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH2 0x1A64 DUP5 PUSH2 0x2955 JUMP JUMPDEST PUSH2 0x1381 DUP3 PUSH2 0x1A75 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E45 JUMP JUMPDEST DUP4 DUP10 PUSH1 0x20 ADD MLOAD PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AAC PUSH2 0x1A9C CALLDATASIZE DUP10 SWAP1 SUB DUP10 ADD DUP10 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 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 0x1B12 JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1CE1 JUMP JUMPDEST PUSH2 0x1B1F DUP6 DUP3 PUSH1 0x0 DUP10 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x1B33 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CE1 JUMP JUMPDEST DUP8 PUSH2 0x120 ADD CALLDATALOAD DUP8 DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1B49 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST GT DUP1 PUSH2 0x1B55 JUMPI POP PUSH1 0x1 DUP8 LT JUMPDEST ISZERO PUSH2 0x1B95 JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1BAB SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1BBA SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST LT ISZERO PUSH2 0x1BFB JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1C0F SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 SUB PUSH2 0x1C67 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF AND PUSH3 0x10000 OR DUP2 SSTORE PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 SWAP3 POP PUSH2 0x1C62 SWAP1 PUSH2 0x1FF9 JUMP JUMPDEST PUSH2 0x1CBB JUMP JUMPDEST DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH2 0x1CBB SWAP3 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x1CA7 SWAP1 PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP1 PUSH2 0x3146 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1CB6 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x297E 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 0x1DBB 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 0x1E67 JUMPI PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x0 BYTE SWAP7 POP DUP3 ISZERO PUSH2 0x1E45 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 0x1FBE 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 0x1FB4 JUMPI PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MLOAD EQ PUSH2 0x1FB4 JUMPI DUP12 EXTCODESIZE ISZERO PUSH2 0x1F1A JUMPI PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP8 PUSH1 0x41 SUB GT ISZERO PUSH2 0x1F50 JUMPI PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH5 0x101000000 DUP9 BYTE PUSH2 0x1F8A 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 0x1149 JUMPI PUSH2 0x1FCF PUSH2 0x2A32 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 0x2081 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2095 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 0x2196 JUMPI PUSH2 0x214C PUSH2 0x2A32 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 0x2230 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 0x226C 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 0x2338 JUMPI RETURNDATASIZE ISZERO PUSH2 0x22F9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x22E0 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 0x22F5 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 0x237B 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 0x245D JUMPI RETURNDATASIZE ISZERO PUSH2 0x241F JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2406 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 0x241B 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 0x2482 DUP2 PUSH2 0x2A7A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x1422 JUMPI PUSH2 0x249D PUSH2 0x2A32 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 0x2647 JUMPI DUP1 DUP7 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2647 JUMPI DUP1 PUSH2 0x2619 JUMPI DUP2 PUSH2 0x25DF JUMPI RETURNDATASIZE ISZERO PUSH2 0x25A0 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2587 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 0x259C 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 0x2666 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x26AB JUMPI DUP2 ISZERO PUSH2 0x26A3 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 0x2755 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 0x2779 SWAP2 SWAP1 PUSH2 0x321C JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xE030565E DUP3 DUP9 PUSH2 0x27C3 TIMESTAMP DUP9 PUSH2 0x3183 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 0x2840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2854 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 0x286F DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1422 JUMPI PUSH2 0x1422 DUP4 PUSH2 0x2955 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x28D5 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 0x28E4 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 0x2923 DUP4 PUSH2 0x2A7A JUMP JUMPDEST PUSH2 0x292D DUP2 DUP4 PUSH2 0x2862 JUMP JUMPDEST DUP2 PUSH2 0x2943 JUMPI PUSH2 0x293E DUP7 DUP7 DUP7 DUP7 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2230 JUMP JUMPDEST PUSH2 0x2230 DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x2881 JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD EQ PUSH2 0x2961 JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296E DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x297A DUP2 DUP4 PUSH2 0x2C24 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 0x2A1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1381 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xF8E JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2A65 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 0x1422 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x2AB4 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 0x2C14 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2C14 JUMPI DUP1 PUSH2 0x2BE6 JUMPI DUP2 PUSH2 0x2BAC JUMPI RETURNDATASIZE ISZERO PUSH2 0x2B6D JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2B54 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 0x2B69 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 0x2C3F DUP5 DUP4 DUP4 PUSH2 0x209C JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CAB 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 0x2CCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2D01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH2 0x240 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2CAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DD6 DUP6 DUP3 DUP7 ADD PUSH2 0x2D70 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 0x2DFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E05 DUP6 DUP6 PUSH2 0x2D3A 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 0x2E40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP3 PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E8E JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x2E71 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2EA0 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 0x2F5C 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 0x2F9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2FB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2FCB 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 0x301D 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 0x3036 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303E PUSH2 0x2FD2 JUMP JUMPDEST PUSH2 0x3047 DUP4 PUSH2 0x2E1C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x3055 PUSH1 0x20 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3070 PUSH1 0x60 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3081 PUSH1 0x80 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3092 PUSH1 0xA0 DUP5 ADD PUSH2 0x2E1C 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 0x317E JUMPI PUSH2 0x317E PUSH2 0x3117 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3196 JUMPI PUSH2 0x3196 PUSH2 0x3117 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 0x3200 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 0x3217 JUMPI PUSH2 0x3217 PUSH2 0x3117 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 AND PUSH13 0xBED459BDA433B4B9EF8053CCC6 0xCF MOD 0xB9 0xC SUB SGT 0xD PUSH28 0x9D3A8F580684831564736F6C634300080E0033000000000000000000 ","sourceMap":"234:2896:11:-:0;;;341:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;416:17;435:11;416:17;435:11;;416:17;;;;;786:19:12;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6408:25:30;;;;6449:18;;;6442:34;;;;-1:-1:-1;6492:18:30;;6485:34;;;;6535:18;;;6528:34;1371:4:12;6578:19:30;;;6571:61;1203:187:12;;;;;;;;;;6380:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;;2345:1:13;658:16:22;:31;-1:-1:-1;;;;;;;;417:20:23;;;-1:-1:-1;234:2896:11;;-1:-1:-1;;;;;234:2896:11;1527:1491:12;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:12;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4331:31:30;;-1:-1:-1;;;4387:2:30;4378:12;;4371:40;-1:-1:-1;;;4436:2:30;4427:12;;4420:38;4488:21;4483:2;4474:12;;4467:43;-1:-1:-1;;;4535:2:30;4526:12;;4519:41;-1:-1:-1;;;4585:2:30;4576:12;;4569:39;-1:-1:-1;;;4633:2:30;4624:12;;4617:41;-1:-1:-1;;;4683:3:30;4674:13;;4667:43;-1:-1:-1;;;4735:3:30;4726:13;;4719:41;-1:-1:-1;;;5115:3:30;5106:13;;809:32;-1:-1:-1;;;857:12:30;;;945:31;-1:-1:-1;;;992:12:30;;;1080:30;-1:-1:-1;;;1126:12:30;;;1214:29;-1:-1:-1;;;1259:12:30;;;1347:31;-1:-1:-1;;;1394:12:30;;;1482:27;1625:22;1525:12;;;1613:35;-1:-1:-1;;;1664:12:30;;;1752:28;1896:21;1796:12;;;1884:34;-1:-1:-1;;;1934:12:30;;;2022:30;-1:-1:-1;;;2068:12:30;;;2156:16;2188:11;;;2210:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5848:28:30;-1:-1:-1;;;5892:12:30;;;5885:36;-1:-1:-1;;;5937:12:30;;;5930:39;-1:-1:-1;;;5985:12:30;;;5978:40;6048:27;6034:12;;;6027:49;-1:-1:-1;;;6092:12:30;;;6085:25;1909:724:12;-1:-1:-1;6126:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:177:30:-;93:13;;-1:-1:-1;;;;;135:31:30;;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:30;;729:2;714:18;;;708:25;673:16;;708:25;;-1:-1:-1;494:245:30:o;6149:489::-;234:2896:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_assertNonReentrant_4037":{"entryPoint":3922,"id":4037,"parameterSlots":0,"returnSlots":0},"@_assertNonZeroAmount_631":{"entryPoint":10874,"id":631,"parameterSlots":1,"returnSlots":0},"@_assertValidSignature_4189":{"entryPoint":7648,"id":4189,"parameterSlots":3,"returnSlots":0},"@_burnToken_4151":{"entryPoint":8185,"id":4151,"parameterSlots":1,"returnSlots":0},"@_calculateDispatch_2533":{"entryPoint":5718,"id":2533,"parameterSlots":4,"returnSlots":1},"@_callConduitUsingOffsets_2130":{"entryPoint":8348,"id":2130,"parameterSlots":3,"returnSlots":0},"@_cancel_3793":{"entryPoint":2407,"id":3793,"parameterSlots":2,"returnSlots":1},"@_deriveConduit_2240":{"entryPoint":null,"id":2240,"parameterSlots":1,"returnSlots":1},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveEIP712Digest_2299":{"entryPoint":null,"id":2299,"parameterSlots":2,"returnSlots":1},"@_deriveOrderHash_2220":{"entryPoint":null,"id":2220,"parameterSlots":2,"returnSlots":1},"@_domainSeparator_2256":{"entryPoint":7402,"id":2256,"parameterSlots":0,"returnSlots":1},"@_extendToken_4138":{"entryPoint":10622,"id":4138,"parameterSlots":3,"returnSlots":0},"@_getAccumulatorConduitKey_2140":{"entryPoint":null,"id":2140,"parameterSlots":1,"returnSlots":1},"@_getCounter_1710":{"entryPoint":null,"id":1710,"parameterSlots":1,"returnSlots":1},"@_getOrderStatus_3983":{"entryPoint":null,"id":3983,"parameterSlots":1,"returnSlots":8},"@_incrementCounter_1696":{"entryPoint":2314,"id":1696,"parameterSlots":0,"returnSlots":1},"@_information_2287":{"entryPoint":3799,"id":2287,"parameterSlots":0,"returnSlots":3},"@_insert_2185":{"entryPoint":10369,"id":2185,"parameterSlots":8,"returnSlots":0},"@_mintToken_4116":{"entryPoint":9909,"id":4116,"parameterSlots":4,"returnSlots":1},"@_performERC1155Transfer_4255":{"entryPoint":9031,"id":4255,"parameterSlots":5,"returnSlots":0},"@_performERC20Transfer_4214":{"entryPoint":10935,"id":4214,"parameterSlots":4,"returnSlots":0},"@_performERC721Transfer_4239":{"entryPoint":8760,"id":4239,"parameterSlots":4,"returnSlots":0},"@_performSelfERC20Transfer_4225":{"entryPoint":9454,"id":4225,"parameterSlots":3,"returnSlots":0},"@_revertWithReasonIfOneIsReturned_2322":{"entryPoint":10802,"id":2322,"parameterSlots":0,"returnSlots":0},"@_transferERC20AndFinalize_3156":{"entryPoint":6500,"id":3156,"parameterSlots":4,"returnSlots":0},"@_transferERC20Broken_2945":{"entryPoint":5159,"id":2945,"parameterSlots":2,"returnSlots":0},"@_transferERC20_1894":{"entryPoint":10522,"id":1894,"parameterSlots":6,"returnSlots":0},"@_transferERC721_1954":{"entryPoint":6398,"id":1954,"parameterSlots":7,"returnSlots":0},"@_transferEthAndFinalize_3025":{"entryPoint":6213,"id":3025,"parameterSlots":2,"returnSlots":0},"@_transferEthBroken_2893":{"entryPoint":5002,"id":2893,"parameterSlots":2,"returnSlots":0},"@_transferEth_1837":{"entryPoint":9337,"id":1837,"parameterSlots":2,"returnSlots":0},"@_transferIndividual721Or1155Item_1808":{"entryPoint":4763,"id":1808,"parameterSlots":7,"returnSlots":0},"@_triggerIfArmedAndNotAccumulatable_2035":{"entryPoint":10338,"id":2035,"parameterSlots":2,"returnSlots":0},"@_triggerIfArmed_2060":{"entryPoint":10581,"id":2060,"parameterSlots":1,"returnSlots":0},"@_trigger_2083":{"entryPoint":11300,"id":2083,"parameterSlots":2,"returnSlots":0},"@_validateAndBreakOrder_2839":{"entryPoint":2855,"id":2839,"parameterSlots":1,"returnSlots":1},"@_validateAndFulfillOrder_2652":{"entryPoint":3116,"id":2652,"parameterSlots":2,"returnSlots":1},"@_validateAndRepayOrder_2765":{"entryPoint":3503,"id":2765,"parameterSlots":3,"returnSlots":1},"@_validateOrderAndUpdateBreakStatus_3655":{"entryPoint":4431,"id":3655,"parameterSlots":2,"returnSlots":3},"@_validateOrderAndUpdateRepayStatus_3542":{"entryPoint":6789,"id":3542,"parameterSlots":3,"returnSlots":4},"@_validateOrderAndUpdateStatus_3356":{"entryPoint":5343,"id":3356,"parameterSlots":2,"returnSlots":3},"@_validate_3936":{"entryPoint":1466,"id":3936,"parameterSlots":2,"returnSlots":1},"@_verifyOrderStatus_4708":{"entryPoint":3984,"id":4708,"parameterSlots":4,"returnSlots":1},"@_verifySignature_4629":{"entryPoint":4306,"id":4629,"parameterSlots":3,"returnSlots":0},"@_verifyTime_4597":{"entryPoint":9814,"id":4597,"parameterSlots":3,"returnSlots":1},"@breakOrder_714":{"entryPoint":886,"id":714,"parameterSlots":1,"returnSlots":1},"@cancel_730":{"entryPoint":874,"id":730,"parameterSlots":2,"returnSlots":1},"@fulfillOrder_678":{"entryPoint":1366,"id":678,"parameterSlots":2,"returnSlots":1},"@getCounter_849":{"entryPoint":1399,"id":849,"parameterSlots":1,"returnSlots":1},"@getOrderHash_809":{"entryPoint":903,"id":809,"parameterSlots":1,"returnSlots":1},"@getOrderStatus_835":{"entryPoint":712,"id":835,"parameterSlots":1,"returnSlots":8},"@incrementCounter_757":{"entryPoint":859,"id":757,"parameterSlots":0,"returnSlots":1},"@information_862":{"entryPoint":1442,"id":862,"parameterSlots":0,"returnSlots":3},"@repayOrder_699":{"entryPoint":1378,"id":699,"parameterSlots":3,"returnSlots":1},"@shadowToken_4061":{"entryPoint":null,"id":4061,"parameterSlots":0,"returnSlots":0},"@validate_746":{"entryPoint":693,"id":746,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":11804,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_OrderComponents_calldata":{"entryPoint":11632,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_OrderParameters_calldata":{"entryPoint":11578,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":11845,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":11478,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":11336,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":11453,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderComponents_$1600_calldata_ptr":{"entryPoint":11651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderParameters_$1635_calldata_ptr":{"entryPoint":11603,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_OrderParameters_$1635_calldata_ptrt_bytes32t_uint256":{"entryPoint":11749,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_struct$_OrderParameters_$1635_memory_ptr":{"entryPoint":12323,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Order_$1641_calldata_ptrt_bytes32":{"entryPoint":11680,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":12828,"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_address_t_uint256__to_t_bytes32_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"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_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":11872,"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":12134,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_t_struct$_Order_$1641_calldata_ptr":{"entryPoint":12072,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":12242,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":12675,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":12746,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":12614,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":12805,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":12567,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":12699,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":12025,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:13279:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"144:510:30","statements":[{"body":{"nodeType":"YulBlock","src":"190:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"199:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"202:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"192:6:30"},"nodeType":"YulFunctionCall","src":"192:12:30"},"nodeType":"YulExpressionStatement","src":"192:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"165:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"174:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"161:3:30"},"nodeType":"YulFunctionCall","src":"161:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"186:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"157:3:30"},"nodeType":"YulFunctionCall","src":"157:32:30"},"nodeType":"YulIf","src":"154:52:30"},{"nodeType":"YulVariableDeclaration","src":"215:37:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"242:9:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"229:12:30"},"nodeType":"YulFunctionCall","src":"229:23:30"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"219:6:30","type":""}]},{"nodeType":"YulVariableDeclaration","src":"261:28:30","value":{"kind":"number","nodeType":"YulLiteral","src":"271:18:30","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"265:2:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"316:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"325:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"328:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"318:6:30"},"nodeType":"YulFunctionCall","src":"318:12:30"},"nodeType":"YulExpressionStatement","src":"318:12:30"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"304:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"312:2:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"301:2:30"},"nodeType":"YulFunctionCall","src":"301:14:30"},"nodeType":"YulIf","src":"298:34:30"},{"nodeType":"YulVariableDeclaration","src":"341:32:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"355:9:30"},{"name":"offset","nodeType":"YulIdentifier","src":"366:6:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"351:3:30"},"nodeType":"YulFunctionCall","src":"351:22:30"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"345:2:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"421:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"430:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"433:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"423:6:30"},"nodeType":"YulFunctionCall","src":"423:12:30"},"nodeType":"YulExpressionStatement","src":"423:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"400:2:30"},{"kind":"number","nodeType":"YulLiteral","src":"404:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"396:3:30"},"nodeType":"YulFunctionCall","src":"396:13:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"411:7:30"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"392:3:30"},"nodeType":"YulFunctionCall","src":"392:27:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"385:6:30"},"nodeType":"YulFunctionCall","src":"385:35:30"},"nodeType":"YulIf","src":"382:55:30"},{"nodeType":"YulVariableDeclaration","src":"446:30:30","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"473:2:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"460:12:30"},"nodeType":"YulFunctionCall","src":"460:16:30"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"450:6:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"503:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"512:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"515:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"505:6:30"},"nodeType":"YulFunctionCall","src":"505:12:30"},"nodeType":"YulExpressionStatement","src":"505:12:30"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"491:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"499:2:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"488:2:30"},"nodeType":"YulFunctionCall","src":"488:14:30"},"nodeType":"YulIf","src":"485:34:30"},{"body":{"nodeType":"YulBlock","src":"577:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"586:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"589:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"579:6:30"},"nodeType":"YulFunctionCall","src":"579:12:30"},"nodeType":"YulExpressionStatement","src":"579:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"542:2:30"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"550:1:30","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"553:6:30"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"546:3:30"},"nodeType":"YulFunctionCall","src":"546:14:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"538:3:30"},"nodeType":"YulFunctionCall","src":"538:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"563:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"534:3:30"},"nodeType":"YulFunctionCall","src":"534:32:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"568:7:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"531:2:30"},"nodeType":"YulFunctionCall","src":"531:45:30"},"nodeType":"YulIf","src":"528:65:30"},{"nodeType":"YulAssignment","src":"602:21:30","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"616:2:30"},{"kind":"number","nodeType":"YulLiteral","src":"620:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"612:3:30"},"nodeType":"YulFunctionCall","src":"612:11:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"602:6:30"}]},{"nodeType":"YulAssignment","src":"632:16:30","value":{"name":"length","nodeType":"YulIdentifier","src":"642:6:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"632:6:30"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_Order_$1641_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"102:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"113:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"125:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"133:6:30","type":""}],"src":"14:640:30"},{"body":{"nodeType":"YulBlock","src":"754:92:30","statements":[{"nodeType":"YulAssignment","src":"764:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"776:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"787:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"772:3:30"},"nodeType":"YulFunctionCall","src":"772:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"764:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"806:9:30"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"831:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"824:6:30"},"nodeType":"YulFunctionCall","src":"824:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"817:6:30"},"nodeType":"YulFunctionCall","src":"817:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"799:6:30"},"nodeType":"YulFunctionCall","src":"799:41:30"},"nodeType":"YulExpressionStatement","src":"799:41:30"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"723:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"734:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"745:4:30","type":""}],"src":"659:187:30"},{"body":{"nodeType":"YulBlock","src":"921:110:30","statements":[{"body":{"nodeType":"YulBlock","src":"967:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"976:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"979:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"969:6:30"},"nodeType":"YulFunctionCall","src":"969:12:30"},"nodeType":"YulExpressionStatement","src":"969:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"942:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"951:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"938:3:30"},"nodeType":"YulFunctionCall","src":"938:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"963:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"934:3:30"},"nodeType":"YulFunctionCall","src":"934:32:30"},"nodeType":"YulIf","src":"931:52:30"},{"nodeType":"YulAssignment","src":"992:33:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1015:9:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1002:12:30"},"nodeType":"YulFunctionCall","src":"1002:23:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"992:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"887:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"898:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"910:6:30","type":""}],"src":"851:180:30"},{"body":{"nodeType":"YulBlock","src":"1309:495:30","statements":[{"nodeType":"YulAssignment","src":"1319:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1331:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1342:3:30","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1327:3:30"},"nodeType":"YulFunctionCall","src":"1327:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1319:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1362:9:30"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1387:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1380:6:30"},"nodeType":"YulFunctionCall","src":"1380:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1373:6:30"},"nodeType":"YulFunctionCall","src":"1373:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1355:6:30"},"nodeType":"YulFunctionCall","src":"1355:41:30"},"nodeType":"YulExpressionStatement","src":"1355:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:30"},"nodeType":"YulFunctionCall","src":"1412:18:30"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1446:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1439:6:30"},"nodeType":"YulFunctionCall","src":"1439:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1432:6:30"},"nodeType":"YulFunctionCall","src":"1432:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1405:6:30"},"nodeType":"YulFunctionCall","src":"1405:50:30"},"nodeType":"YulExpressionStatement","src":"1405:50:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1475:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1486:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1471:3:30"},"nodeType":"YulFunctionCall","src":"1471:18:30"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1505:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1498:6:30"},"nodeType":"YulFunctionCall","src":"1498:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1491:6:30"},"nodeType":"YulFunctionCall","src":"1491:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1464:6:30"},"nodeType":"YulFunctionCall","src":"1464:50:30"},"nodeType":"YulExpressionStatement","src":"1464:50:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1534:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1530:3:30"},"nodeType":"YulFunctionCall","src":"1530:18:30"},{"arguments":[{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"1564:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1557:6:30"},"nodeType":"YulFunctionCall","src":"1557:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1550:6:30"},"nodeType":"YulFunctionCall","src":"1550:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1523:6:30"},"nodeType":"YulFunctionCall","src":"1523:50:30"},"nodeType":"YulExpressionStatement","src":"1523:50:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1593:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1604:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1589:3:30"},"nodeType":"YulFunctionCall","src":"1589:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1614:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"1622:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1610:3:30"},"nodeType":"YulFunctionCall","src":"1610:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1582:6:30"},"nodeType":"YulFunctionCall","src":"1582:84:30"},"nodeType":"YulExpressionStatement","src":"1582:84:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1697:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1682:3:30"},"nodeType":"YulFunctionCall","src":"1682:19:30"},{"name":"value5","nodeType":"YulIdentifier","src":"1703:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1675:6:30"},"nodeType":"YulFunctionCall","src":"1675:35:30"},"nodeType":"YulExpressionStatement","src":"1675:35:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1730:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1741:3:30","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1726:3:30"},"nodeType":"YulFunctionCall","src":"1726:19:30"},{"name":"value6","nodeType":"YulIdentifier","src":"1747:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1719:6:30"},"nodeType":"YulFunctionCall","src":"1719:35:30"},"nodeType":"YulExpressionStatement","src":"1719:35:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1774:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1785:3:30","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1770:3:30"},"nodeType":"YulFunctionCall","src":"1770:19:30"},{"name":"value7","nodeType":"YulIdentifier","src":"1791:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1763:6:30"},"nodeType":"YulFunctionCall","src":"1763:35:30"},"nodeType":"YulExpressionStatement","src":"1763:35:30"}]},"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:30","type":""},{"name":"value7","nodeType":"YulTypedName","src":"1233:6:30","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1241:6:30","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1249:6:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1257:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1265:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1273:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1281:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1289:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1300:4:30","type":""}],"src":"1036:768:30"},{"body":{"nodeType":"YulBlock","src":"1910:76:30","statements":[{"nodeType":"YulAssignment","src":"1920:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1928:3:30"},"nodeType":"YulFunctionCall","src":"1928:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1920:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1962:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"1973:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1955:6:30"},"nodeType":"YulFunctionCall","src":"1955:25:30"},"nodeType":"YulExpressionStatement","src":"1955:25:30"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1879:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1890:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1901:4:30","type":""}],"src":"1809:177:30"},{"body":{"nodeType":"YulBlock","src":"2131:515:30","statements":[{"body":{"nodeType":"YulBlock","src":"2177:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2186:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2189:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2179:6:30"},"nodeType":"YulFunctionCall","src":"2179:12:30"},"nodeType":"YulExpressionStatement","src":"2179:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2152:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"2161:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2148:3:30"},"nodeType":"YulFunctionCall","src":"2148:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"2173:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2144:3:30"},"nodeType":"YulFunctionCall","src":"2144:32:30"},"nodeType":"YulIf","src":"2141:52:30"},{"nodeType":"YulVariableDeclaration","src":"2202:37:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2229:9:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2216:12:30"},"nodeType":"YulFunctionCall","src":"2216:23:30"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2206:6:30","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2248:28:30","value":{"kind":"number","nodeType":"YulLiteral","src":"2258:18:30","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2252:2:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"2303:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2312:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2315:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2305:6:30"},"nodeType":"YulFunctionCall","src":"2305:12:30"},"nodeType":"YulExpressionStatement","src":"2305:12:30"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2291:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"2299:2:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2288:2:30"},"nodeType":"YulFunctionCall","src":"2288:14:30"},"nodeType":"YulIf","src":"2285:34:30"},{"nodeType":"YulVariableDeclaration","src":"2328:32:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2342:9:30"},{"name":"offset","nodeType":"YulIdentifier","src":"2353:6:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2338:3:30"},"nodeType":"YulFunctionCall","src":"2338:22:30"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2332:2:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"2408:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2417:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2420:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2410:6:30"},"nodeType":"YulFunctionCall","src":"2410:12:30"},"nodeType":"YulExpressionStatement","src":"2410:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2387:2:30"},{"kind":"number","nodeType":"YulLiteral","src":"2391:4:30","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2383:3:30"},"nodeType":"YulFunctionCall","src":"2383:13:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2398:7:30"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2379:3:30"},"nodeType":"YulFunctionCall","src":"2379:27:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2372:6:30"},"nodeType":"YulFunctionCall","src":"2372:35:30"},"nodeType":"YulIf","src":"2369:55:30"},{"nodeType":"YulVariableDeclaration","src":"2433:30:30","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2460:2:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2447:12:30"},"nodeType":"YulFunctionCall","src":"2447:16:30"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2437:6:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"2490:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2499:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2502:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2492:6:30"},"nodeType":"YulFunctionCall","src":"2492:12:30"},"nodeType":"YulExpressionStatement","src":"2492:12:30"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2478:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"2486:2:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2475:2:30"},"nodeType":"YulFunctionCall","src":"2475:14:30"},"nodeType":"YulIf","src":"2472:34:30"},{"body":{"nodeType":"YulBlock","src":"2569:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2578:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2581:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2571:6:30"},"nodeType":"YulFunctionCall","src":"2571:12:30"},"nodeType":"YulExpressionStatement","src":"2571:12:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2529:2:30"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2537:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"2545:6:30","type":"","value":"0x0240"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2533:3:30"},"nodeType":"YulFunctionCall","src":"2533:19:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2525:3:30"},"nodeType":"YulFunctionCall","src":"2525:28:30"},{"kind":"number","nodeType":"YulLiteral","src":"2555:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2521:3:30"},"nodeType":"YulFunctionCall","src":"2521:37:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2560:7:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2518:2:30"},"nodeType":"YulFunctionCall","src":"2518:50:30"},"nodeType":"YulIf","src":"2515:70:30"},{"nodeType":"YulAssignment","src":"2594:21:30","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:30"},{"kind":"number","nodeType":"YulLiteral","src":"2612:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:30"},"nodeType":"YulFunctionCall","src":"2604:11:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2594:6:30"}]},{"nodeType":"YulAssignment","src":"2624:16:30","value":{"name":"length","nodeType":"YulIdentifier","src":"2634:6:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2624:6:30"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_OrderComponents_$1600_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2089:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2100:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2112:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2120:6:30","type":""}],"src":"1991:655:30"},{"body":{"nodeType":"YulBlock","src":"2729:86:30","statements":[{"body":{"nodeType":"YulBlock","src":"2769:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2778:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2781:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2771:6:30"},"nodeType":"YulFunctionCall","src":"2771:12:30"},"nodeType":"YulExpressionStatement","src":"2771:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2750:3:30"},{"name":"offset","nodeType":"YulIdentifier","src":"2755:6:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2746:3:30"},"nodeType":"YulFunctionCall","src":"2746:16:30"},{"kind":"number","nodeType":"YulLiteral","src":"2764:3:30","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2742:3:30"},"nodeType":"YulFunctionCall","src":"2742:26:30"},"nodeType":"YulIf","src":"2739:46:30"},{"nodeType":"YulAssignment","src":"2794:15:30","value":{"name":"offset","nodeType":"YulIdentifier","src":"2803:6:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2794:5:30"}]}]},"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2703:6:30","type":""},{"name":"end","nodeType":"YulTypedName","src":"2711:3:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2719:5:30","type":""}],"src":"2651:164:30"},{"body":{"nodeType":"YulBlock","src":"2925:150:30","statements":[{"body":{"nodeType":"YulBlock","src":"2972:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2981:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2984:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2974:6:30"},"nodeType":"YulFunctionCall","src":"2974:12:30"},"nodeType":"YulExpressionStatement","src":"2974:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2946:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2942:3:30"},"nodeType":"YulFunctionCall","src":"2942:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"2967:3:30","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2938:3:30"},"nodeType":"YulFunctionCall","src":"2938:33:30"},"nodeType":"YulIf","src":"2935:53:30"},{"nodeType":"YulAssignment","src":"2997:72:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3050:9:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3061:7:30"}],"functionName":{"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulIdentifier","src":"3007:42:30"},"nodeType":"YulFunctionCall","src":"3007:62:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2997:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$1635_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2891:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2902:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2914:6:30","type":""}],"src":"2820:255:30"},{"body":{"nodeType":"YulBlock","src":"3158:86:30","statements":[{"body":{"nodeType":"YulBlock","src":"3198:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3207:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3210:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3200:6:30"},"nodeType":"YulFunctionCall","src":"3200:12:30"},"nodeType":"YulExpressionStatement","src":"3200:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"3179:3:30"},{"name":"offset","nodeType":"YulIdentifier","src":"3184:6:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3175:3:30"},"nodeType":"YulFunctionCall","src":"3175:16:30"},{"kind":"number","nodeType":"YulLiteral","src":"3193:3:30","type":"","value":"576"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3171:3:30"},"nodeType":"YulFunctionCall","src":"3171:26:30"},"nodeType":"YulIf","src":"3168:46:30"},{"nodeType":"YulAssignment","src":"3223:15:30","value":{"name":"offset","nodeType":"YulIdentifier","src":"3232:6:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3223:5:30"}]}]},"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3132:6:30","type":""},{"name":"end","nodeType":"YulTypedName","src":"3140:3:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3148:5:30","type":""}],"src":"3080:164:30"},{"body":{"nodeType":"YulBlock","src":"3354:150:30","statements":[{"body":{"nodeType":"YulBlock","src":"3401:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3410:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3413:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3403:6:30"},"nodeType":"YulFunctionCall","src":"3403:12:30"},"nodeType":"YulExpressionStatement","src":"3403:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3375:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"3384:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3371:3:30"},"nodeType":"YulFunctionCall","src":"3371:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"3396:3:30","type":"","value":"576"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3367:3:30"},"nodeType":"YulFunctionCall","src":"3367:33:30"},"nodeType":"YulIf","src":"3364:53:30"},{"nodeType":"YulAssignment","src":"3426:72:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3479:9:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3490:7:30"}],"functionName":{"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulIdentifier","src":"3436:42:30"},"nodeType":"YulFunctionCall","src":"3436:62:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3426:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_OrderComponents_$1600_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3320:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3331:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3343:6:30","type":""}],"src":"3249:255:30"},{"body":{"nodeType":"YulBlock","src":"3610:76:30","statements":[{"nodeType":"YulAssignment","src":"3620:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3632:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"3643:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3628:3:30"},"nodeType":"YulFunctionCall","src":"3628:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3620:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3662:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"3673:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3655:6:30"},"nodeType":"YulFunctionCall","src":"3655:25:30"},"nodeType":"YulExpressionStatement","src":"3655:25:30"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3579:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3590:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3601:4:30","type":""}],"src":"3509:177:30"},{"body":{"nodeType":"YulBlock","src":"3803:318:30","statements":[{"body":{"nodeType":"YulBlock","src":"3849:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3858:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3861:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3851:6:30"},"nodeType":"YulFunctionCall","src":"3851:12:30"},"nodeType":"YulExpressionStatement","src":"3851:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3824:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"3833:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3820:3:30"},"nodeType":"YulFunctionCall","src":"3820:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"3845:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3816:3:30"},"nodeType":"YulFunctionCall","src":"3816:32:30"},"nodeType":"YulIf","src":"3813:52:30"},{"nodeType":"YulVariableDeclaration","src":"3874:37:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3901:9:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3888:12:30"},"nodeType":"YulFunctionCall","src":"3888:23:30"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3878:6:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"3954:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3963:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3966:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3956:6:30"},"nodeType":"YulFunctionCall","src":"3956:12:30"},"nodeType":"YulExpressionStatement","src":"3956:12:30"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3926:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"3934:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3923:2:30"},"nodeType":"YulFunctionCall","src":"3923:30:30"},"nodeType":"YulIf","src":"3920:50:30"},{"nodeType":"YulAssignment","src":"3979:85:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4036:9:30"},{"name":"offset","nodeType":"YulIdentifier","src":"4047:6:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4032:3:30"},"nodeType":"YulFunctionCall","src":"4032:22:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4056:7:30"}],"functionName":{"name":"abi_decode_struct_OrderComponents_calldata","nodeType":"YulIdentifier","src":"3989:42:30"},"nodeType":"YulFunctionCall","src":"3989:75:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3979:6:30"}]},{"nodeType":"YulAssignment","src":"4073:42:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4100:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"4111:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4096:3:30"},"nodeType":"YulFunctionCall","src":"4096:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4083:12:30"},"nodeType":"YulFunctionCall","src":"4083:32:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4073:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_Order_$1641_calldata_ptrt_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3761:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3772:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3784:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3792:6:30","type":""}],"src":"3691:430:30"},{"body":{"nodeType":"YulBlock","src":"4265:254:30","statements":[{"body":{"nodeType":"YulBlock","src":"4312:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4321:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4324:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4314:6:30"},"nodeType":"YulFunctionCall","src":"4314:12:30"},"nodeType":"YulExpressionStatement","src":"4314:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4286:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"4295:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4282:3:30"},"nodeType":"YulFunctionCall","src":"4282:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"4307:3:30","type":"","value":"608"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4278:3:30"},"nodeType":"YulFunctionCall","src":"4278:33:30"},"nodeType":"YulIf","src":"4275:53:30"},{"nodeType":"YulAssignment","src":"4337:72:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4390:9:30"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4401:7:30"}],"functionName":{"name":"abi_decode_struct_OrderParameters_calldata","nodeType":"YulIdentifier","src":"4347:42:30"},"nodeType":"YulFunctionCall","src":"4347:62:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4337:6:30"}]},{"nodeType":"YulAssignment","src":"4418:43:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4445:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"4456:3:30","type":"","value":"544"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4441:3:30"},"nodeType":"YulFunctionCall","src":"4441:19:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4428:12:30"},"nodeType":"YulFunctionCall","src":"4428:33:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4418:6:30"}]},{"nodeType":"YulAssignment","src":"4470:43:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4497:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"4508:3:30","type":"","value":"576"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:30"},"nodeType":"YulFunctionCall","src":"4493:19:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4480:12:30"},"nodeType":"YulFunctionCall","src":"4480:33:30"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4470:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$1635_calldata_ptrt_bytes32t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4215:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4226:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4238:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4246:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4254:6:30","type":""}],"src":"4126:393:30"},{"body":{"nodeType":"YulBlock","src":"4573:147:30","statements":[{"nodeType":"YulAssignment","src":"4583:29:30","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4605:6:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4592:12:30"},"nodeType":"YulFunctionCall","src":"4592:20:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4583:5:30"}]},{"body":{"nodeType":"YulBlock","src":"4698:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4707:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4710:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4700:6:30"},"nodeType":"YulFunctionCall","src":"4700:12:30"},"nodeType":"YulExpressionStatement","src":"4700:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4634:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4645:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"4652:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4641:3:30"},"nodeType":"YulFunctionCall","src":"4641:54:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4631:2:30"},"nodeType":"YulFunctionCall","src":"4631:65:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4624:6:30"},"nodeType":"YulFunctionCall","src":"4624:73:30"},"nodeType":"YulIf","src":"4621:93:30"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4552:6:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4563:5:30","type":""}],"src":"4524:196:30"},{"body":{"nodeType":"YulBlock","src":"4795:116:30","statements":[{"body":{"nodeType":"YulBlock","src":"4841:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4850:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4853:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4843:6:30"},"nodeType":"YulFunctionCall","src":"4843:12:30"},"nodeType":"YulExpressionStatement","src":"4843:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4816:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"4825:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4812:3:30"},"nodeType":"YulFunctionCall","src":"4812:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"4837:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4808:3:30"},"nodeType":"YulFunctionCall","src":"4808:32:30"},"nodeType":"YulIf","src":"4805:52:30"},{"nodeType":"YulAssignment","src":"4866:39:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4895:9:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4876:18:30"},"nodeType":"YulFunctionCall","src":"4876:29:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4866:6:30"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4761:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4772:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4784:6:30","type":""}],"src":"4725:186:30"},{"body":{"nodeType":"YulBlock","src":"5093:658:30","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5121:2:30","type":"","value":"96"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:30"},"nodeType":"YulFunctionCall","src":"5103:21:30"},"nodeType":"YulExpressionStatement","src":"5103:21:30"},{"nodeType":"YulVariableDeclaration","src":"5133:27:30","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5153:6:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5147:5:30"},"nodeType":"YulFunctionCall","src":"5147:13:30"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5137:6:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5180:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5191:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5176:3:30"},"nodeType":"YulFunctionCall","src":"5176:18:30"},{"name":"length","nodeType":"YulIdentifier","src":"5196:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5169:6:30"},"nodeType":"YulFunctionCall","src":"5169:34:30"},"nodeType":"YulExpressionStatement","src":"5169:34:30"},{"nodeType":"YulVariableDeclaration","src":"5212:10:30","value":{"kind":"number","nodeType":"YulLiteral","src":"5221:1:30","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5216:1:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"5283:93:30","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5312:9:30"},{"name":"i","nodeType":"YulIdentifier","src":"5323:1:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5308:3:30"},"nodeType":"YulFunctionCall","src":"5308:17:30"},{"kind":"number","nodeType":"YulLiteral","src":"5327:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5304:3:30"},"nodeType":"YulFunctionCall","src":"5304:27:30"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5347:6:30"},{"name":"i","nodeType":"YulIdentifier","src":"5355:1:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5343:3:30"},"nodeType":"YulFunctionCall","src":"5343:14:30"},{"kind":"number","nodeType":"YulLiteral","src":"5359:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5339:3:30"},"nodeType":"YulFunctionCall","src":"5339:25:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5333:5:30"},"nodeType":"YulFunctionCall","src":"5333:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5297:6:30"},"nodeType":"YulFunctionCall","src":"5297:69:30"},"nodeType":"YulExpressionStatement","src":"5297:69:30"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5242:1:30"},{"name":"length","nodeType":"YulIdentifier","src":"5245:6:30"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5239:2:30"},"nodeType":"YulFunctionCall","src":"5239:13:30"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5253:21:30","statements":[{"nodeType":"YulAssignment","src":"5255:17:30","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5264:1:30"},{"kind":"number","nodeType":"YulLiteral","src":"5267:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5260:3:30"},"nodeType":"YulFunctionCall","src":"5260:12:30"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5255:1:30"}]}]},"pre":{"nodeType":"YulBlock","src":"5235:3:30","statements":[]},"src":"5231:145:30"},{"body":{"nodeType":"YulBlock","src":"5410:67:30","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5439:9:30"},{"name":"length","nodeType":"YulIdentifier","src":"5450:6:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5435:3:30"},"nodeType":"YulFunctionCall","src":"5435:22:30"},{"kind":"number","nodeType":"YulLiteral","src":"5459:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5431:3:30"},"nodeType":"YulFunctionCall","src":"5431:32:30"},{"kind":"number","nodeType":"YulLiteral","src":"5465:1:30","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5424:6:30"},"nodeType":"YulFunctionCall","src":"5424:43:30"},"nodeType":"YulExpressionStatement","src":"5424:43:30"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5391:1:30"},{"name":"length","nodeType":"YulIdentifier","src":"5394:6:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5388:2:30"},"nodeType":"YulFunctionCall","src":"5388:13:30"},"nodeType":"YulIf","src":"5385:92:30"},{"nodeType":"YulAssignment","src":"5486:122:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5502:9:30"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5521:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"5529:2:30","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5517:3:30"},"nodeType":"YulFunctionCall","src":"5517:15:30"},{"kind":"number","nodeType":"YulLiteral","src":"5534:66:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5513:3:30"},"nodeType":"YulFunctionCall","src":"5513:88:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5498:3:30"},"nodeType":"YulFunctionCall","src":"5498:104:30"},{"kind":"number","nodeType":"YulLiteral","src":"5604:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5494:3:30"},"nodeType":"YulFunctionCall","src":"5494:114:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5486:4:30"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5628:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5639:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5624:3:30"},"nodeType":"YulFunctionCall","src":"5624:20:30"},{"name":"value1","nodeType":"YulIdentifier","src":"5646:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5617:6:30"},"nodeType":"YulFunctionCall","src":"5617:36:30"},"nodeType":"YulExpressionStatement","src":"5617:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5673:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5684:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5669:3:30"},"nodeType":"YulFunctionCall","src":"5669:18:30"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5693:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"5701:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5689:3:30"},"nodeType":"YulFunctionCall","src":"5689:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5662:6:30"},"nodeType":"YulFunctionCall","src":"5662:83:30"},"nodeType":"YulExpressionStatement","src":"5662:83:30"}]},"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:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5057:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5065:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5073:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5084:4:30","type":""}],"src":"4916:835:30"},{"body":{"nodeType":"YulBlock","src":"5857:125:30","statements":[{"nodeType":"YulAssignment","src":"5867:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5879:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"5890:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5875:3:30"},"nodeType":"YulFunctionCall","src":"5875:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5867:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5909:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5924:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"5932:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5920:3:30"},"nodeType":"YulFunctionCall","src":"5920:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5902:6:30"},"nodeType":"YulFunctionCall","src":"5902:74:30"},"nodeType":"YulExpressionStatement","src":"5902:74:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5826:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5837:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5848:4:30","type":""}],"src":"5756:226:30"},{"body":{"nodeType":"YulBlock","src":"6019:152:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6036:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6039:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6029:6:30"},"nodeType":"YulFunctionCall","src":"6029:88:30"},"nodeType":"YulExpressionStatement","src":"6029:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6133:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6136:4:30","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6126:6:30"},"nodeType":"YulFunctionCall","src":"6126:15:30"},"nodeType":"YulExpressionStatement","src":"6126:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6157:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6160:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6150:6:30"},"nodeType":"YulFunctionCall","src":"6150:15:30"},"nodeType":"YulExpressionStatement","src":"6150:15:30"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"5987:184:30"},{"body":{"nodeType":"YulBlock","src":"6276:281:30","statements":[{"nodeType":"YulVariableDeclaration","src":"6286:51:30","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"6325:11:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6312:12:30"},"nodeType":"YulFunctionCall","src":"6312:25:30"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"6290:18:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"6485:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6494:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6497:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6487:6:30"},"nodeType":"YulFunctionCall","src":"6487:12:30"},"nodeType":"YulExpressionStatement","src":"6487:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6360:18:30"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"6388:12:30"},"nodeType":"YulFunctionCall","src":"6388:14:30"},{"name":"base_ref","nodeType":"YulIdentifier","src":"6404:8:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6384:3:30"},"nodeType":"YulFunctionCall","src":"6384:29:30"},{"kind":"number","nodeType":"YulLiteral","src":"6415:66:30","type":"","value":"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:30"},"nodeType":"YulFunctionCall","src":"6380:102:30"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6356:3:30"},"nodeType":"YulFunctionCall","src":"6356:127:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6349:6:30"},"nodeType":"YulFunctionCall","src":"6349:135:30"},"nodeType":"YulIf","src":"6346:155:30"},{"nodeType":"YulAssignment","src":"6510:41:30","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"6522:8:30"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6532:18:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6518:3:30"},"nodeType":"YulFunctionCall","src":"6518:33:30"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"6510:4:30"}]}]},"name":"access_calldata_tail_t_struct$_Order_$1641_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"6241:8:30","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"6251:11:30","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"6267:4:30","type":""}],"src":"6176:381:30"},{"body":{"nodeType":"YulBlock","src":"6656:486:30","statements":[{"nodeType":"YulVariableDeclaration","src":"6666:51:30","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"6705:11:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6692:12:30"},"nodeType":"YulFunctionCall","src":"6692:25:30"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"6670:18:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"6865:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6874:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6877:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6867:6:30"},"nodeType":"YulFunctionCall","src":"6867:12:30"},"nodeType":"YulExpressionStatement","src":"6867:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6740:18:30"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"6768:12:30"},"nodeType":"YulFunctionCall","src":"6768:14:30"},{"name":"base_ref","nodeType":"YulIdentifier","src":"6784:8:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6764:3:30"},"nodeType":"YulFunctionCall","src":"6764:29:30"},{"kind":"number","nodeType":"YulLiteral","src":"6795:66:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6760:3:30"},"nodeType":"YulFunctionCall","src":"6760:102:30"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6736:3:30"},"nodeType":"YulFunctionCall","src":"6736:127:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6729:6:30"},"nodeType":"YulFunctionCall","src":"6729:135:30"},"nodeType":"YulIf","src":"6726:155:30"},{"nodeType":"YulVariableDeclaration","src":"6890:47:30","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"6908:8:30"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"6918:18:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6904:3:30"},"nodeType":"YulFunctionCall","src":"6904:33:30"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"6894:6:30","type":""}]},{"nodeType":"YulAssignment","src":"6946:30:30","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"6969:6:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6956:12:30"},"nodeType":"YulFunctionCall","src":"6956:20:30"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6946:6:30"}]},{"body":{"nodeType":"YulBlock","src":"7019:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7028:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7031:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7021:6:30"},"nodeType":"YulFunctionCall","src":"7021:12:30"},"nodeType":"YulExpressionStatement","src":"7021:12:30"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6991:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"6999:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6988:2:30"},"nodeType":"YulFunctionCall","src":"6988:30:30"},"nodeType":"YulIf","src":"6985:50:30"},{"nodeType":"YulAssignment","src":"7044:25:30","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"7056:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"7064:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7052:3:30"},"nodeType":"YulFunctionCall","src":"7052:17:30"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"7044:4:30"}]},{"body":{"nodeType":"YulBlock","src":"7120:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7129:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7132:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7122:6:30"},"nodeType":"YulFunctionCall","src":"7122:12:30"},"nodeType":"YulExpressionStatement","src":"7122:12:30"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"7085:4:30"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"7095:12:30"},"nodeType":"YulFunctionCall","src":"7095:14:30"},{"name":"length","nodeType":"YulIdentifier","src":"7111:6:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7091:3:30"},"nodeType":"YulFunctionCall","src":"7091:27:30"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"7081:3:30"},"nodeType":"YulFunctionCall","src":"7081:38:30"},"nodeType":"YulIf","src":"7078:58:30"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"6613:8:30","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"6623:11:30","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"6639:4:30","type":""},{"name":"length","nodeType":"YulTypedName","src":"6645:6:30","type":""}],"src":"6562:580:30"},{"body":{"nodeType":"YulBlock","src":"7179:152:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7196:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7199:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7189:6:30"},"nodeType":"YulFunctionCall","src":"7189:88:30"},"nodeType":"YulExpressionStatement","src":"7189:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7293:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7296:4:30","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7286:6:30"},"nodeType":"YulFunctionCall","src":"7286:15:30"},"nodeType":"YulExpressionStatement","src":"7286:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7317:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7320:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7310:6:30"},"nodeType":"YulFunctionCall","src":"7310:15:30"},"nodeType":"YulExpressionStatement","src":"7310:15:30"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7147:184:30"},{"body":{"nodeType":"YulBlock","src":"7493:211:30","statements":[{"nodeType":"YulAssignment","src":"7503:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7515:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7526:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7511:3:30"},"nodeType":"YulFunctionCall","src":"7511:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7503:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7545:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"7556:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7538:6:30"},"nodeType":"YulFunctionCall","src":"7538:25:30"},"nodeType":"YulExpressionStatement","src":"7538:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7583:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7594:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7579:3:30"},"nodeType":"YulFunctionCall","src":"7579:18:30"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7603:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"7611:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7599:3:30"},"nodeType":"YulFunctionCall","src":"7599:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7572:6:30"},"nodeType":"YulFunctionCall","src":"7572:83:30"},"nodeType":"YulExpressionStatement","src":"7572:83:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7675:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7686:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7671:3:30"},"nodeType":"YulFunctionCall","src":"7671:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"7691:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7664:6:30"},"nodeType":"YulFunctionCall","src":"7664:34:30"},"nodeType":"YulExpressionStatement","src":"7664:34:30"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_uint256__to_t_bytes32_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7446:9:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7457:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7465:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7473:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7484:4:30","type":""}],"src":"7336:368:30"},{"body":{"nodeType":"YulBlock","src":"7860:178:30","statements":[{"nodeType":"YulAssignment","src":"7870:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7882:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7893:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7878:3:30"},"nodeType":"YulFunctionCall","src":"7878:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7870:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7912:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"7923:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7905:6:30"},"nodeType":"YulFunctionCall","src":"7905:25:30"},"nodeType":"YulExpressionStatement","src":"7905:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7950:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"7961:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7946:3:30"},"nodeType":"YulFunctionCall","src":"7946:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"7966:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7939:6:30"},"nodeType":"YulFunctionCall","src":"7939:34:30"},"nodeType":"YulExpressionStatement","src":"7939:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7993:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8004:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7989:3:30"},"nodeType":"YulFunctionCall","src":"7989:18:30"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8023:6:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8016:6:30"},"nodeType":"YulFunctionCall","src":"8016:14:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8009:6:30"},"nodeType":"YulFunctionCall","src":"8009:22:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7982:6:30"},"nodeType":"YulFunctionCall","src":"7982:50:30"},"nodeType":"YulExpressionStatement","src":"7982:50:30"}]},"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":"7813:9:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7824:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7832:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7840:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7851:4:30","type":""}],"src":"7709:329:30"},{"body":{"nodeType":"YulBlock","src":"8084:360:30","statements":[{"nodeType":"YulAssignment","src":"8094:19:30","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8110:2:30","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8104:5:30"},"nodeType":"YulFunctionCall","src":"8104:9:30"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8094:6:30"}]},{"nodeType":"YulVariableDeclaration","src":"8122:34:30","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8144:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"8152:3:30","type":"","value":"544"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8140:3:30"},"nodeType":"YulFunctionCall","src":"8140:16:30"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"8126:10:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"8239:168:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8260:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8263:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8253:6:30"},"nodeType":"YulFunctionCall","src":"8253:88:30"},"nodeType":"YulExpressionStatement","src":"8253:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8361:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8364:4:30","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8354:6:30"},"nodeType":"YulFunctionCall","src":"8354:15:30"},"nodeType":"YulExpressionStatement","src":"8354:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8389:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8392:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8382:6:30"},"nodeType":"YulFunctionCall","src":"8382:15:30"},"nodeType":"YulExpressionStatement","src":"8382:15:30"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8174:10:30"},{"kind":"number","nodeType":"YulLiteral","src":"8186:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8171:2:30"},"nodeType":"YulFunctionCall","src":"8171:34:30"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8210:10:30"},{"name":"memPtr","nodeType":"YulIdentifier","src":"8222:6:30"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8207:2:30"},"nodeType":"YulFunctionCall","src":"8207:22:30"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8168:2:30"},"nodeType":"YulFunctionCall","src":"8168:62:30"},"nodeType":"YulIf","src":"8165:242:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8423:2:30","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8427:10:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8416:6:30"},"nodeType":"YulFunctionCall","src":"8416:22:30"},"nodeType":"YulExpressionStatement","src":"8416:22:30"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"8073:6:30","type":""}],"src":"8043:401:30"},{"body":{"nodeType":"YulBlock","src":"8552:1455:30","statements":[{"body":{"nodeType":"YulBlock","src":"8599:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8608:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8611:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8601:6:30"},"nodeType":"YulFunctionCall","src":"8601:12:30"},"nodeType":"YulExpressionStatement","src":"8601:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8573:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"8582:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8569:3:30"},"nodeType":"YulFunctionCall","src":"8569:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"8594:3:30","type":"","value":"544"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8565:3:30"},"nodeType":"YulFunctionCall","src":"8565:33:30"},"nodeType":"YulIf","src":"8562:53:30"},{"nodeType":"YulVariableDeclaration","src":"8624:30:30","value":{"arguments":[],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8637:15:30"},"nodeType":"YulFunctionCall","src":"8637:17:30"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8628:5:30","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8670:5:30"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8696:9:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8677:18:30"},"nodeType":"YulFunctionCall","src":"8677:29:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8663:6:30"},"nodeType":"YulFunctionCall","src":"8663:44:30"},"nodeType":"YulExpressionStatement","src":"8663:44:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8727:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"8734:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8723:3:30"},"nodeType":"YulFunctionCall","src":"8723:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8762:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8773:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8758:3:30"},"nodeType":"YulFunctionCall","src":"8758:18:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8739:18:30"},"nodeType":"YulFunctionCall","src":"8739:38:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8716:6:30"},"nodeType":"YulFunctionCall","src":"8716:62:30"},"nodeType":"YulExpressionStatement","src":"8716:62:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8798:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"8805:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8794:3:30"},"nodeType":"YulFunctionCall","src":"8794:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8827:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8838:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8823:3:30"},"nodeType":"YulFunctionCall","src":"8823:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8810:12:30"},"nodeType":"YulFunctionCall","src":"8810:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8787:6:30"},"nodeType":"YulFunctionCall","src":"8787:56:30"},"nodeType":"YulExpressionStatement","src":"8787:56:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8863:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"8870:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8859:3:30"},"nodeType":"YulFunctionCall","src":"8859:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8898:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8909:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8894:3:30"},"nodeType":"YulFunctionCall","src":"8894:18:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8875:18:30"},"nodeType":"YulFunctionCall","src":"8875:38:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8852:6:30"},"nodeType":"YulFunctionCall","src":"8852:62:30"},"nodeType":"YulExpressionStatement","src":"8852:62:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8934:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"8941:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8930:3:30"},"nodeType":"YulFunctionCall","src":"8930:15:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8970:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"8981:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8966:3:30"},"nodeType":"YulFunctionCall","src":"8966:19:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8947:18:30"},"nodeType":"YulFunctionCall","src":"8947:39:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8923:6:30"},"nodeType":"YulFunctionCall","src":"8923:64:30"},"nodeType":"YulExpressionStatement","src":"8923:64:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9007:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"9014:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9003:3:30"},"nodeType":"YulFunctionCall","src":"9003:15:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9043:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"9054:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9039:3:30"},"nodeType":"YulFunctionCall","src":"9039:19:30"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"9020:18:30"},"nodeType":"YulFunctionCall","src":"9020:39:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8996:6:30"},"nodeType":"YulFunctionCall","src":"8996:64:30"},"nodeType":"YulExpressionStatement","src":"8996:64:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9080:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"9087:3:30","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9076:3:30"},"nodeType":"YulFunctionCall","src":"9076:15:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9110:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"9121:3:30","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9106:3:30"},"nodeType":"YulFunctionCall","src":"9106:19:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9093:12:30"},"nodeType":"YulFunctionCall","src":"9093:33:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9069:6:30"},"nodeType":"YulFunctionCall","src":"9069:58:30"},"nodeType":"YulExpressionStatement","src":"9069:58:30"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9147:5:30"},{"kind":"number","nodeType":"YulLiteral","src":"9154:3:30","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9143:3:30"},"nodeType":"YulFunctionCall","src":"9143:15:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9177:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"9188:3:30","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9173:3:30"},"nodeType":"YulFunctionCall","src":"9173:19:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9160:12:30"},"nodeType":"YulFunctionCall","src":"9160:33:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9136:6:30"},"nodeType":"YulFunctionCall","src":"9136:58:30"},"nodeType":"YulExpressionStatement","src":"9136:58:30"},{"nodeType":"YulVariableDeclaration","src":"9203:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9213:3:30","type":"","value":"256"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9207:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9236:5:30"},{"name":"_1","nodeType":"YulIdentifier","src":"9243:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9232:3:30"},"nodeType":"YulFunctionCall","src":"9232:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9265:9:30"},{"name":"_1","nodeType":"YulIdentifier","src":"9276:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9261:3:30"},"nodeType":"YulFunctionCall","src":"9261:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9248:12:30"},"nodeType":"YulFunctionCall","src":"9248:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9225:6:30"},"nodeType":"YulFunctionCall","src":"9225:56:30"},"nodeType":"YulExpressionStatement","src":"9225:56:30"},{"nodeType":"YulVariableDeclaration","src":"9290:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9300:3:30","type":"","value":"288"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9294:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9323:5:30"},{"name":"_2","nodeType":"YulIdentifier","src":"9330:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9319:3:30"},"nodeType":"YulFunctionCall","src":"9319:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9352:9:30"},{"name":"_2","nodeType":"YulIdentifier","src":"9363:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9348:3:30"},"nodeType":"YulFunctionCall","src":"9348:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9335:12:30"},"nodeType":"YulFunctionCall","src":"9335:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9312:6:30"},"nodeType":"YulFunctionCall","src":"9312:56:30"},"nodeType":"YulExpressionStatement","src":"9312:56:30"},{"nodeType":"YulVariableDeclaration","src":"9377:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9387:3:30","type":"","value":"320"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9381:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9410:5:30"},{"name":"_3","nodeType":"YulIdentifier","src":"9417:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9406:3:30"},"nodeType":"YulFunctionCall","src":"9406:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9439:9:30"},{"name":"_3","nodeType":"YulIdentifier","src":"9450:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9435:3:30"},"nodeType":"YulFunctionCall","src":"9435:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9422:12:30"},"nodeType":"YulFunctionCall","src":"9422:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9399:6:30"},"nodeType":"YulFunctionCall","src":"9399:56:30"},"nodeType":"YulExpressionStatement","src":"9399:56:30"},{"nodeType":"YulVariableDeclaration","src":"9464:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9474:3:30","type":"","value":"352"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9468:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9497:5:30"},{"name":"_4","nodeType":"YulIdentifier","src":"9504:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9493:3:30"},"nodeType":"YulFunctionCall","src":"9493:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9526:9:30"},{"name":"_4","nodeType":"YulIdentifier","src":"9537:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9522:3:30"},"nodeType":"YulFunctionCall","src":"9522:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9509:12:30"},"nodeType":"YulFunctionCall","src":"9509:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9486:6:30"},"nodeType":"YulFunctionCall","src":"9486:56:30"},"nodeType":"YulExpressionStatement","src":"9486:56:30"},{"nodeType":"YulVariableDeclaration","src":"9551:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9561:3:30","type":"","value":"384"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"9555:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9584:5:30"},{"name":"_5","nodeType":"YulIdentifier","src":"9591:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9580:3:30"},"nodeType":"YulFunctionCall","src":"9580:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9613:9:30"},{"name":"_5","nodeType":"YulIdentifier","src":"9624:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9609:3:30"},"nodeType":"YulFunctionCall","src":"9609:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9596:12:30"},"nodeType":"YulFunctionCall","src":"9596:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9573:6:30"},"nodeType":"YulFunctionCall","src":"9573:56:30"},"nodeType":"YulExpressionStatement","src":"9573:56:30"},{"nodeType":"YulVariableDeclaration","src":"9638:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9648:3:30","type":"","value":"416"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"9642:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9671:5:30"},{"name":"_6","nodeType":"YulIdentifier","src":"9678:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9667:3:30"},"nodeType":"YulFunctionCall","src":"9667:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9700:9:30"},{"name":"_6","nodeType":"YulIdentifier","src":"9711:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9696:3:30"},"nodeType":"YulFunctionCall","src":"9696:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9683:12:30"},"nodeType":"YulFunctionCall","src":"9683:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9660:6:30"},"nodeType":"YulFunctionCall","src":"9660:56:30"},"nodeType":"YulExpressionStatement","src":"9660:56:30"},{"nodeType":"YulVariableDeclaration","src":"9725:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9735:3:30","type":"","value":"448"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"9729:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9758:5:30"},{"name":"_7","nodeType":"YulIdentifier","src":"9765:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9754:3:30"},"nodeType":"YulFunctionCall","src":"9754:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9787:9:30"},{"name":"_7","nodeType":"YulIdentifier","src":"9798:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9783:3:30"},"nodeType":"YulFunctionCall","src":"9783:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9770:12:30"},"nodeType":"YulFunctionCall","src":"9770:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9747:6:30"},"nodeType":"YulFunctionCall","src":"9747:56:30"},"nodeType":"YulExpressionStatement","src":"9747:56:30"},{"nodeType":"YulVariableDeclaration","src":"9812:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9822:3:30","type":"","value":"480"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"9816:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9845:5:30"},{"name":"_8","nodeType":"YulIdentifier","src":"9852:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9841:3:30"},"nodeType":"YulFunctionCall","src":"9841:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9874:9:30"},{"name":"_8","nodeType":"YulIdentifier","src":"9885:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9870:3:30"},"nodeType":"YulFunctionCall","src":"9870:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9857:12:30"},"nodeType":"YulFunctionCall","src":"9857:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9834:6:30"},"nodeType":"YulFunctionCall","src":"9834:56:30"},"nodeType":"YulExpressionStatement","src":"9834:56:30"},{"nodeType":"YulVariableDeclaration","src":"9899:13:30","value":{"kind":"number","nodeType":"YulLiteral","src":"9909:3:30","type":"","value":"512"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"9903:2:30","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9932:5:30"},{"name":"_9","nodeType":"YulIdentifier","src":"9939:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9928:3:30"},"nodeType":"YulFunctionCall","src":"9928:14:30"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9961:9:30"},{"name":"_9","nodeType":"YulIdentifier","src":"9972:2:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9957:3:30"},"nodeType":"YulFunctionCall","src":"9957:18:30"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9944:12:30"},"nodeType":"YulFunctionCall","src":"9944:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9921:6:30"},"nodeType":"YulFunctionCall","src":"9921:56:30"},"nodeType":"YulExpressionStatement","src":"9921:56:30"},{"nodeType":"YulAssignment","src":"9986:15:30","value":{"name":"value","nodeType":"YulIdentifier","src":"9996:5:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9986:6:30"}]}]},"name":"abi_decode_tuple_t_struct$_OrderParameters_$1635_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8518:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8529:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8541:6:30","type":""}],"src":"8449:1558:30"},{"body":{"nodeType":"YulBlock","src":"10044:152:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10061:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10064:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10054:6:30"},"nodeType":"YulFunctionCall","src":"10054:88:30"},"nodeType":"YulExpressionStatement","src":"10054:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10158:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10161:4:30","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10151:6:30"},"nodeType":"YulFunctionCall","src":"10151:15:30"},"nodeType":"YulExpressionStatement","src":"10151:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10182:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10185:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10175:6:30"},"nodeType":"YulFunctionCall","src":"10175:15:30"},"nodeType":"YulExpressionStatement","src":"10175:15:30"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"10012:184:30"},{"body":{"nodeType":"YulBlock","src":"10253:176:30","statements":[{"body":{"nodeType":"YulBlock","src":"10372:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10374:16:30"},"nodeType":"YulFunctionCall","src":"10374:18:30"},"nodeType":"YulExpressionStatement","src":"10374:18:30"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10284:1:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10277:6:30"},"nodeType":"YulFunctionCall","src":"10277:9:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10270:6:30"},"nodeType":"YulFunctionCall","src":"10270:17:30"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10292:1:30"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10299:66:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"x","nodeType":"YulIdentifier","src":"10367:1:30"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10295:3:30"},"nodeType":"YulFunctionCall","src":"10295:74:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10289:2:30"},"nodeType":"YulFunctionCall","src":"10289:81:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10266:3:30"},"nodeType":"YulFunctionCall","src":"10266:105:30"},"nodeType":"YulIf","src":"10263:131:30"},{"nodeType":"YulAssignment","src":"10403:20:30","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10418:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"10421:1:30"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10414:3:30"},"nodeType":"YulFunctionCall","src":"10414:9:30"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"10403:7:30"}]}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10232:1:30","type":""},{"name":"y","nodeType":"YulTypedName","src":"10235:1:30","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"10241:7:30","type":""}],"src":"10201:228:30"},{"body":{"nodeType":"YulBlock","src":"10482:80:30","statements":[{"body":{"nodeType":"YulBlock","src":"10509:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10511:16:30"},"nodeType":"YulFunctionCall","src":"10511:18:30"},"nodeType":"YulExpressionStatement","src":"10511:18:30"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10498:1:30"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10505:1:30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10501:3:30"},"nodeType":"YulFunctionCall","src":"10501:6:30"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10495:2:30"},"nodeType":"YulFunctionCall","src":"10495:13:30"},"nodeType":"YulIf","src":"10492:39:30"},{"nodeType":"YulAssignment","src":"10540:16:30","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10551:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"10554:1:30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10547:3:30"},"nodeType":"YulFunctionCall","src":"10547:9:30"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10540:3:30"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10465:1:30","type":""},{"name":"y","nodeType":"YulTypedName","src":"10468:1:30","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10474:3:30","type":""}],"src":"10434:128:30"},{"body":{"nodeType":"YulBlock","src":"10599:152:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10616:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10619:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10609:6:30"},"nodeType":"YulFunctionCall","src":"10609:88:30"},"nodeType":"YulExpressionStatement","src":"10609:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10713:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10716:4:30","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10706:6:30"},"nodeType":"YulFunctionCall","src":"10706:15:30"},"nodeType":"YulExpressionStatement","src":"10706:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10737:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10740:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10730:6:30"},"nodeType":"YulFunctionCall","src":"10730:15:30"},"nodeType":"YulExpressionStatement","src":"10730:15:30"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"10567:184:30"},{"body":{"nodeType":"YulBlock","src":"10802:228:30","statements":[{"body":{"nodeType":"YulBlock","src":"10833:168:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10854:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10857:77:30","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10847:6:30"},"nodeType":"YulFunctionCall","src":"10847:88:30"},"nodeType":"YulExpressionStatement","src":"10847:88:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10955:1:30","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10958:4:30","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10948:6:30"},"nodeType":"YulFunctionCall","src":"10948:15:30"},"nodeType":"YulExpressionStatement","src":"10948:15:30"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10983:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10986:4:30","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10976:6:30"},"nodeType":"YulFunctionCall","src":"10976:15:30"},"nodeType":"YulExpressionStatement","src":"10976:15:30"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10822:1:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10815:6:30"},"nodeType":"YulFunctionCall","src":"10815:9:30"},"nodeType":"YulIf","src":"10812:189:30"},{"nodeType":"YulAssignment","src":"11010:14:30","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11019:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"11022:1:30"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"11015:3:30"},"nodeType":"YulFunctionCall","src":"11015:9:30"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"11010:1:30"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10787:1:30","type":""},{"name":"y","nodeType":"YulTypedName","src":"10790:1:30","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"10796:1:30","type":""}],"src":"10756:274:30"},{"body":{"nodeType":"YulBlock","src":"11084:76:30","statements":[{"body":{"nodeType":"YulBlock","src":"11106:22:30","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11108:16:30"},"nodeType":"YulFunctionCall","src":"11108:18:30"},"nodeType":"YulExpressionStatement","src":"11108:18:30"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11100:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"11103:1:30"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11097:2:30"},"nodeType":"YulFunctionCall","src":"11097:8:30"},"nodeType":"YulIf","src":"11094:34:30"},{"nodeType":"YulAssignment","src":"11137:17:30","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11149:1:30"},{"name":"y","nodeType":"YulIdentifier","src":"11152:1:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11145:3:30"},"nodeType":"YulFunctionCall","src":"11145:9:30"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"11137:4:30"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"11066:1:30","type":""},{"name":"y","nodeType":"YulTypedName","src":"11069:1:30","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"11075:4:30","type":""}],"src":"11035:125:30"},{"body":{"nodeType":"YulBlock","src":"11294:168:30","statements":[{"nodeType":"YulAssignment","src":"11304:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11316:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11327:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11312:3:30"},"nodeType":"YulFunctionCall","src":"11312:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11304:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11346:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"11357:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11339:6:30"},"nodeType":"YulFunctionCall","src":"11339:25:30"},"nodeType":"YulExpressionStatement","src":"11339:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11384:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11395:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11380:3:30"},"nodeType":"YulFunctionCall","src":"11380:18:30"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11404:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"11412:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11400:3:30"},"nodeType":"YulFunctionCall","src":"11400:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11373:6:30"},"nodeType":"YulFunctionCall","src":"11373:83:30"},"nodeType":"YulExpressionStatement","src":"11373:83:30"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11255:9:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11266:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11274:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11285:4:30","type":""}],"src":"11165:297:30"},{"body":{"nodeType":"YulBlock","src":"11604:168:30","statements":[{"nodeType":"YulAssignment","src":"11614:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11626:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11637:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11622:3:30"},"nodeType":"YulFunctionCall","src":"11622:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11614:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11656:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11671:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"11679:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11667:3:30"},"nodeType":"YulFunctionCall","src":"11667:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11649:6:30"},"nodeType":"YulFunctionCall","src":"11649:74:30"},"nodeType":"YulExpressionStatement","src":"11649:74:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11743:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11754:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11739:3:30"},"nodeType":"YulFunctionCall","src":"11739:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"11759:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11732:6:30"},"nodeType":"YulFunctionCall","src":"11732:34:30"},"nodeType":"YulExpressionStatement","src":"11732:34:30"}]},"name":"abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11565:9:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11576:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11584:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11595:4:30","type":""}],"src":"11467:305:30"},{"body":{"nodeType":"YulBlock","src":"11934:241:30","statements":[{"nodeType":"YulAssignment","src":"11944:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11956:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"11967:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11952:3:30"},"nodeType":"YulFunctionCall","src":"11952:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11944:4:30"}]},{"nodeType":"YulVariableDeclaration","src":"11979:52:30","value":{"kind":"number","nodeType":"YulLiteral","src":"11989:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11983:2:30","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12047:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12062:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"12070:2:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12058:3:30"},"nodeType":"YulFunctionCall","src":"12058:15:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12040:6:30"},"nodeType":"YulFunctionCall","src":"12040:34:30"},"nodeType":"YulExpressionStatement","src":"12040:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12094:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12105:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12090:3:30"},"nodeType":"YulFunctionCall","src":"12090:18:30"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12114:6:30"},{"name":"_1","nodeType":"YulIdentifier","src":"12122:2:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12110:3:30"},"nodeType":"YulFunctionCall","src":"12110:15:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12083:6:30"},"nodeType":"YulFunctionCall","src":"12083:43:30"},"nodeType":"YulExpressionStatement","src":"12083:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12146:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12157:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12142:3:30"},"nodeType":"YulFunctionCall","src":"12142:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"12162:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12135:6:30"},"nodeType":"YulFunctionCall","src":"12135:34:30"},"nodeType":"YulExpressionStatement","src":"12135:34:30"}]},"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":"11887:9:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11898:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11906:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11914:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11925:4:30","type":""}],"src":"11777:398:30"},{"body":{"nodeType":"YulBlock","src":"12261:103:30","statements":[{"body":{"nodeType":"YulBlock","src":"12307:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12316:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12319:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12309:6:30"},"nodeType":"YulFunctionCall","src":"12309:12:30"},"nodeType":"YulExpressionStatement","src":"12309:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12282:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"12291:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12278:3:30"},"nodeType":"YulFunctionCall","src":"12278:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"12303:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12274:3:30"},"nodeType":"YulFunctionCall","src":"12274:32:30"},"nodeType":"YulIf","src":"12271:52:30"},{"nodeType":"YulAssignment","src":"12332:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12348:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12342:5:30"},"nodeType":"YulFunctionCall","src":"12342:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12332:6:30"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12227:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12238:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12250:6:30","type":""}],"src":"12180:184:30"},{"body":{"nodeType":"YulBlock","src":"12524:236:30","statements":[{"nodeType":"YulAssignment","src":"12534:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12546:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12557:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12542:3:30"},"nodeType":"YulFunctionCall","src":"12542:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12534:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12576:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"12587:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12569:6:30"},"nodeType":"YulFunctionCall","src":"12569:25:30"},"nodeType":"YulExpressionStatement","src":"12569:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12614:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12625:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12610:3:30"},"nodeType":"YulFunctionCall","src":"12610:18:30"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12634:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"12642:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12630:3:30"},"nodeType":"YulFunctionCall","src":"12630:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12603:6:30"},"nodeType":"YulFunctionCall","src":"12603:83:30"},"nodeType":"YulExpressionStatement","src":"12603:83:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12706:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"12717:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12702:3:30"},"nodeType":"YulFunctionCall","src":"12702:18:30"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12726:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"12734:18:30","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12722:3:30"},"nodeType":"YulFunctionCall","src":"12722:31:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12695:6:30"},"nodeType":"YulFunctionCall","src":"12695:59:30"},"nodeType":"YulExpressionStatement","src":"12695:59:30"}]},"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":"12477:9:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12488:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12496:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12504:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12515:4:30","type":""}],"src":"12369:391:30"},{"body":{"nodeType":"YulBlock","src":"12978:299:30","statements":[{"nodeType":"YulAssignment","src":"12988:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13000:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13011:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12996:3:30"},"nodeType":"YulFunctionCall","src":"12996:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12988:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13031:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"13042:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13024:6:30"},"nodeType":"YulFunctionCall","src":"13024:25:30"},"nodeType":"YulExpressionStatement","src":"13024:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13069:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13080:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13065:3:30"},"nodeType":"YulFunctionCall","src":"13065:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"13085:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13058:6:30"},"nodeType":"YulFunctionCall","src":"13058:34:30"},"nodeType":"YulExpressionStatement","src":"13058:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13112:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13123:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13108:3:30"},"nodeType":"YulFunctionCall","src":"13108:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"13128:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13101:6:30"},"nodeType":"YulFunctionCall","src":"13101:34:30"},"nodeType":"YulExpressionStatement","src":"13101:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13155:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13166:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13151:3:30"},"nodeType":"YulFunctionCall","src":"13151:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"13171:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13144:6:30"},"nodeType":"YulFunctionCall","src":"13144:34:30"},"nodeType":"YulExpressionStatement","src":"13144:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13198:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"13209:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13194:3:30"},"nodeType":"YulFunctionCall","src":"13194:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"13219:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"13227:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13215:3:30"},"nodeType":"YulFunctionCall","src":"13215:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13187:6:30"},"nodeType":"YulFunctionCall","src":"13187:84:30"},"nodeType":"YulExpressionStatement","src":"13187:84:30"}]},"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":"12915:9:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"12926:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12934:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12942:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12950:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12958:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12969:4:30","type":""}],"src":"12765:512:30"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_array$_t_struct$_Order_$1641_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_$1600_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_$1635_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_$1600_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_$1641_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_$1635_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_$1641_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_address_t_uint256__to_t_bytes32_t_address_t_uint256__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), value2)\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_$1635_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":30,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"869":[{"length":32,"start":7490}],"871":[{"length":32,"start":7530}],"873":[{"length":32,"start":7452}],"875":[{"length":32,"start":1309},{"length":32,"start":1991}],"877":[{"length":32,"start":7406}],"879":[{"length":32,"start":7614}],"882":[{"length":32,"start":3832},{"length":32,"start":8354}],"884":[{"length":32,"start":8420}],"4061":[{"length":32,"start":622},{"length":32,"start":8232},{"length":32,"start":9996},{"length":32,"start":10130},{"length":32,"start":10714}]},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c8063b86ae9e111610074578063f07ec3731161004e578063f07ec37314610218578063f47b774014610238578063ffc5d97a1461025c57600080fd5b8063b86ae9e1146101d2578063be92d18e146101f2578063d9e534111461020557600080fd5b80635b34b966116100a55780635b34b9661461016f5780639432cc1d14610192578063a3210e7c146101b257600080fd5b806322378003146100c157806346423aa7146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004612c48565b6102b5565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b50610116610111366004612cbd565b6102c8565b604080519815158952961515602089015294151595870195909552911515606086015273ffffffffffffffffffffffffffffffffffffffff16608085015260a084015260c083019190915260e0820152610100016100ed565b34801561017b57600080fd5b5061018461035b565b6040519081526020016100ed565b34801561019e57600080fd5b506100e16101ad366004612cd6565b61036a565b3480156101be57600080fd5b506100e16101cd366004612d53565b610376565b3480156101de57600080fd5b506101846101ed366004612d83565b610387565b6100e1610200366004612da0565b610556565b6100e1610213366004612de5565b610562565b34801561022457600080fd5b50610184610233366004612e45565b610577565b34801561024457600080fd5b5061024d6105a2565b6040516100ed93929190612e60565b34801561026857600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b60006102c183836105ba565b9392505050565b600080600080600080600080610340896000908152600260208190526040909120805460018201549282015460039092015460ff8083169561010084048216956201000085048316956301000000860490931694640100000000900473ffffffffffffffffffffffffffffffffffffffff1693909291565b97509750975097509750975097509750919395975091939597565b600061036561090a565b905090565b60006102c18383610967565b600061038182610b27565b92915050565b60408051610220810190915260009061038190806103a86020860186612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260408086013560208301520161040a6080860160608701612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260200161043560a0860160808701612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260200161046060c0860160a08701612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018460c0013581526020018460e00135815260200184610100013581526020018461012001358152602001846101400135815260200184610160013581526020018461018001358152602001846101a001358152602001846101c001358152602001846101e0013581526020018461020001358152508361022001357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60006102c18383610c2c565b600061056f848484610daf565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610381565b60606000806105af610ed7565b925092509250909192565b60006105c4610f52565b6000808084815b818110156108fc57368888838181106105e6576105e6612ef9565b90506020028101906105f89190612f28565b9050806106086020820182612e45565b94506108006040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018360200160208101906106489190612e45565b73ffffffffffffffffffffffffffffffffffffffff16815260408085013560208301520161067c6080850160608601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106a760a0850160808601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020016106d260c0850160a08601612e45565b73ffffffffffffffffffffffffffffffffffffffff1681526020018360c0013581526020018360e00135815260200183610100013581526020018361012001358152602001836101400135815260200183610160013581526020018361018001358152602001836101a001358152602001836101c001358152602001836101e0013581526020018361020001358152506107a08360000160208101906107789190612e45565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180517f0000000000000000000000000000000000000000000000000000000000000000825261022090930180519281526102608220939091525290565b60008181526002602052604090209750955061081f8688600180610f90565b50865460ff166108f257610876858761083c610220860186612f66565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110d292505050565b86547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117875560405173ffffffffffffffffffffffffffffffffffffffff8616907f09e126c208c7c6b8de91fb519ff46ef1f6eb471f6376862ca4de42ea000026d6906108e99089815260200190565b60405180910390a25b50506001016105cb565b506001979650505050505050565b6000610914610f52565b503360008181526001602081815260409283902080549092019182905591518181529092917f721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f910160405180910390a290565b6000610971610f52565b60008083815b81811015610b1a573687878381811061099257610992612ef9565b610240029190910191506109ab90506020820182612e45565b93503373ffffffffffffffffffffffffffffffffffffffff8516146109fc576040517f80ec737400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a3c6040518061022001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018460200160208101906103d69190612e45565b6000818152600260205260409020600181015490975090915015610a94576040517f9633f278000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661010017865560405173ffffffffffffffffffffffffffffffffffffffff8616907fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275390610b089084815260200190565b60405180910390a25050600101610977565b5060019695505050505050565b600080600080610b3885600161114f565b92509250925080610b4e57506000949350505050565b610b7f6002610b636040880160208901612e45565b30610b7160208a018a612e45565b60408a01356001600061129b565b6000610b916080870160608801612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610bbb57610bb6858361138a565b610bc5565b610bc58583611427565b610bd26020860186612e45565b73ffffffffffffffffffffffffffffffffffffffff167fe68e1577ba456c32a752dbe4fa63fbaa46841e7e54bc9667d021b9af64a1cada84604051610c1991815260200190565b60405180910390a2506001949350505050565b600080600080610c3d8660016114df565b92509250925081610c545760009350505050610381565b856000610c648260018084611656565b90506000610c786080840160608501612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610cd757610cc86002610ca86040850160208601612e45565b610cb56020860186612e45565b308660400135600188610200013561129b565b610cd28282611845565b610d3a565b604080516020808252818301909252600091602082018180368337019050509050610d2c610d0b6040850160208601612e45565b610d186020860186612e45565b3086604001356001886102000135876118fe565b610d3883838a84611964565b505b610d476020830183612e45565b6040805187815233602082015290810185905273ffffffffffffffffffffffffffffffffffffffff91909116907fe8b2cfa73a11bd60479d92890aeb77bc5f502014ec530c3f0c1774d51680f0a69060600160405180910390a2506001979650505050505050565b6000806000806000610dc388876001611a85565b929650909450909250905080610de05760009450505050506102c1565b506000610df08887600085611656565b90506000610e0460808a0160608b01612e45565b73ffffffffffffffffffffffffffffffffffffffff1603610e2e57610e298882611845565b610e5d565b604080516020808252818301909252600091602082018180368337019050509050610e5b89838a84611964565b505b8115610e8857610e886002610e7860408b0160208c01612e45565b308660408d01356001600061129b565b60408051858152602081018890528315158183015290517f6cb64aa506cc92732fc83160c8ea61203b5a13a8cf92e5b5c7ccc4ba6bb41d389181900360600190a1506001979650505050505050565b6060600080610ee4611cea565b6040805160038082528183019092529193507f0000000000000000000000000000000000000000000000000000000000000000925060208201818036833750507f312e3100000000000000000000000000000000000000000000000000000000006020830152509391925090565b600160005414610f8e576040517f7fa8a98700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8254600090610100900460ff1615610fe5578115610fdd576040517f1a51557400000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b50600061056f565b835462010000900460ff1615611030578115610fdd576040517f836f8ef900000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b82156110805760038401541561107b578115610fdd576040517f9633f27800000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b6110c7565b83600301546000036110c7578115610fdd576040517fe567c93e00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8416036110f457505050565b600061113c611101611cea565b7f1901000000000000000000000000000000000000000000000000000000000000600090815260029190915260228581526042822091905290565b9050611149848284611de0565b50505050565b6000808061117561116536879003870187613023565b6107a06107786020890189612e45565b600081815260026020526040902080549194509060ff166111d55784156111cb576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b5060009050611294565b806003015492506111e98482600088610f90565b6111f7575060009050611294565b4261120761010088013585613146565b82600101546112169190613183565b11156112575784156111cb576040517f031ea4cb00000000000000000000000000000000000000000000000000000000815260048101859052602401610a8b565b6112648160020154611ff9565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1663010100001790555060015b9250925092565b801561131057600060405190507f4ce34aa200000000000000000000000000000000000000000000000000000000815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e482015261130a828261010461209c565b50611381565b60028760038111156113245761132461319b565b036113745781600114611363576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136f86868686612238565b611381565b6113818686868686612347565b50505050505050565b6113be61139a6020840184612e45565b826113af6101208601356101808701356131ca565b6113b99190613146565b612479565b6000816113d56101208501356101408601356131ca565b6113df9190613146565b90506127106113f361016085013583613146565b6113fd91906131ca565b6114079082613205565b905061142261141c60c0850160a08601612e45565b82612479565b505050565b61146b61143a6080840160608501612e45565b6114476020850185612e45565b8361145c6101208701356101808801356131ca565b6114669190613146565b6124ee565b6000816114826101208501356101408601356131ca565b61148c9190613146565b90506127106114a061016085013583613146565b6114aa91906131ca565b6114b49082613205565b90506114226114c96080850160608601612e45565b6114d960c0860160a08701612e45565b836124ee565b60008080846114f760c082013560e083013587612656565b61150b575060009250829150819050611294565b60028161012001351015611561578415611551576040517f0a199cb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009250829150819050611294565b61158361157336839003830183613023565b6107a06107786020850185612e45565b60008181526002602052604090209094506115a18582600189610f90565b6115b45750600092508291506112949050565b805460ff166115dc576115dc6115cd6020840184612e45565b8661083c6102208b018b612f66565b611600336115f06040850160208601612e45565b84604001358561010001356126b5565b815460017fffffffffffffffff000000000000000000000000000000000000000000ff00009091163364010000000002178117835542818401556002830182905560039092018290559497909650939450505050565b6116816040518060800160405280600081526020016000815260200160008152602001600081525090565b60008061169386610120890135613205565b6101c088013560408501529050831561177f576116ba6101208801356101808901356131ca565b6116c49082613146565b6116d390610180890135613205565b91506116e96101208801356101408901356131ca565b6116f39082613146565b61170290610140890135613205565b835260408301518290826127106101608b01356117296101208d01356101408e01356131ca565b6117339190613146565b61173d91906131ca565b6117479190613146565b611756906101408b0135613205565b6117609190613205565b61176a9190613205565b6020840152610180870135606084015261183b565b6117936101208801356101808901356131ca565b61179d9087613146565b91506117b36101208801356101408901356131ca565b6117bd9087613146565b80845260408401518391612710906117db906101608c013590613146565b6117e591906131ca565b6117ef9190613205565b6117f99190613205565b6020840152841561183b57866101a001358360000181815161181b9190613183565b9052506040830180516101a08901359190611837908390613183565b9052505b5050949350505050565b80513490811015611882576040517f1a783b8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189c6118926020850185612e45565b8360200151612479565b6118b96118af60c0850160a08601612e45565b8360400151612479565b6060820151156118e0576118e06118d660a0850160808601612e45565b8360600151612479565b81516118ec9082613205565b90508015611422576114223382612479565b6119088183612862565b816119535782600114611947576040517fefcc00b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136f87878787612238565b611381828260028a8a8a8a8a612881565b3360006119776080870160608801612e45565b905061199a818361198e60c08a0160a08b01612e45565b8860400151888861291a565b6060850151156119c5576119c581836119b960a08a0160808b01612e45565b8860600151888861291a565b606085015160408601518651600092916119de91613205565b6119e89190613205565b905085602001518110611a4157611a138284611a0760208b018b612e45565b8960200151898961291a565b6020860151611a229082613205565b90508015611a3857611a3882843084898961291a565b61136f84612955565b611a5b8284611a5360208b018b612e45565b84898961291a565b611a6484612955565b61138182611a7560208a018a612e45565b8389602001516114669190613205565b6000808080611aac611a9c36899003890189613023565b6107a061077860208b018b612e45565b600081815260026020526040902080549195509060ff16611b12578515611b02576040517fa4c58ff600000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b5060009250829150819050611ce1565b611b1f8582600089610f90565b611b33575060009250829150819050611ce1565b876101200135878260030154611b499190613183565b1180611b555750600187105b15611b95578515611b02576040517fc8910ec000000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b428861010001358260030154611bab9190613146565b8260010154611bba9190613183565b1015611bfb578515611b02576040517f2e775cae00000000000000000000000000000000000000000000000000000000815260048101869052602401610a8b565b86816003016000828254611c0f9190613183565b909155505060038101546101208901359003611c675780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000178155600281015460019250611c6290611ff9565b611cbb565b805460028201546003830154611cbb92640100000000900473ffffffffffffffffffffffffffffffffffffffff169190611ca7906101008d013590613146565b8460010154611cb69190613183565b61297e565b54640100000000900473ffffffffffffffffffffffffffffffffffffffff169250600191505b93509350935093565b60007f00000000000000000000000000000000000000000000000000000000000000004614611dbb57610365604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000526000825160208403805182604103600060018211611e67576040880151606089015160001a96508215611e4557601b8160ff1c0196507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811660408a01525b8689528985526020600060808760015afa508385528589526040890152506000515b8914891515169550859050611fbe57604082526044860380516040880380517f1626ba7e0000000000000000000000000000000000000000000000000000000084528a82526020600060648901868f5afa98508815611fb4577f1626ba7e0000000000000000000000000000000000000000000000000000000060005114611fb4578b3b15611f1a577f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6001876041031115611f50577f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b640101000000881a611f8a577f1f003d0a000000000000000000000000000000000000000000000000000000006000528760045260246000fd5b7f815e1d640000000000000000000000000000000000000000000000000000000060005260046000fd5b8486529190925290525b505050508061114957611fcf612a32565b7f4f7fb80d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561208157600080fd5b505af1158015612095573d6000803e3d6000fd5b5050505050565b604080517f000000000000000000000000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000017600090815260208690527f000000000000000000000000000000000000000000000000000000000000000083526055600b209190925273ffffffffffffffffffffffffffffffffffffffff169050600080600080526020600085876000875af191506000519050816121965761214c612a32565b6040517fd13d53d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610a8b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f4ce34aa20000000000000000000000000000000000000000000000000000000014612230576040517f1cf99b260000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff84166024820152604401610a8b565b505050505050565b833b61226c577f5f15d672000000000000000000000000000000000000000000000000000000006000528360045260246000fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000006000528360045282602452816044526000806064600080895af180612338573d156122f9576020601f3d01046020830481600302818311156122e057818303600302610200838002858002030401015b5a6020820110156122f5573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61237b577f5f15d672000000000000000000000000000000000000000000000000000000006000528460045260246000fd5b60405160805160a05160c0517ff242432a000000000000000000000000000000000000000000000000000000006000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af18061245d573d1561241f576020601f3d010460208604816003028183111561240657818303600302610200838002858002030401015b5a60208201101561241b573d6000803e3d6000fd5b5050505b7ff486bc8700000000000000000000000000000000000000000000000000000000600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b61248281612a7a565b600080600080600085875af19050806114225761249d612a32565b6040517f470c7c1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610a8b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528260045281602452602060006044600080885af1803d15601f3d116001600051141617163d151581166126475780863b151516612647578061261957816125df573d156125a0576020601f3d010460208404816003028183111561258757818303600302610200838002858002030401015b5a60208201101561259c573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005285600452306024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528560045230602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528560045260246000fd5b50506040525050600060605250565b6000428411806126665750428311155b156126ab5781156126a3576040517f6f7eac2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006102c1565b5060019392505050565b6040517fc6c3bbe600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063c6c3bbe6906064016020604051808303816000875af1158015612755573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612779919061321c565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663e030565e82886127c34288613183565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff909116602483015267ffffffffffffffff166044820152606401600060405180830381600087803b15801561284057600080fd5b505af1158015612854573d6000803e3d6000fd5b509298975050505050505050565b600061286f836020015190565b90508181146114225761142283612955565b600060208851036128d55750604080885260208089018a90527f4ce34aa2000000000000000000000000000000000000000000000000000000009189019190915260448801526001606488018190526128e4565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61292383612a7a565b61292d8183612862565b816129435761293e86868686612ab7565b612230565b6122308282600189898960008a612881565b60408151146129615750565b600061296e826020015190565b905061297a8183612c24565b5050565b6040517fe030565e0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff848116602483015267ffffffffffffffff831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e030565e90606401600060405180830381600087803b158015612a1e57600080fd5b505af1158015611381573d6000803e3d6000fd5b3d15610f8e576020601f3d01046020604051048160030281831115612a6557818303600302610200838002858002030401015b5a602082011015611422573d6000803e3d6000fd5b80600003612ab4576040517f91b3e51400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116612c145780873b151516612c145780612be65781612bac573d15612b6d576020601f3d0104602084048160030281831115612b5457818303600302610200838002858002030401015b5a602082011015612b69573d6000803e3d6000fd5b5050505b7ff486bc870000000000000000000000000000000000000000000000000000000060005286600452856024528460445260006064528360845260a46000fd5b7f98891923000000000000000000000000000000000000000000000000000000006000528660045285602452846044528360645260846000fd5b7f5f15d672000000000000000000000000000000000000000000000000000000006000528660045260246000fd5b5050604052505060006060525050565b6064810151604082019060c002604401612c3f84838361209c565b50506020905250565b60008060208385031215612c5b57600080fd5b823567ffffffffffffffff80821115612c7357600080fd5b818501915085601f830112612c8757600080fd5b813581811115612c9657600080fd5b8660208260051b8501011115612cab57600080fd5b60209290920196919550909350505050565b600060208284031215612ccf57600080fd5b5035919050565b60008060208385031215612ce957600080fd5b823567ffffffffffffffff80821115612d0157600080fd5b818501915085601f830112612d1557600080fd5b813581811115612d2457600080fd5b86602061024083028501011115612cab57600080fd5b60006102208284031215612d4d57600080fd5b50919050565b60006102208284031215612d6657600080fd5b6102c18383612d3a565b60006102408284031215612d4d57600080fd5b60006102408284031215612d9657600080fd5b6102c18383612d70565b60008060408385031215612db357600080fd5b823567ffffffffffffffff811115612dca57600080fd5b612dd685828601612d70565b95602094909401359450505050565b60008060006102608486031215612dfb57600080fd5b612e058585612d3a565b956102208501359550610240909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612e4057600080fd5b919050565b600060208284031215612e5757600080fd5b6102c182612e1c565b606081526000845180606084015260005b81811015612e8e5760208188018101516080868401015201612e71565b81811115612ea0576000608083860101525b5060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc1833603018112612f5c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9b57600080fd5b83018035915067ffffffffffffffff821115612fb657600080fd5b602001915036819003821315612fcb57600080fd5b9250929050565b604051610220810167ffffffffffffffff8111828210171561301d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000610220828403121561303657600080fd5b61303e612fd2565b61304783612e1c565b815261305560208401612e1c565b60208201526040830135604082015261307060608401612e1c565b606082015261308160808401612e1c565b608082015261309260a08401612e1c565b60a082015260c0838101359082015260e08084013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401359082015261018080840135908201526101a080840135908201526101c080840135908201526101e08084013590820152610200928301359281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561317e5761317e613117565b500290565b6000821982111561319657613196613117565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082613200577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561321757613217613117565b500390565b60006020828403121561322e57600080fd5b505191905056fea2646970667358221220d2166cbed459bda433b4b9ef8053ccc6cf06b90c03130d7b9d3a8f580684831564736f6c634300080e0033","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 0x2C48 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 0x2CBD 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 0x2CD6 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 0x2D53 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 0x2D83 JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DA0 JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DE5 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 0x2E45 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 0x2E60 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2E45 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x435 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x460 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E45 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 0xDAF 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 0xED7 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 PUSH2 0xF52 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 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5F8 SWAP2 SWAP1 PUSH2 0x2F28 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x608 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E45 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 0x2E45 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 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 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 0x2E45 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 0xF90 JUMP JUMPDEST POP DUP7 SLOAD PUSH1 0xFF AND PUSH2 0x8F2 JUMPI PUSH2 0x876 DUP6 DUP8 PUSH2 0x83C PUSH2 0x220 DUP7 ADD DUP7 PUSH2 0x2F66 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 0x10D2 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 0xF52 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 0xF52 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 0x2EF9 JUMP JUMPDEST PUSH2 0x240 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x9AB SWAP1 POP PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x2E45 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 0x2E45 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 0x114F 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 0x2E45 JUMP JUMPDEST ADDRESS PUSH2 0xB71 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB91 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBBB JUMPI PUSH2 0xBB6 DUP6 DUP4 PUSH2 0x138A JUMP JUMPDEST PUSH2 0xBC5 JUMP JUMPDEST PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x1427 JUMP JUMPDEST PUSH2 0xBD2 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 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 0x14DF 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 0x1656 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC78 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xCD7 JUMPI PUSH2 0xCC8 PUSH1 0x2 PUSH2 0xCA8 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0xCB5 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD PUSH2 0x129B JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP3 PUSH2 0x1845 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 0x2E45 JUMP JUMPDEST PUSH2 0xD18 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 DUP9 PUSH2 0x200 ADD CALLDATALOAD DUP8 PUSH2 0x18FE JUMP JUMPDEST PUSH2 0xD38 DUP4 DUP4 DUP11 DUP5 PUSH2 0x1964 JUMP JUMPDEST POP JUMPDEST PUSH2 0xD47 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0xE8B2CFA73A11BD60479D92890AEB77BC5F502014EC530C3F0C1774D51680F0A6 SWAP1 PUSH1 0x60 ADD 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 0xDC3 DUP9 DUP8 PUSH1 0x1 PUSH2 0x1A85 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDE0 JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x2C1 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xDF0 DUP9 DUP8 PUSH1 0x0 DUP6 PUSH2 0x1656 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE04 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE2E JUMPI PUSH2 0xE29 DUP9 DUP3 PUSH2 0x1845 JUMP JUMPDEST PUSH2 0xE5D 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 0xE5B DUP10 DUP4 DUP11 DUP5 PUSH2 0x1964 JUMP JUMPDEST POP JUMPDEST DUP2 ISZERO PUSH2 0xE88 JUMPI PUSH2 0xE88 PUSH1 0x2 PUSH2 0xE78 PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x2E45 JUMP JUMPDEST ADDRESS DUP7 PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x0 PUSH2 0x129B 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 0xEE4 PUSH2 0x1CEA 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 0xF8E 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 0xFE5 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x1030 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x1080 JUMPI PUSH1 0x3 DUP5 ADD SLOAD ISZERO PUSH2 0x107B JUMPI DUP2 ISZERO PUSH2 0xFDD JUMPI PUSH1 0x40 MLOAD PUSH32 0x9633F27800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x10C7 JUMP JUMPDEST DUP4 PUSH1 0x3 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x10C7 JUMPI DUP2 ISZERO PUSH2 0xFDD 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 0x10F4 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113C PUSH2 0x1101 PUSH2 0x1CEA 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 0x1149 DUP5 DUP3 DUP5 PUSH2 0x1DE0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1175 PUSH2 0x1165 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2E45 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 0x11D5 JUMPI DUP5 ISZERO PUSH2 0x11CB 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 0x1294 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD SWAP3 POP PUSH2 0x11E9 DUP5 DUP3 PUSH1 0x0 DUP9 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x11F7 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH2 0x1294 JUMP JUMPDEST TIMESTAMP PUSH2 0x1207 PUSH2 0x100 DUP9 ADD CALLDATALOAD DUP6 PUSH2 0x3146 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1216 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST GT ISZERO PUSH2 0x1257 JUMPI DUP5 ISZERO PUSH2 0x11CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x31EA4CB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xA8B JUMP JUMPDEST PUSH2 0x1264 DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x1FF9 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 0x1310 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 0x130A DUP3 DUP3 PUSH2 0x104 PUSH2 0x209C JUMP JUMPDEST POP PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1324 JUMPI PUSH2 0x1324 PUSH2 0x319B JUMP JUMPDEST SUB PUSH2 0x1374 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136F DUP7 DUP7 DUP7 DUP7 PUSH2 0x2238 JUMP JUMPDEST PUSH2 0x1381 JUMP JUMPDEST PUSH2 0x1381 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2347 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13BE PUSH2 0x139A PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E45 JUMP JUMPDEST DUP3 PUSH2 0x13AF PUSH2 0x120 DUP7 ADD CALLDATALOAD PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x13B9 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x13D5 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x13DF SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x13F3 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x13FD SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1407 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP PUSH2 0x1422 PUSH2 0x141C PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP3 PUSH2 0x2479 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x146B PUSH2 0x143A PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0x1447 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH2 0x145C PUSH2 0x120 DUP8 ADD CALLDATALOAD PUSH2 0x180 DUP9 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x24EE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1482 PUSH2 0x120 DUP6 ADD CALLDATALOAD PUSH2 0x140 DUP7 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x148C SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST SWAP1 POP PUSH2 0x2710 PUSH2 0x14A0 PUSH2 0x160 DUP6 ADD CALLDATALOAD DUP4 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x14AA SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x14B4 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP PUSH2 0x1422 PUSH2 0x14C9 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST PUSH2 0x14D9 PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH2 0x24EE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP5 PUSH2 0x14F7 PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD CALLDATALOAD DUP8 PUSH2 0x2656 JUMP JUMPDEST PUSH2 0x150B JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1294 JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH2 0x120 ADD CALLDATALOAD LT ISZERO PUSH2 0x1561 JUMPI DUP5 ISZERO PUSH2 0x1551 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 0x1294 JUMP JUMPDEST PUSH2 0x1583 PUSH2 0x1573 CALLDATASIZE DUP4 SWAP1 SUB DUP4 ADD DUP4 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP5 POP PUSH2 0x15A1 DUP6 DUP3 PUSH1 0x1 DUP10 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x15B4 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP PUSH2 0x1294 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF AND PUSH2 0x15DC JUMPI PUSH2 0x15DC PUSH2 0x15CD PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2E45 JUMP JUMPDEST DUP7 PUSH2 0x83C PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x2F66 JUMP JUMPDEST PUSH2 0x1600 CALLER PUSH2 0x15F0 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP6 PUSH2 0x100 ADD CALLDATALOAD PUSH2 0x26B5 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 0x1681 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 0x1693 DUP7 PUSH2 0x120 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x1C0 DUP9 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP DUP4 ISZERO PUSH2 0x177F JUMPI PUSH2 0x16BA PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x16C4 SWAP1 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x16D3 SWAP1 PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST SWAP2 POP PUSH2 0x16E9 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x16F3 SWAP1 DUP3 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x1702 SWAP1 PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP3 SWAP1 DUP3 PUSH2 0x2710 PUSH2 0x160 DUP12 ADD CALLDATALOAD PUSH2 0x1729 PUSH2 0x120 DUP14 ADD CALLDATALOAD PUSH2 0x140 DUP15 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1733 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x173D SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x1747 SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x1756 SWAP1 PUSH2 0x140 DUP12 ADD CALLDATALOAD PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x1760 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x176A SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x180 DUP8 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x183B JUMP JUMPDEST PUSH2 0x1793 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x180 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x179D SWAP1 DUP8 PUSH2 0x3146 JUMP JUMPDEST SWAP2 POP PUSH2 0x17B3 PUSH2 0x120 DUP9 ADD CALLDATALOAD PUSH2 0x140 DUP10 ADD CALLDATALOAD PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x17BD SWAP1 DUP8 PUSH2 0x3146 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP4 SWAP2 PUSH2 0x2710 SWAP1 PUSH2 0x17DB SWAP1 PUSH2 0x160 DUP13 ADD CALLDATALOAD SWAP1 PUSH2 0x3146 JUMP JUMPDEST PUSH2 0x17E5 SWAP2 SWAP1 PUSH2 0x31CA JUMP JUMPDEST PUSH2 0x17EF SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x17F9 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE DUP5 ISZERO PUSH2 0x183B JUMPI DUP7 PUSH2 0x1A0 ADD CALLDATALOAD DUP4 PUSH1 0x0 ADD DUP2 DUP2 MLOAD PUSH2 0x181B SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH2 0x1A0 DUP10 ADD CALLDATALOAD SWAP2 SWAP1 PUSH2 0x1837 SWAP1 DUP4 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD CALLVALUE SWAP1 DUP2 LT ISZERO PUSH2 0x1882 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1A783B8D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x189C PUSH2 0x1892 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST PUSH2 0x18B9 PUSH2 0x18AF PUSH1 0xC0 DUP6 ADD PUSH1 0xA0 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD ISZERO PUSH2 0x18E0 JUMPI PUSH2 0x18E0 PUSH2 0x18D6 PUSH1 0xA0 DUP6 ADD PUSH1 0x80 DUP7 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2479 JUMP JUMPDEST DUP2 MLOAD PUSH2 0x18EC SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1422 JUMPI PUSH2 0x1422 CALLER DUP3 PUSH2 0x2479 JUMP JUMPDEST PUSH2 0x1908 DUP2 DUP4 PUSH2 0x2862 JUMP JUMPDEST DUP2 PUSH2 0x1953 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x1947 JUMPI PUSH1 0x40 MLOAD PUSH32 0xEFCC00B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136F DUP8 DUP8 DUP8 DUP8 PUSH2 0x2238 JUMP JUMPDEST PUSH2 0x1381 DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2881 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x1977 PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x2E45 JUMP JUMPDEST SWAP1 POP PUSH2 0x199A DUP2 DUP4 PUSH2 0x198E PUSH1 0xC0 DUP11 ADD PUSH1 0xA0 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP9 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD ISZERO PUSH2 0x19C5 JUMPI PUSH2 0x19C5 DUP2 DUP4 PUSH2 0x19B9 PUSH1 0xA0 DUP11 ADD PUSH1 0x80 DUP12 ADD PUSH2 0x2E45 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD DUP9 DUP9 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD DUP7 MLOAD PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x19DE SWAP2 PUSH2 0x3205 JUMP JUMPDEST PUSH2 0x19E8 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x20 ADD MLOAD DUP2 LT PUSH2 0x1A41 JUMPI PUSH2 0x1A13 DUP3 DUP5 PUSH2 0x1A07 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD MLOAD DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x1A22 SWAP1 DUP3 PUSH2 0x3205 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A38 JUMPI PUSH2 0x1A38 DUP3 DUP5 ADDRESS DUP5 DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH2 0x136F DUP5 PUSH2 0x2955 JUMP JUMPDEST PUSH2 0x1A5B DUP3 DUP5 PUSH2 0x1A53 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 JUMP JUMPDEST DUP5 DUP10 DUP10 PUSH2 0x291A JUMP JUMPDEST PUSH2 0x1A64 DUP5 PUSH2 0x2955 JUMP JUMPDEST PUSH2 0x1381 DUP3 PUSH2 0x1A75 PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x2E45 JUMP JUMPDEST DUP4 DUP10 PUSH1 0x20 ADD MLOAD PUSH2 0x1466 SWAP2 SWAP1 PUSH2 0x3205 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AAC PUSH2 0x1A9C CALLDATASIZE DUP10 SWAP1 SUB DUP10 ADD DUP10 PUSH2 0x3023 JUMP JUMPDEST PUSH2 0x7A0 PUSH2 0x778 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2E45 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 0x1B12 JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1CE1 JUMP JUMPDEST PUSH2 0x1B1F DUP6 DUP3 PUSH1 0x0 DUP10 PUSH2 0xF90 JUMP JUMPDEST PUSH2 0x1B33 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1CE1 JUMP JUMPDEST DUP8 PUSH2 0x120 ADD CALLDATALOAD DUP8 DUP3 PUSH1 0x3 ADD SLOAD PUSH2 0x1B49 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST GT DUP1 PUSH2 0x1B55 JUMPI POP PUSH1 0x1 DUP8 LT JUMPDEST ISZERO PUSH2 0x1B95 JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1BAB SWAP2 SWAP1 PUSH2 0x3146 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x1BBA SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST LT ISZERO PUSH2 0x1BFB JUMPI DUP6 ISZERO PUSH2 0x1B02 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 0x1C0F SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x3 DUP2 ADD SLOAD PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 SUB PUSH2 0x1C67 JUMPI DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF AND PUSH3 0x10000 OR DUP2 SSTORE PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 SWAP3 POP PUSH2 0x1C62 SWAP1 PUSH2 0x1FF9 JUMP JUMPDEST PUSH2 0x1CBB JUMP JUMPDEST DUP1 SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH2 0x1CBB SWAP3 PUSH5 0x100000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 PUSH2 0x1CA7 SWAP1 PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP1 PUSH2 0x3146 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD PUSH2 0x1CB6 SWAP2 SWAP1 PUSH2 0x3183 JUMP JUMPDEST PUSH2 0x297E 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 0x1DBB 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 0x1E67 JUMPI PUSH1 0x40 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x0 BYTE SWAP7 POP DUP3 ISZERO PUSH2 0x1E45 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 0x1FBE 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 0x1FB4 JUMPI PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MLOAD EQ PUSH2 0x1FB4 JUMPI DUP12 EXTCODESIZE ISZERO PUSH2 0x1F1A JUMPI PUSH32 0x4F7FB80D00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP8 PUSH1 0x41 SUB GT ISZERO PUSH2 0x1F50 JUMPI PUSH32 0x8BAA579F00000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH5 0x101000000 DUP9 BYTE PUSH2 0x1F8A 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 0x1149 JUMPI PUSH2 0x1FCF PUSH2 0x2A32 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 0x2081 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2095 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 0x2196 JUMPI PUSH2 0x214C PUSH2 0x2A32 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 0x2230 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 0x226C 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 0x2338 JUMPI RETURNDATASIZE ISZERO PUSH2 0x22F9 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x22E0 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 0x22F5 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 0x237B 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 0x245D JUMPI RETURNDATASIZE ISZERO PUSH2 0x241F JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2406 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 0x241B 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 0x2482 DUP2 PUSH2 0x2A7A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x1422 JUMPI PUSH2 0x249D PUSH2 0x2A32 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 0x2647 JUMPI DUP1 DUP7 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2647 JUMPI DUP1 PUSH2 0x2619 JUMPI DUP2 PUSH2 0x25DF JUMPI RETURNDATASIZE ISZERO PUSH2 0x25A0 JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2587 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 0x259C 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 0x2666 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x26AB JUMPI DUP2 ISZERO PUSH2 0x26A3 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 0x2755 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 0x2779 SWAP2 SWAP1 PUSH2 0x321C JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xE030565E DUP3 DUP9 PUSH2 0x27C3 TIMESTAMP DUP9 PUSH2 0x3183 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 0x2840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2854 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 0x286F DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1422 JUMPI PUSH2 0x1422 DUP4 PUSH2 0x2955 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x28D5 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 0x28E4 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 0x2923 DUP4 PUSH2 0x2A7A JUMP JUMPDEST PUSH2 0x292D DUP2 DUP4 PUSH2 0x2862 JUMP JUMPDEST DUP2 PUSH2 0x2943 JUMPI PUSH2 0x293E DUP7 DUP7 DUP7 DUP7 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2230 JUMP JUMPDEST PUSH2 0x2230 DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x2881 JUMP JUMPDEST PUSH1 0x40 DUP2 MLOAD EQ PUSH2 0x2961 JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296E DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x297A DUP2 DUP4 PUSH2 0x2C24 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 0x2A1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1381 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xF8E JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2A65 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 0x1422 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x2AB4 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 0x2C14 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x2C14 JUMPI DUP1 PUSH2 0x2BE6 JUMPI DUP2 PUSH2 0x2BAC JUMPI RETURNDATASIZE ISZERO PUSH2 0x2B6D JUMPI PUSH1 0x20 PUSH1 0x1F RETURNDATASIZE ADD DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x2B54 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 0x2B69 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 0x2C3F DUP5 DUP4 DUP4 PUSH2 0x209C JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CAB 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 0x2CCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2D01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 PUSH2 0x240 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x2CAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x220 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x240 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP4 DUP4 PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DD6 DUP6 DUP3 DUP7 ADD PUSH2 0x2D70 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 0x2DFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E05 DUP6 DUP6 PUSH2 0x2D3A 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 0x2E40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C1 DUP3 PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E8E JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x2E71 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2EA0 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 0x2F5C 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 0x2F9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2FB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2FCB 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 0x301D 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 0x3036 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303E PUSH2 0x2FD2 JUMP JUMPDEST PUSH2 0x3047 DUP4 PUSH2 0x2E1C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x3055 PUSH1 0x20 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3070 PUSH1 0x60 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3081 PUSH1 0x80 DUP5 ADD PUSH2 0x2E1C JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3092 PUSH1 0xA0 DUP5 ADD PUSH2 0x2E1C 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 0x317E JUMPI PUSH2 0x317E PUSH2 0x3117 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3196 JUMPI PUSH2 0x3196 PUSH2 0x3117 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 0x3200 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 0x3217 JUMPI PUSH2 0x3217 PUSH2 0x3117 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 AND PUSH13 0xBED459BDA433B4B9EF8053CCC6 0xCF MOD 0xB9 0xC SUB SGT 0xD PUSH28 0x9D3A8F580684831564736F6C634300080E0033000000000000000000 ","sourceMap":"234:2896:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1283:143;;;;;;;;;;-1:-1:-1;1283:143:11;;;;;:::i;:::-;;:::i;:::-;;;824:14:30;;817:22;799:41;;787:2;772:18;1283:143:11;;;;;;;;2337:394;;;;;;;;;;-1:-1:-1;2337:394:11;;;;;:::i;:::-;;:::i;:::-;;;;1380:14:30;;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:11;1036:768:30;1432:115:11;;;;;;;;;;;;;:::i;:::-;;;1955:25:30;;;1943:2;1928:18;1432:115:11;1809:177:30;1128:149:11;;;;;;;;;;-1:-1:-1;1128:149:11;;;;;:::i;:::-;;:::i;954:168::-;;;;;;;;;;-1:-1:-1;954:168:11;;;;;:::i;:::-;;:::i;1553:778::-;;;;;;;;;;-1:-1:-1;1553:778:11;;;;;:::i;:::-;;:::i;456:224::-;;;;;;:::i;:::-;;:::i;686:262::-;;;;;;:::i;:::-;;:::i;2737:152::-;;;;;;;;;;-1:-1:-1;2737:152:11;;;;;:::i;:::-;;:::i;2895:233::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;336:36:23:-;;;;;;;;;;;;;;;;;;5932:42:30;5920:55;;;5902:74;;5890:2;5875:18;336:36:23;5756:226:30;1283:143:11;1360:14;1402:17;1412:6;;1402:9;:17::i;:::-;1390:29;1283:143;-1:-1:-1;;;1283:143:11:o;2337:394::-;2440:16;2470;2500;2530:13;2557:17;2588;2619:16;2649:17;2698:26;2714:9;11847:16:21;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:11;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:11: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:18;;;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:11;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:11:o;2737:152::-;738:18:16;;;2821:15:11;738:18:16;;;:9;:18;;;;;;2862:20:11;598:165:16;2895:233:11;2978:21;3013:23;3050:25;3107:14;:12;:14::i;:::-;3100:21;;;;;;2895:233;;;:::o;8359:3378:21:-;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:21;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:16;;683:22;738:18;;;:9;:18;;;;;;;598:165;10367:36:21;619:29:18;;;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:21;10529:23;;;;:12;:23;;;;;;-1:-1:-1;9439:982:21;-1:-1:-1;10647:253:21;9439:982;10529:23;10751:4;;10647:18;:253::i;:::-;-1:-1:-1;10990:23:21;;;;10985:512;;11091:53;11108:7;11117:9;11128:15;;;;:5;:15;:::i;:::-;11091:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11091:16:21;;-1:-1:-1;;;11091:53:21:i;:::-;11238:30;;;;11264:4;11238:30;;;11374:104;;;;;;;;;;11414:9;1955:25:30;;1943:2;1928:18;;1809:177;11374:104:21;;;;;;;;10985:512;-1:-1:-1;;11596:3:21;;8974:2640;;;-1:-1:-1;11726:4:21;;8359:3378;-1:-1:-1;;;;;;;8359:3378:21:o;348:244:16:-;395:18;425:21;:19;:21::i;:::-;-1:-1:-1;506:10:16;496:21;;;;:9;:21;;;;;;;;;494:23;;;;;;;;;543:42;;1955:25:30;;;494:23:16;;506:10;543:42;;1928:18:30;543:42:16;;;;;;;348:244;:::o;5758:2595:21:-;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:21;;-1:-1:-1;6521:13:21;;;6483:9;6521:13;:::i;:::-;6511:23;-1:-1:-1;6557:10:21;: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:21;;-1:-1:-1;7706:25:21;7702:109;;7762:30;;;;;;;;1955:25:30;;;1928:18;;7762:30:21;;;;;;;;7702:109;7900:31;;7949:30;;7900:31;7949:30;;;8082:34;;;;;;;;;;8097:9;1955:25:30;;1943:2;1928:18;;1809:177;8082:34:21;;;;;;;;-1:-1:-1;;8212:3:21;;6354:1876;;;-1:-1:-1;8342:4:21;;5758:2595;-1:-1:-1;;;;;;5758:2595:21:o;5055:968:20:-;5158:4;5192:17;5223;5254:10;5277:86;5325:10;5349:4;5277:34;:86::i;:::-;5178:185;;;;;;5379:5;5374:49;;-1:-1:-1;5407:5:20;;5055:968;-1:-1:-1;;;;5055:968:20:o;5374:49::-;5433:234;5479:15;5508:16;;;;;;;;:::i;:::-;5546:4;5565:18;;;;:10;:18;:::i;:::-;5597:21;;;;5632:1;5655;5433:32;:234::i;:::-;5713:1;5682:19;;;;;;;;:::i;:::-;:33;;;5678:225;;5731:41;5750:10;5762:9;5731:18;:41::i;:::-;5678:225;;;5803:89;5841:10;5869:9;5803:20;:89::i;:::-;5966:18;;;;:10;:18;:::i;:::-;5918:76;;;5943:9;5918:76;;;;1955:25:30;;1943:2;1928:18;;1809:177;5918:76:20;;;;;;;;-1:-1:-1;6012:4:20;;5055:968;-1:-1:-1;;;;5055:968:20:o;1801:1703::-;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:20;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:13;2820:30:20;;;;;;;;;2793:24;;2820:30;;;;;;;;;;-1:-1:-1;;2793:57:20;-1:-1:-1;2864:276:20;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:130;;;7538:25:30;;;3433:10:20;7594:2:30;7579:18;;7572:83;7671:18;;;7664:34;;;3345:130:20;;;;;;;;7526:2:30;7511:18;3345:130:20;;;;;;;-1:-1:-1;3493:4:20;;1801:1703;-1:-1:-1;;;;;;;1801:1703:20:o;3510:1539::-;3660:4;3680:17;3707;3734:16;3774:10;3921:124;3973:10;4001:8;4027:4;3921:34;:124::i;:::-;3798:247;;-1:-1:-1;3798:247:20;;-1:-1:-1;3798:247:20;;-1:-1:-1;3798:247:20;-1:-1:-1;3798:247:20;4060:57;;4097:5;4090:12;;;;;;;;4060:57;3760:367;4137:24;4164:60;4183:10;4195:8;4205:5;4212:11;4164:18;:60::i;:::-;4137:87;-1:-1:-1;4270:1:20;4239:19;;;;;;;;:::i;:::-;:33;;;4235:370;;4288:45;4312:10;4324:8;4288:23;:45::i;:::-;4235:370;;;4391:30;;;14291:4:13;4391:30:20;;;;;;;;;4364:24;;4391:30;;;;;;;;;;-1:-1:-1;4391:30:20;4364:57;;4435:159;4478:10;4506:8;4532:19;4569:11;4435:25;:159::i;:::-;4350:255;4235:370;4619:11;4615:299;;;4646:257;4696:15;4729:16;;;;;;;;:::i;:::-;4771:4;4794:9;4821:21;;;;4860:1;4887;4646:32;:257::i;:::-;4929:91;;;7905:25:30;;;7961:2;7946:18;;7939:34;;;8016:14;;8009:22;7989:18;;;7982:50;4929:91:20;;;;;;;7893:2:30;4929:91:20;;;-1:-1:-1;5038:4:20;;3510:1539;-1:-1:-1;;;;;;;3510:1539:20:o;3829:695:18:-;3913:21;3948:23;3985:25;4093:18;:16;:18::i;:::-;4324:26;;;2270:1:13;4324:26:18;;;;;;;;;4075:36;;-1:-1:-1;4228:19:18;;-1:-1:-1;4324:26:18;;;;;;;;-1:-1:-1;;4480:27:18;4470:7;4457:21;;4450:58;-1:-1:-1;4457:21:18;3829:695;;-1:-1:-1;3829:695:18;:::o;1511:215:22:-;2345:1:13;1636:16:22;;:32;1632:88;;1691:18;;;;;;;;;;;;;;1632:88;1511:215::o;3215:1039:27:-;3419:23;;3393:10;;3419:23;;;;;3415:168;;;3462:15;3458:88;;;3504:27;;;;;;;;1955:25:30;;;1928:18;;3504:27:27;1809:177:30;3458:88:27;-1:-1:-1;3567:5:27;3560:12;;3415:168;3597:23;;;;;;;3593:173;;;3640:15;3636:93;;;3682:32;;;;;;;;1955:25:30;;;1928:18;;3682:32:27;1809:177:30;3593:173:27;3780:8;3776:449;;;3808:21;;;;:25;3804:192;;3857:15;3853:99;;;3903:30;;;;;;;;1955:25:30;;;1928:18;;3903:30:27;1809:177:30;3804:192:27;3776:449;;;4030:11;:21;;;4055:1;4030:26;4026:189;;4080:15;4076:95;;;4126:26;;;;;;;;1955:25:30;;;1928:18;;4126:26:27;1809:177:30;4026:189:27;-1:-1:-1;4243:4:27;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:18;4937:13;5124:25;;;5249:29;5242:54;;;;5601:23;5594:42;;;5724:25;5711:39;;5829:34;;;5711:39;4817:1062;3014:50:27;2997:67;;3153:49;3175:7;3184:6;3192:9;3153:21;:49::i;:::-;2770:439;2640:569;;;:::o;4418:1334:21:-;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:21;4877;;4872:193;;4920:15;4916:89;;;4962:28;;;;;;;;1955:25:30;;;1928:18;;4962:28:21;1809:177:30;4916:89:21;-1:-1:-1;5048:5:21;;-1:-1:-1;5018:36:21;;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:21;;-1:-1:-1;5306:36:21;;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:30;;;1928:18;;5502:26:21;1809:177:30;5363:240:21;5613:32;5624:11;:20;;;5613:10;:32::i;:::-;5656:30;;5696:27;;;;;;-1:-1:-1;;4418:1334:21;;;;;;:::o;2173:3517:17:-;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:13;4888:24:17;: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;6029:552:20:-;6159:143;6193:23;;;;:15;:23;:::i;:::-;6283:9;6231:49;6257:23;;;;6231;;;;:49;:::i;:::-;:61;;;;:::i;:::-;6159:12;:143::i;:::-;6312:18;6384:9;6333:48;6358:23;;;;6333:22;;;;:48;:::i;:::-;:60;;;;:::i;:::-;6312:81;-1:-1:-1;6466:5:20;6429:34;6442:21;;;;6312:81;6429:34;:::i;:::-;:42;;;;:::i;:::-;6416:55;;:10;:55;:::i;:::-;6403:68;-1:-1:-1;6481:93:20;6515:24;;;;;;;;:::i;:::-;6554:10;6481:12;:93::i;:::-;6149:432;6029:552;;:::o;6587:497::-;6714:119;6740:19;;;;;;;;:::i;:::-;6761:18;;;;:10;:18;:::i;:::-;6823:9;6781:39;6802:18;;;;6781;;;;:39;:::i;:::-;:51;;;;:::i;:::-;6714:25;:119::i;:::-;6844:18;6906:9;6865:38;6885:18;;;;6865:17;;;;:38;:::i;:::-;:50;;;;:::i;:::-;6844:71;-1:-1:-1;6983:5:20;6951:29;6964:16;;;;6844:71;6951:29;:::i;:::-;:37;;;;:::i;:::-;6938:50;;:10;:50;:::i;:::-;6925:63;-1:-1:-1;6998:79:20;7024:19;;;;;;;;:::i;:::-;7045;;;;;;;;:::i;:::-;7066:10;6998:25;:79::i;523:1861:21:-;675:17;;;814:5;858:142;887:25;;;;930:23;;;;971:15;858:11;:142::i;:::-;840:225;;-1:-1:-1;1041:1:21;;-1:-1:-1;1041:1:21;;-1:-1:-1;1041:1:21;;-1:-1:-1;1025:29:21;;840:225;1105:1;1079:15;:23;;;:27;1075:185;;;1126:15;1122:85;;;1168:24;;;;;;;;;;;;;;1122:85;-1:-1:-1;1236:1:21;;-1:-1:-1;1236:1:21;;-1:-1:-1;1236:1:21;;-1:-1:-1;1220:29:21;;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:21;1270:117;1432:23;1576:4;1598:15;1484:18;:143::i;:::-;1466:225;;-1:-1:-1;1671:5:21;;-1:-1:-1;1671:5:21;;-1:-1:-1;1652:28:21;;-1:-1:-1;1652:28:21;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:21;;-1:-1:-1;;;;523:1861:21:o;661:1134:20:-;856:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:19:20;891:15;;936:25;953:8;936:14;;;;:25;:::i;:::-;989:18;;;;972:14;;;:35;916:45;-1:-1:-1;1017:772:20;;;;1087:31;1104:14;;;;1087;;;;:31;:::i;:::-;1074:45;;:9;:45;:::i;:::-;1057:62;;:14;;;;:62;:::i;:::-;1047:72;-1:-1:-1;1175:30:20;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:20;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:20;;;:28;;1754:10;;;;;1736:14;:28;;1754:10;;1736:28;:::i;:::-;;;-1:-1:-1;1662:117:20;881:914;;661:1134;;;;;;:::o;7090:882::-;7281:16;;7257:9;;7281:33;-1:-1:-1;7277:98:20;;;7337:27;;;;;;;;;;;;;;7277:98;7385:100;7419:23;;;;:15;:23;:::i;:::-;7457:8;:18;;;7385:12;:100::i;:::-;7496:102;7530:24;;;;;;;;:::i;:::-;7569:8;:19;;;7496:12;:102::i;:::-;7613:17;;;;:21;7609:162;;7650:110;7688:22;;;;;;;;:::i;:::-;7729:8;:17;;;7650:12;:110::i;:::-;7799:16;;7781:34;;;;:::i;:::-;;-1:-1:-1;7830:18:20;;7826:140;;7892:49;7913:10;7926:14;7892:12;:49::i;9569:1092:17:-;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;7978:1787:20:-;8194:10;8179:12;8230:19;;;;;;;;:::i;:::-;8214:35;-1:-1:-1;8260:176:20;8214:35;8307:4;8325:19;;;;;;;;:::i;:::-;8358:8;:19;;;8391:10;8415:11;8260:14;:176::i;:::-;8451:17;;;;:21;8447:252;;8488:200;8520:5;8543:4;8565:17;;;;;;;;:::i;:::-;8600:8;:17;;;8635:10;8663:11;8488:14;:200::i;:::-;8765:17;;;;8743:19;;;;8724:16;;8709:12;;8765:17;8724:38;;;:::i;:::-;:58;;;;:::i;:::-;8709:73;;8804:8;:18;;;8796:4;:26;8792:967;;8838:202;8870:5;8893:4;8915:18;;;;:10;:18;:::i;:::-;8951:8;:18;;;8987:10;9015:11;8838:14;:202::i;:::-;9062:18;;;;9054:26;;;;:::i;:::-;;-1:-1:-1;9098:8:20;;9094:258;;9126:211;9162:5;9189:4;9223;9250;9276:10;9308:11;9126:14;:211::i;:::-;9365:28;9381:11;9365:15;:28::i;8792:967::-;9424:188;9456:5;9479:4;9501:18;;;;:10;:18;:::i;:::-;9537:4;9559:10;9587:11;9424:14;:188::i;:::-;9626:28;9642:11;9626:15;:28::i;:::-;9669:79;9695:5;9702:18;;;;:10;:18;:::i;:::-;9743:4;9722:8;:18;;;:25;;;;:::i;2390:2022:21:-;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:21;2905;;2900:201;;2948:15;2944:89;;;2990:28;;;;;;;;1955:25:30;;;1928:18;;2990:28:21;1809:177:30;2944:89:21;-1:-1:-1;3073:1:21;;-1:-1:-1;3073:1:21;;-1:-1:-1;3073:1:21;;-1:-1:-1;3046:44:21;;2900:201;3129:144;3165:9;3192:11;3221:5;3244:15;3129:18;:144::i;:::-;3111:242;;-1:-1:-1;3325:1:21;;-1:-1:-1;3325:1:21;;-1:-1:-1;3325:1:21;;-1:-1:-1;3298:44:21;;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:30;;;1928:18;;3498:38:21;1809:177:30;3363:256:21;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:30;;;1928:18;;3780:23:21;1809:177:30;3629:257:21;3921:8;3896:11;:21;;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;;3943:21:21;;;;3968:18;;;;3943:43;;3939:401;;4002:30;;;;;;;;:23;4089:20;;;4028:4;;-1:-1:-1;4078:32:21;;: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:21;;-1:-1:-1;2390:2022:21;;;;;;;;:::o;3281:208:18:-;3332:7;3402:9;3385:13;:26;:97;;3458:24;1203:187:12;;;1231:24;1203:187;;;13024:25:30;1273:10:12;13065:18:30;;;13058:34;;;;1301:13:12;13108:18:30;;;13101:34;1332:13:12;13151:18:30;;;13144:34;1371:4:12;13194:19:30;;;13187:84;1154:7:12;;12996:19:30;;1203:187:12;;;;;;;;;;;;1180:220;;;;;;1173:227;;1097:310;;3385:97:18;-1:-1:-1;3426:17:18;;3281:208::o;1066:9919:24:-;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:24;;;5739:34;;;5901:24;5886:40;;5854:138;-1:-1:-1;;6158:8:24;2802:3382;6453:27;;6482:13;;;6449:47;;-1:-1:-1;6449:47:24;;-1:-1:-1;6602:3944:24;;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:23;1030:47;;;;;;;;1955:25:30;;;1051:11:23;1030:38;;;;;1928:18:30;;1030:47:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:110;:::o;17154:1355:17:-;1774:21:18;1768:28;;1392:19;1983:18;1980:41;17371:15:17;1970:52:18;;;2117:7;2110:27;;;1537;2232:41;;2660:31;2539:28;2445:264;2899:48;;;;2800:23;2379:458;17371:44:17;;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:30;5920:55;;18264:29:17;;;5902:74:30;5875:18;;18264:29:17;5756:226:30;18050:254:17;18391:43;;;18401:33;18391:43;18387:116;;18457:35;;;;;;;;11339:25:30;;;11412:42;11400:55;;11380:18;;;11373:83;11312:18;;18457:35:17;11165:297:30;18387:116:17;17293:1216;;;17154:1355;;;:::o;21079:4914:25:-;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:25;25857:41;-1:-1:-1;;25975:1:25;25965:8;25958:19;-1:-1:-1;;21079:4914:25: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:25;31884:26;;;;31952:8;31945:26;32013:8;32006:26;32132:21;32125:41;-1:-1:-1;;32243:1:25;-1:-1:-1;32226:19:25;-1:-1:-1;;;26641:5620:25:o;5921:742:17:-;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;;;;;11679:42:30;11667:55;;6607:39:17;;;11649:74:30;11739:18;;;11732:34;;;11622:18;;6607:39:17;11467:305:30;10946:9529:25;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:25;20339:41;-1:-1:-1;;20457:1:25;20447:8;20440:19;-1:-1:-1;10946:9529:25:o;1338:627:27:-;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:27;1862:12;;1571:314;-1:-1:-1;1954:4:27;1338:627;;;;;:::o;450:358:23:-;624:72;;;;;671:4;624:72;;;12040:34:30;624:38:23;12110:15:30;;;12090:18;;;12083:43;12142:18;;;12135:34;;;591:7:23;;;;645:11;624:38;;;;11952:18:30;;624:72:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;610:86;-1:-1:-1;706:30:23;716:11;706:30;;610:86;742:2;753:26;764:15;753:8;:26;:::i;:::-;706:75;;;;;;;;;;;;;12569:25:30;;;;12642:42;12630:55;;;12610:18;;;12603:83;12734:18;12722:31;12702:18;;;12695:59;12542:18;;706:75:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;798:3:23;;450:358;-1:-1:-1;;;;;;;;450:358:23:o;13407:458:17:-;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:13;20721:11:17;:18;:41;20717:1009;;-1:-1:-1;20916:16:17;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:17;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:13;14354:11:17;: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:23:-;901:60;;;;;;;;12569:25:30;;;901:30:23;12630:55:30;;;12610:18;;;12603:83;12734:18;12722:31;;12702:18;;;12695:59;911:11:23;901:30;;;;12542:18:30;;901:60:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:2237:19;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:10;596:6;606:1;596:11;592:68;;630:19;;;;;;;;;;;;;;592:68;463:203;:::o;1325:9615:25:-;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:25;10804:41;-1:-1:-1;;10922:1:25;10912:8;10905:19;-1:-1:-1;;1325:9615:25:o;15371:1113:17:-;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:17;16428:40;;-1:-1:-1;15371:1113:17:o;14:640:30:-;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:30;;-1:-1:-1;;;;14:640:30: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:30;;851:180;-1:-1:-1;851:180:30: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:30;2651:164;-1:-1:-1;2651:164:30: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:30: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:30;4493:19;;;4480:33;;4126:393;-1:-1:-1;;;4126:393:30: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:30: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:30;6988:30;;6985:50;;;7031:1;7028;7021:12;6985:50;7064:4;7052:17;;-1:-1:-1;7095:14:30;7091:27;;;7081:38;;7078:58;;;7132:1;7129;7122:12;7078:58;6562:580;;;;;:::o;8043:401::-;8110:2;8104:9;8152:3;8140:16;;8186:18;8171:34;;8207:22;;;8168:62;8165:242;;;8263:77;8260:1;8253:88;8364:4;8361:1;8354:15;8392:4;8389:1;8382:15;8165:242;8423:2;8416:22;8043:401;:::o;8449:1558::-;8541:6;8594:3;8582:9;8573:7;8569:23;8565:33;8562:53;;;8611:1;8608;8601:12;8562:53;8637:17;;:::i;:::-;8677:29;8696:9;8677:29;:::i;:::-;8670:5;8663:44;8739:38;8773:2;8762:9;8758:18;8739:38;:::i;:::-;8734:2;8727:5;8723:14;8716:62;8838:2;8827:9;8823:18;8810:32;8805:2;8798:5;8794:14;8787:56;8875:38;8909:2;8898:9;8894:18;8875:38;:::i;:::-;8870:2;8863:5;8859:14;8852:62;8947:39;8981:3;8970:9;8966:19;8947:39;:::i;:::-;8941:3;8934:5;8930:15;8923:64;9020:39;9054:3;9043:9;9039:19;9020:39;:::i;:::-;9014:3;9003:15;;8996:64;9121:3;9106:19;;;9093:33;9076:15;;;9069:58;9188:3;9173:19;;;9160:33;9143:15;;;9136:58;9213:3;9261:18;;;9248:32;9232:14;;;9225:56;9300:3;9348:18;;;9335:32;9319:14;;;9312:56;9387:3;9435:18;;;9422:32;9406:14;;;9399:56;9474:3;9522:18;;;9509:32;9493:14;;;9486:56;9561:3;9609:18;;;9596:32;9580:14;;;9573:56;9648:3;9696:18;;;9683:32;9667:14;;;9660:56;9735:3;9783:18;;;9770:32;9754:14;;;9747:56;9822:3;9870:18;;;9857:32;9841:14;;;9834:56;9909:3;9957:18;;;9944:32;9928:14;;;9921:56;;;;-1:-1:-1;9007:5:30;8449:1558;-1:-1:-1;8449:1558:30:o;10012:184::-;10064:77;10061:1;10054:88;10161:4;10158:1;10151:15;10185:4;10182:1;10175:15;10201:228;10241:7;10367:1;10299:66;10295:74;10292:1;10289:81;10284:1;10277:9;10270:17;10266:105;10263:131;;;10374:18;;:::i;:::-;-1:-1:-1;10414:9:30;;10201:228::o;10434:128::-;10474:3;10505:1;10501:6;10498:1;10495:13;10492:39;;;10511:18;;:::i;:::-;-1:-1:-1;10547:9:30;;10434:128::o;10567:184::-;10619:77;10616:1;10609:88;10716:4;10713:1;10706:15;10740:4;10737:1;10730:15;10756:274;10796:1;10822;10812:189;;10857:77;10854:1;10847:88;10958:4;10955:1;10948:15;10986:4;10983:1;10976:15;10812:189;-1:-1:-1;11015:9:30;;10756:274::o;11035:125::-;11075:4;11103:1;11100;11097:8;11094:34;;;11108:18;;:::i;:::-;-1:-1:-1;11145:9:30;;11035:125::o;12180:184::-;12250:6;12303:2;12291:9;12282:7;12278:23;12274:32;12271:52;;;12319:1;12316;12309:12;12271:52;-1:-1:-1;12342:16:30;;12180:184;-1:-1:-1;12180:184:30:o"},"gasEstimates":{"creation":{"codeDepositCost":"2581400","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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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            msg.sender,\\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\":\"0xeb45a47def0e63c67a9df11e8a95564f605a27e6f099c937ede116ce38a16971\",\"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":3994,"contract":"contracts/lib/Consideration.sol:Consideration","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":1672,"contract":"contracts/lib/Consideration.sol:Consideration","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":3178,"contract":"contracts/lib/Consideration.sol:Consideration","label":"_orderStatus","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(OrderStatus)1658_storage)"},{"astId":648,"contract":"contracts/lib/Consideration.sol:Consideration","label":"_orderStatus","offset":0,"slot":"3","type":"t_mapping(t_bytes32,t_struct(OrderStatus)1658_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)1658_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OrderStatus)","numberOfBytes":"32","value":"t_struct(OrderStatus)1658_storage"},"t_struct(OrderStatus)1658_storage":{"encoding":"inplace","label":"struct OrderStatus","members":[{"astId":1643,"contract":"contracts/lib/Consideration.sol:Consideration","label":"isValidated","offset":0,"slot":"0","type":"t_bool"},{"astId":1645,"contract":"contracts/lib/Consideration.sol:Consideration","label":"isCancelled","offset":1,"slot":"0","type":"t_bool"},{"astId":1647,"contract":"contracts/lib/Consideration.sol:Consideration","label":"isFinalized","offset":2,"slot":"0","type":"t_bool"},{"astId":1649,"contract":"contracts/lib/Consideration.sol:Consideration","label":"isBroken","offset":3,"slot":"0","type":"t_bool"},{"astId":1651,"contract":"contracts/lib/Consideration.sol:Consideration","label":"fulfiller","offset":4,"slot":"0","type":"t_address"},{"astId":1653,"contract":"contracts/lib/Consideration.sol:Consideration","label":"startedAt","offset":0,"slot":"1","type":"t_uint256"},{"astId":1655,"contract":"contracts/lib/Consideration.sol:Consideration","label":"shadowId","offset":0,"slot":"2","type":"t_uint256"},{"astId":1657,"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":{"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":261,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_952":{"entryPoint":null,"id":952,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:30","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:30"},"nodeType":"YulFunctionCall","src":"143:12:30"},"nodeType":"YulExpressionStatement","src":"143:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:30"},"nodeType":"YulFunctionCall","src":"112:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:30"},"nodeType":"YulFunctionCall","src":"108:32:30"},"nodeType":"YulIf","src":"105:52:30"},{"nodeType":"YulVariableDeclaration","src":"166:29:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:30"},"nodeType":"YulFunctionCall","src":"179:16:30"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:30"},"nodeType":"YulFunctionCall","src":"260:12:30"},"nodeType":"YulExpressionStatement","src":"260:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:30"},"nodeType":"YulFunctionCall","src":"239:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:30"},"nodeType":"YulFunctionCall","src":"235:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:30"},"nodeType":"YulFunctionCall","src":"224:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:30"},"nodeType":"YulFunctionCall","src":"214:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:30"},"nodeType":"YulFunctionCall","src":"207:50:30"},"nodeType":"YulIf","src":"204:70:30"},{"nodeType":"YulAssignment","src":"283:15:30","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:30"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:30","type":""}],"src":"14:290:30"},{"body":{"nodeType":"YulBlock","src":"407:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:30"},"nodeType":"YulFunctionCall","src":"455:12:30"},"nodeType":"YulExpressionStatement","src":"455:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:30"},"nodeType":"YulFunctionCall","src":"424:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:30"},"nodeType":"YulFunctionCall","src":"420:32:30"},"nodeType":"YulIf","src":"417:52:30"},{"nodeType":"YulAssignment","src":"478:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:30"},"nodeType":"YulFunctionCall","src":"488:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:30"}]},{"nodeType":"YulAssignment","src":"513:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:30"},"nodeType":"YulFunctionCall","src":"529:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:30"},"nodeType":"YulFunctionCall","src":"523:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:30","type":""}],"src":"309:245:30"},{"body":{"nodeType":"YulBlock","src":"614:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:30"},"nodeType":"YulFunctionCall","src":"624:32:30"},"nodeType":"YulExpressionStatement","src":"624:32:30"},{"nodeType":"YulAssignment","src":"665:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:30"},"nodeType":"YulFunctionCall","src":"672:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:30","type":""}],"src":"559:131:30"},{"body":{"nodeType":"YulBlock","src":"750:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:30"},"nodeType":"YulFunctionCall","src":"760:31:30"},"nodeType":"YulExpressionStatement","src":"760:31:30"},{"nodeType":"YulAssignment","src":"800:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:30"},"nodeType":"YulFunctionCall","src":"807:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:30","type":""}],"src":"695:130:30"},{"body":{"nodeType":"YulBlock","src":"885:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:30"},"nodeType":"YulFunctionCall","src":"895:30:30"},"nodeType":"YulExpressionStatement","src":"895:30:30"},{"nodeType":"YulAssignment","src":"934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:30"},"nodeType":"YulFunctionCall","src":"941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:30","type":""}],"src":"830:129:30"},{"body":{"nodeType":"YulBlock","src":"1019:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:30"},"nodeType":"YulFunctionCall","src":"1029:29:30"},"nodeType":"YulExpressionStatement","src":"1029:29:30"},{"nodeType":"YulAssignment","src":"1067:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:30"},"nodeType":"YulFunctionCall","src":"1074:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:30","type":""}],"src":"964:128:30"},{"body":{"nodeType":"YulBlock","src":"1152:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:30"},"nodeType":"YulFunctionCall","src":"1162:31:30"},"nodeType":"YulExpressionStatement","src":"1162:31:30"},{"nodeType":"YulAssignment","src":"1202:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:30"},"nodeType":"YulFunctionCall","src":"1209:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:30","type":""}],"src":"1097:130:30"},{"body":{"nodeType":"YulBlock","src":"1287:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:30"},"nodeType":"YulFunctionCall","src":"1297:27:30"},"nodeType":"YulExpressionStatement","src":"1297:27:30"},{"nodeType":"YulAssignment","src":"1333:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:30"},"nodeType":"YulFunctionCall","src":"1340:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:30","type":""}],"src":"1232:126:30"},{"body":{"nodeType":"YulBlock","src":"1418:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:30"},"nodeType":"YulFunctionCall","src":"1428:35:30"},"nodeType":"YulExpressionStatement","src":"1428:35:30"},{"nodeType":"YulAssignment","src":"1472:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:30"},"nodeType":"YulFunctionCall","src":"1479:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:30","type":""}],"src":"1363:134:30"},{"body":{"nodeType":"YulBlock","src":"1557:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:30"},"nodeType":"YulFunctionCall","src":"1567:28:30"},"nodeType":"YulExpressionStatement","src":"1567:28:30"},{"nodeType":"YulAssignment","src":"1604:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:30"},"nodeType":"YulFunctionCall","src":"1611:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:30","type":""}],"src":"1502:127:30"},{"body":{"nodeType":"YulBlock","src":"1689:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:30"},"nodeType":"YulFunctionCall","src":"1699:34:30"},"nodeType":"YulExpressionStatement","src":"1699:34:30"},{"nodeType":"YulAssignment","src":"1742:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:30"},"nodeType":"YulFunctionCall","src":"1749:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:30","type":""}],"src":"1634:133:30"},{"body":{"nodeType":"YulBlock","src":"1827:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:30"},"nodeType":"YulFunctionCall","src":"1837:30:30"},"nodeType":"YulExpressionStatement","src":"1837:30:30"},{"nodeType":"YulAssignment","src":"1876:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:30"},"nodeType":"YulFunctionCall","src":"1883:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:30","type":""}],"src":"1772:129:30"},{"body":{"nodeType":"YulBlock","src":"1961:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:30"},"nodeType":"YulFunctionCall","src":"1971:16:30"},"nodeType":"YulExpressionStatement","src":"1971:16:30"},{"nodeType":"YulAssignment","src":"1996:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:30"},"nodeType":"YulFunctionCall","src":"2003:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:30","type":""}],"src":"1906:114:30"},{"body":{"nodeType":"YulBlock","src":"4136:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:30"},"nodeType":"YulFunctionCall","src":"4146:31:30"},"nodeType":"YulExpressionStatement","src":"4146:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:30"},"nodeType":"YulFunctionCall","src":"4193:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:30"},"nodeType":"YulFunctionCall","src":"4186:40:30"},"nodeType":"YulExpressionStatement","src":"4186:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:30"},"nodeType":"YulFunctionCall","src":"4242:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:30"},"nodeType":"YulFunctionCall","src":"4235:38:30"},"nodeType":"YulExpressionStatement","src":"4235:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:30"},"nodeType":"YulFunctionCall","src":"4289:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:30"},"nodeType":"YulFunctionCall","src":"4282:43:30"},"nodeType":"YulExpressionStatement","src":"4282:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:30"},"nodeType":"YulFunctionCall","src":"4341:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:30"},"nodeType":"YulFunctionCall","src":"4334:41:30"},"nodeType":"YulExpressionStatement","src":"4334:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:30"},"nodeType":"YulFunctionCall","src":"4391:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:30"},"nodeType":"YulFunctionCall","src":"4384:39:30"},"nodeType":"YulExpressionStatement","src":"4384:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:30"},"nodeType":"YulFunctionCall","src":"4439:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:30"},"nodeType":"YulFunctionCall","src":"4432:41:30"},"nodeType":"YulExpressionStatement","src":"4432:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:30"},"nodeType":"YulFunctionCall","src":"4489:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:30"},"nodeType":"YulFunctionCall","src":"4482:43:30"},"nodeType":"YulExpressionStatement","src":"4482:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:30"},"nodeType":"YulFunctionCall","src":"4541:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:30"},"nodeType":"YulFunctionCall","src":"4534:41:30"},"nodeType":"YulExpressionStatement","src":"4534:41:30"},{"nodeType":"YulAssignment","src":"4584:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:30"},"nodeType":"YulFunctionCall","src":"4921:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:30"},"nodeType":"YulFunctionCall","src":"4891:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:30"},"nodeType":"YulFunctionCall","src":"4861:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:30"},"nodeType":"YulFunctionCall","src":"4831:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:30"},"nodeType":"YulFunctionCall","src":"4801:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:30"},"nodeType":"YulFunctionCall","src":"4771:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:30"},"nodeType":"YulFunctionCall","src":"4741:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:30"},"nodeType":"YulFunctionCall","src":"4711:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:30"},"nodeType":"YulFunctionCall","src":"4681:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:30"},"nodeType":"YulFunctionCall","src":"4651:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:30"},"nodeType":"YulFunctionCall","src":"4621:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:30"},"nodeType":"YulFunctionCall","src":"4591:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:30","type":""}],"src":"2025:2926:30"},{"body":{"nodeType":"YulBlock","src":"5653:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:30"},"nodeType":"YulFunctionCall","src":"5663:28:30"},"nodeType":"YulExpressionStatement","src":"5663:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:30"},"nodeType":"YulFunctionCall","src":"5707:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:30"},"nodeType":"YulFunctionCall","src":"5700:36:30"},"nodeType":"YulExpressionStatement","src":"5700:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:30"},"nodeType":"YulFunctionCall","src":"5752:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:30"},"nodeType":"YulFunctionCall","src":"5745:39:30"},"nodeType":"YulExpressionStatement","src":"5745:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:30"},"nodeType":"YulFunctionCall","src":"5800:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:30"},"nodeType":"YulFunctionCall","src":"5793:40:30"},"nodeType":"YulExpressionStatement","src":"5793:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:30"},"nodeType":"YulFunctionCall","src":"5849:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:30"},"nodeType":"YulFunctionCall","src":"5842:49:30"},"nodeType":"YulExpressionStatement","src":"5842:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:30"},"nodeType":"YulFunctionCall","src":"5907:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:30"},"nodeType":"YulFunctionCall","src":"5900:25:30"},"nodeType":"YulExpressionStatement","src":"5900:25:30"},{"nodeType":"YulAssignment","src":"5934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:30"},"nodeType":"YulFunctionCall","src":"5941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:30","type":""}],"src":"4956:1003:30"},{"body":{"nodeType":"YulBlock","src":"6177:276:30","statements":[{"nodeType":"YulAssignment","src":"6187:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:30"},"nodeType":"YulFunctionCall","src":"6195:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:30"},"nodeType":"YulFunctionCall","src":"6223:25:30"},"nodeType":"YulExpressionStatement","src":"6223:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:30"},"nodeType":"YulFunctionCall","src":"6264:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:30"},"nodeType":"YulFunctionCall","src":"6257:34:30"},"nodeType":"YulExpressionStatement","src":"6257:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:30"},"nodeType":"YulFunctionCall","src":"6307:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:30"},"nodeType":"YulFunctionCall","src":"6300:34:30"},"nodeType":"YulExpressionStatement","src":"6300:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:30"},"nodeType":"YulFunctionCall","src":"6350:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:30"},"nodeType":"YulFunctionCall","src":"6343:34:30"},"nodeType":"YulExpressionStatement","src":"6343:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:30"},"nodeType":"YulFunctionCall","src":"6393:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:30"},"nodeType":"YulFunctionCall","src":"6430:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:30"},"nodeType":"YulFunctionCall","src":"6426:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:30"},"nodeType":"YulFunctionCall","src":"6414:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:30"},"nodeType":"YulFunctionCall","src":"6386:61:30"},"nodeType":"YulExpressionStatement","src":"6386:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:30","type":""}],"src":"5964:489:30"}]},"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":30,"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:12:-:0;;;606:485;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;786:19;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6223:25:30;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:30;;6300:34;;;;6350:18;;;6343:34;1371:4:12;6393:19:30;;;6386:61;1203:187:12;;;;;;;;;;6195:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;154:2866:12;;1527:1491;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:12;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4146:31:30;;-1:-1:-1;;;4202:2:30;4193:12;;4186:40;-1:-1:-1;;;4251:2:30;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:30;4341:12;;4334:41;-1:-1:-1;;;4400:2:30;4391:12;;4384:39;-1:-1:-1;;;4448:2:30;4439:12;;4432:41;-1:-1:-1;;;4498:3:30;4489:13;;4482:43;-1:-1:-1;;;4550:3:30;4541:13;;4534:41;-1:-1:-1;;;4930:3:30;4921:13;;624:32;-1:-1:-1;;;672:12:30;;;760:31;-1:-1:-1;;;807:12:30;;;895:30;-1:-1:-1;;;941:12:30;;;1029:29;-1:-1:-1;;;1074:12:30;;;1162:31;-1:-1:-1;;;1209:12:30;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:30;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:30;;;1837:30;-1:-1:-1;;;1883:12:30;;;1971:16;2003:11;;;2025:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5663:28:30;-1:-1:-1;;;5707:12:30;;;5700:36;-1:-1:-1;;;5752:12:30;;;5745:39;-1:-1:-1;;;5800:12:30;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:30;;;5900:25;1909:724:12;-1:-1:-1;5941:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:30:-;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:30;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:30: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:30;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:30:o;5964:489::-;154:2866:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"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:12:-: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":"address","name":"fulfiller","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":{"@_4003":{"entryPoint":null,"id":4003,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b506001600055603f8060226000396000f3fe6080604052600080fdfea2646970667358221220555148f747124095555f000a3bf0c093ecc3578a15f22ecfaef4e7d111bb8f0164736f6c634300080e0033","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 SSTORE MLOAD BASEFEE 0xF7 SELFBALANCE SLT BLOCKHASH SWAP6 SSTORE 0x5F STOP EXP EXTCODESIZE CREATE 0xC0 SWAP4 0xEC 0xC3 JUMPI DUP11 ISZERO CALLCODE 0x2E 0xCF 0xAE DELEGATECALL 0xE7 0xD1 GT 0xBB DUP16 ADD PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"216:549:16:-:0;;;;;;;;;;;;-1:-1:-1;2345:1:13;658:16:22;:31;216:549:16;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220555148f747124095555f000a3bf0c093ecc3578a15f22ecfaef4e7d111bb8f0164736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE MLOAD BASEFEE 0xF7 SELFBALANCE SLT BLOCKHASH SWAP6 SSTORE 0x5F STOP EXP EXTCODESIZE CREATE 0xC0 SWAP4 0xEC 0xC3 JUMPI DUP11 ISZERO CALLCODE 0x2E 0xCF 0xAE DELEGATECALL 0xE7 0xD1 GT 0xBB DUP16 ADD PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"216:549:16:-: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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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":3994,"contract":"contracts/lib/CounterManager.sol:CounterManager","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":1672,"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":"address","name":"fulfiller","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":{"@_1739":{"entryPoint":null,"id":1739,"parameterSlots":1,"returnSlots":0},"@_2204":{"entryPoint":null,"id":2204,"parameterSlots":1,"returnSlots":0},"@_4003":{"entryPoint":null,"id":4003,"parameterSlots":0,"returnSlots":0},"@_4561":{"entryPoint":null,"id":4561,"parameterSlots":1,"returnSlots":0},"@_617":{"entryPoint":null,"id":617,"parameterSlots":1,"returnSlots":0},"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":275,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_952":{"entryPoint":null,"id":952,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:30","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:30"},"nodeType":"YulFunctionCall","src":"143:12:30"},"nodeType":"YulExpressionStatement","src":"143:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:30"},"nodeType":"YulFunctionCall","src":"112:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:30"},"nodeType":"YulFunctionCall","src":"108:32:30"},"nodeType":"YulIf","src":"105:52:30"},{"nodeType":"YulVariableDeclaration","src":"166:29:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:30"},"nodeType":"YulFunctionCall","src":"179:16:30"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:30"},"nodeType":"YulFunctionCall","src":"260:12:30"},"nodeType":"YulExpressionStatement","src":"260:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:30"},"nodeType":"YulFunctionCall","src":"239:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:30"},"nodeType":"YulFunctionCall","src":"235:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:30"},"nodeType":"YulFunctionCall","src":"224:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:30"},"nodeType":"YulFunctionCall","src":"214:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:30"},"nodeType":"YulFunctionCall","src":"207:50:30"},"nodeType":"YulIf","src":"204:70:30"},{"nodeType":"YulAssignment","src":"283:15:30","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:30"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:30","type":""}],"src":"14:290:30"},{"body":{"nodeType":"YulBlock","src":"407:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:30"},"nodeType":"YulFunctionCall","src":"455:12:30"},"nodeType":"YulExpressionStatement","src":"455:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:30"},"nodeType":"YulFunctionCall","src":"424:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:30"},"nodeType":"YulFunctionCall","src":"420:32:30"},"nodeType":"YulIf","src":"417:52:30"},{"nodeType":"YulAssignment","src":"478:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:30"},"nodeType":"YulFunctionCall","src":"488:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:30"}]},{"nodeType":"YulAssignment","src":"513:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:30"},"nodeType":"YulFunctionCall","src":"529:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:30"},"nodeType":"YulFunctionCall","src":"523:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:30","type":""}],"src":"309:245:30"},{"body":{"nodeType":"YulBlock","src":"614:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:30"},"nodeType":"YulFunctionCall","src":"624:32:30"},"nodeType":"YulExpressionStatement","src":"624:32:30"},{"nodeType":"YulAssignment","src":"665:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:30"},"nodeType":"YulFunctionCall","src":"672:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:30","type":""}],"src":"559:131:30"},{"body":{"nodeType":"YulBlock","src":"750:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:30"},"nodeType":"YulFunctionCall","src":"760:31:30"},"nodeType":"YulExpressionStatement","src":"760:31:30"},{"nodeType":"YulAssignment","src":"800:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:30"},"nodeType":"YulFunctionCall","src":"807:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:30","type":""}],"src":"695:130:30"},{"body":{"nodeType":"YulBlock","src":"885:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:30"},"nodeType":"YulFunctionCall","src":"895:30:30"},"nodeType":"YulExpressionStatement","src":"895:30:30"},{"nodeType":"YulAssignment","src":"934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:30"},"nodeType":"YulFunctionCall","src":"941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:30","type":""}],"src":"830:129:30"},{"body":{"nodeType":"YulBlock","src":"1019:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:30"},"nodeType":"YulFunctionCall","src":"1029:29:30"},"nodeType":"YulExpressionStatement","src":"1029:29:30"},{"nodeType":"YulAssignment","src":"1067:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:30"},"nodeType":"YulFunctionCall","src":"1074:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:30","type":""}],"src":"964:128:30"},{"body":{"nodeType":"YulBlock","src":"1152:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:30"},"nodeType":"YulFunctionCall","src":"1162:31:30"},"nodeType":"YulExpressionStatement","src":"1162:31:30"},{"nodeType":"YulAssignment","src":"1202:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:30"},"nodeType":"YulFunctionCall","src":"1209:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:30","type":""}],"src":"1097:130:30"},{"body":{"nodeType":"YulBlock","src":"1287:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:30"},"nodeType":"YulFunctionCall","src":"1297:27:30"},"nodeType":"YulExpressionStatement","src":"1297:27:30"},{"nodeType":"YulAssignment","src":"1333:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:30"},"nodeType":"YulFunctionCall","src":"1340:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:30","type":""}],"src":"1232:126:30"},{"body":{"nodeType":"YulBlock","src":"1418:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:30"},"nodeType":"YulFunctionCall","src":"1428:35:30"},"nodeType":"YulExpressionStatement","src":"1428:35:30"},{"nodeType":"YulAssignment","src":"1472:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:30"},"nodeType":"YulFunctionCall","src":"1479:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:30","type":""}],"src":"1363:134:30"},{"body":{"nodeType":"YulBlock","src":"1557:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:30"},"nodeType":"YulFunctionCall","src":"1567:28:30"},"nodeType":"YulExpressionStatement","src":"1567:28:30"},{"nodeType":"YulAssignment","src":"1604:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:30"},"nodeType":"YulFunctionCall","src":"1611:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:30","type":""}],"src":"1502:127:30"},{"body":{"nodeType":"YulBlock","src":"1689:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:30"},"nodeType":"YulFunctionCall","src":"1699:34:30"},"nodeType":"YulExpressionStatement","src":"1699:34:30"},{"nodeType":"YulAssignment","src":"1742:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:30"},"nodeType":"YulFunctionCall","src":"1749:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:30","type":""}],"src":"1634:133:30"},{"body":{"nodeType":"YulBlock","src":"1827:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:30"},"nodeType":"YulFunctionCall","src":"1837:30:30"},"nodeType":"YulExpressionStatement","src":"1837:30:30"},{"nodeType":"YulAssignment","src":"1876:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:30"},"nodeType":"YulFunctionCall","src":"1883:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:30","type":""}],"src":"1772:129:30"},{"body":{"nodeType":"YulBlock","src":"1961:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:30"},"nodeType":"YulFunctionCall","src":"1971:16:30"},"nodeType":"YulExpressionStatement","src":"1971:16:30"},{"nodeType":"YulAssignment","src":"1996:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:30"},"nodeType":"YulFunctionCall","src":"2003:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:30","type":""}],"src":"1906:114:30"},{"body":{"nodeType":"YulBlock","src":"4136:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:30"},"nodeType":"YulFunctionCall","src":"4146:31:30"},"nodeType":"YulExpressionStatement","src":"4146:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:30"},"nodeType":"YulFunctionCall","src":"4193:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:30"},"nodeType":"YulFunctionCall","src":"4186:40:30"},"nodeType":"YulExpressionStatement","src":"4186:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:30"},"nodeType":"YulFunctionCall","src":"4242:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:30"},"nodeType":"YulFunctionCall","src":"4235:38:30"},"nodeType":"YulExpressionStatement","src":"4235:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:30"},"nodeType":"YulFunctionCall","src":"4289:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:30"},"nodeType":"YulFunctionCall","src":"4282:43:30"},"nodeType":"YulExpressionStatement","src":"4282:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:30"},"nodeType":"YulFunctionCall","src":"4341:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:30"},"nodeType":"YulFunctionCall","src":"4334:41:30"},"nodeType":"YulExpressionStatement","src":"4334:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:30"},"nodeType":"YulFunctionCall","src":"4391:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:30"},"nodeType":"YulFunctionCall","src":"4384:39:30"},"nodeType":"YulExpressionStatement","src":"4384:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:30"},"nodeType":"YulFunctionCall","src":"4439:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:30"},"nodeType":"YulFunctionCall","src":"4432:41:30"},"nodeType":"YulExpressionStatement","src":"4432:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:30"},"nodeType":"YulFunctionCall","src":"4489:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:30"},"nodeType":"YulFunctionCall","src":"4482:43:30"},"nodeType":"YulExpressionStatement","src":"4482:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:30"},"nodeType":"YulFunctionCall","src":"4541:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:30"},"nodeType":"YulFunctionCall","src":"4534:41:30"},"nodeType":"YulExpressionStatement","src":"4534:41:30"},{"nodeType":"YulAssignment","src":"4584:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:30"},"nodeType":"YulFunctionCall","src":"4921:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:30"},"nodeType":"YulFunctionCall","src":"4891:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:30"},"nodeType":"YulFunctionCall","src":"4861:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:30"},"nodeType":"YulFunctionCall","src":"4831:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:30"},"nodeType":"YulFunctionCall","src":"4801:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:30"},"nodeType":"YulFunctionCall","src":"4771:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:30"},"nodeType":"YulFunctionCall","src":"4741:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:30"},"nodeType":"YulFunctionCall","src":"4711:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:30"},"nodeType":"YulFunctionCall","src":"4681:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:30"},"nodeType":"YulFunctionCall","src":"4651:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:30"},"nodeType":"YulFunctionCall","src":"4621:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:30"},"nodeType":"YulFunctionCall","src":"4591:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:30","type":""}],"src":"2025:2926:30"},{"body":{"nodeType":"YulBlock","src":"5653:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:30"},"nodeType":"YulFunctionCall","src":"5663:28:30"},"nodeType":"YulExpressionStatement","src":"5663:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:30"},"nodeType":"YulFunctionCall","src":"5707:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:30"},"nodeType":"YulFunctionCall","src":"5700:36:30"},"nodeType":"YulExpressionStatement","src":"5700:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:30"},"nodeType":"YulFunctionCall","src":"5752:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:30"},"nodeType":"YulFunctionCall","src":"5745:39:30"},"nodeType":"YulExpressionStatement","src":"5745:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:30"},"nodeType":"YulFunctionCall","src":"5800:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:30"},"nodeType":"YulFunctionCall","src":"5793:40:30"},"nodeType":"YulExpressionStatement","src":"5793:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:30"},"nodeType":"YulFunctionCall","src":"5849:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:30"},"nodeType":"YulFunctionCall","src":"5842:49:30"},"nodeType":"YulExpressionStatement","src":"5842:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:30"},"nodeType":"YulFunctionCall","src":"5907:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:30"},"nodeType":"YulFunctionCall","src":"5900:25:30"},"nodeType":"YulExpressionStatement","src":"5900:25:30"},{"nodeType":"YulAssignment","src":"5934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:30"},"nodeType":"YulFunctionCall","src":"5941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:30","type":""}],"src":"4956:1003:30"},{"body":{"nodeType":"YulBlock","src":"6177:276:30","statements":[{"nodeType":"YulAssignment","src":"6187:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:30"},"nodeType":"YulFunctionCall","src":"6195:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:30"},"nodeType":"YulFunctionCall","src":"6223:25:30"},"nodeType":"YulExpressionStatement","src":"6223:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:30"},"nodeType":"YulFunctionCall","src":"6264:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:30"},"nodeType":"YulFunctionCall","src":"6257:34:30"},"nodeType":"YulExpressionStatement","src":"6257:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:30"},"nodeType":"YulFunctionCall","src":"6307:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:30"},"nodeType":"YulFunctionCall","src":"6300:34:30"},"nodeType":"YulExpressionStatement","src":"6300:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:30"},"nodeType":"YulFunctionCall","src":"6350:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:30"},"nodeType":"YulFunctionCall","src":"6343:34:30"},"nodeType":"YulExpressionStatement","src":"6343:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:30"},"nodeType":"YulFunctionCall","src":"6393:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:30"},"nodeType":"YulFunctionCall","src":"6430:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:30"},"nodeType":"YulFunctionCall","src":"6426:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:30"},"nodeType":"YulFunctionCall","src":"6414:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:30"},"nodeType":"YulFunctionCall","src":"6386:61:30"},"nodeType":"YulExpressionStatement","src":"6386:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:30","type":""}],"src":"5964:489:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"61018060405234801561001157600080fd5b5060405161054538038061054583398101604081905261003091610467565b8080808061003c610113565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fe9190610497565b506101605250506001600055506104bb915050565b600080808061014260408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3945060009161039c91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b60006020828403121561047957600080fd5b81516001600160a01b038116811461049057600080fd5b9392505050565b600080604083850312156104aa57600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051603f6105066000396000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea26469706673582212203020d55493483b4eac2143d1ab2547b5f4f891d864f006103de4bc212c66972564736f6c634300080e0033","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 ADDRESS KECCAK256 0xD5 SLOAD SWAP4 BASEFEE EXTCODESIZE 0x4E 0xAC 0x21 NUMBER 0xD1 0xAB 0x25 SELFBALANCE 0xB5 DELEGATECALL 0xF8 SWAP2 0xD8 PUSH5 0xF006103DE4 0xBC 0x21 0x2C PUSH7 0x972564736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ","sourceMap":"584:21859:17:-:0;;;992:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1041:17;;;;786:19:12;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6223:25:30;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:30;;6300:34;;;;6350:18;;;6343:34;1371:4:12;6393:19:30;;;6386:61;1203:187:12;;;;;;;;;;6195:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;;2345:1:13;658:16:22;:31;-1:-1:-1;584:21859:17;;-1:-1:-1;;584:21859:17;1527:1491:12;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:12;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4146:31:30;;-1:-1:-1;;;4202:2:30;4193:12;;4186:40;-1:-1:-1;;;4251:2:30;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:30;4341:12;;4334:41;-1:-1:-1;;;4400:2:30;4391:12;;4384:39;-1:-1:-1;;;4448:2:30;4439:12;;4432:41;-1:-1:-1;;;4498:3:30;4489:13;;4482:43;-1:-1:-1;;;4550:3:30;4541:13;;4534:41;-1:-1:-1;;;4930:3:30;4921:13;;624:32;-1:-1:-1;;;672:12:30;;;760:31;-1:-1:-1;;;807:12:30;;;895:30;-1:-1:-1;;;941:12:30;;;1029:29;-1:-1:-1;;;1074:12:30;;;1162:31;-1:-1:-1;;;1209:12:30;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:30;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:30;;;1837:30;-1:-1:-1;;;1883:12:30;;;1971:16;2003:11;;;2025:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5663:28:30;-1:-1:-1;;;5707:12:30;;;5700:36;-1:-1:-1;;;5752:12:30;;;5745:39;-1:-1:-1;;;5800:12:30;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:30;;;5900:25;1909:724:12;-1:-1:-1;5941:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:30:-;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:30;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:30: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:30;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:30:o;5964:489::-;584:21859:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea26469706673582212203020d55493483b4eac2143d1ab2547b5f4f891d864f006103de4bc212c66972564736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS KECCAK256 0xD5 SLOAD SWAP4 BASEFEE EXTCODESIZE 0x4E 0xAC 0x21 NUMBER 0xD1 0xAB 0x25 SELFBALANCE 0xB5 DELEGATECALL 0xF8 SWAP2 0xD8 PUSH5 0xF006103DE4 0xBC 0x21 0x2C PUSH7 0x972564736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ","sourceMap":"584:21859:17:-: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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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":3994,"contract":"contracts/lib/Executor.sol:Executor","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":1672,"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":{"@_2204":{"entryPoint":null,"id":2204,"parameterSlots":1,"returnSlots":0},"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":264,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_952":{"entryPoint":null,"id":952,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:30","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:30"},"nodeType":"YulFunctionCall","src":"143:12:30"},"nodeType":"YulExpressionStatement","src":"143:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:30"},"nodeType":"YulFunctionCall","src":"112:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:30"},"nodeType":"YulFunctionCall","src":"108:32:30"},"nodeType":"YulIf","src":"105:52:30"},{"nodeType":"YulVariableDeclaration","src":"166:29:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:30"},"nodeType":"YulFunctionCall","src":"179:16:30"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:30"},"nodeType":"YulFunctionCall","src":"260:12:30"},"nodeType":"YulExpressionStatement","src":"260:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:30"},"nodeType":"YulFunctionCall","src":"239:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:30"},"nodeType":"YulFunctionCall","src":"235:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:30"},"nodeType":"YulFunctionCall","src":"224:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:30"},"nodeType":"YulFunctionCall","src":"214:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:30"},"nodeType":"YulFunctionCall","src":"207:50:30"},"nodeType":"YulIf","src":"204:70:30"},{"nodeType":"YulAssignment","src":"283:15:30","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:30"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:30","type":""}],"src":"14:290:30"},{"body":{"nodeType":"YulBlock","src":"407:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:30"},"nodeType":"YulFunctionCall","src":"455:12:30"},"nodeType":"YulExpressionStatement","src":"455:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:30"},"nodeType":"YulFunctionCall","src":"424:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:30"},"nodeType":"YulFunctionCall","src":"420:32:30"},"nodeType":"YulIf","src":"417:52:30"},{"nodeType":"YulAssignment","src":"478:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:30"},"nodeType":"YulFunctionCall","src":"488:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:30"}]},{"nodeType":"YulAssignment","src":"513:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:30"},"nodeType":"YulFunctionCall","src":"529:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:30"},"nodeType":"YulFunctionCall","src":"523:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:30","type":""}],"src":"309:245:30"},{"body":{"nodeType":"YulBlock","src":"614:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:30"},"nodeType":"YulFunctionCall","src":"624:32:30"},"nodeType":"YulExpressionStatement","src":"624:32:30"},{"nodeType":"YulAssignment","src":"665:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:30"},"nodeType":"YulFunctionCall","src":"672:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:30","type":""}],"src":"559:131:30"},{"body":{"nodeType":"YulBlock","src":"750:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:30"},"nodeType":"YulFunctionCall","src":"760:31:30"},"nodeType":"YulExpressionStatement","src":"760:31:30"},{"nodeType":"YulAssignment","src":"800:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:30"},"nodeType":"YulFunctionCall","src":"807:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:30","type":""}],"src":"695:130:30"},{"body":{"nodeType":"YulBlock","src":"885:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:30"},"nodeType":"YulFunctionCall","src":"895:30:30"},"nodeType":"YulExpressionStatement","src":"895:30:30"},{"nodeType":"YulAssignment","src":"934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:30"},"nodeType":"YulFunctionCall","src":"941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:30","type":""}],"src":"830:129:30"},{"body":{"nodeType":"YulBlock","src":"1019:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:30"},"nodeType":"YulFunctionCall","src":"1029:29:30"},"nodeType":"YulExpressionStatement","src":"1029:29:30"},{"nodeType":"YulAssignment","src":"1067:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:30"},"nodeType":"YulFunctionCall","src":"1074:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:30","type":""}],"src":"964:128:30"},{"body":{"nodeType":"YulBlock","src":"1152:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:30"},"nodeType":"YulFunctionCall","src":"1162:31:30"},"nodeType":"YulExpressionStatement","src":"1162:31:30"},{"nodeType":"YulAssignment","src":"1202:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:30"},"nodeType":"YulFunctionCall","src":"1209:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:30","type":""}],"src":"1097:130:30"},{"body":{"nodeType":"YulBlock","src":"1287:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:30"},"nodeType":"YulFunctionCall","src":"1297:27:30"},"nodeType":"YulExpressionStatement","src":"1297:27:30"},{"nodeType":"YulAssignment","src":"1333:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:30"},"nodeType":"YulFunctionCall","src":"1340:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:30","type":""}],"src":"1232:126:30"},{"body":{"nodeType":"YulBlock","src":"1418:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:30"},"nodeType":"YulFunctionCall","src":"1428:35:30"},"nodeType":"YulExpressionStatement","src":"1428:35:30"},{"nodeType":"YulAssignment","src":"1472:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:30"},"nodeType":"YulFunctionCall","src":"1479:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:30","type":""}],"src":"1363:134:30"},{"body":{"nodeType":"YulBlock","src":"1557:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:30"},"nodeType":"YulFunctionCall","src":"1567:28:30"},"nodeType":"YulExpressionStatement","src":"1567:28:30"},{"nodeType":"YulAssignment","src":"1604:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:30"},"nodeType":"YulFunctionCall","src":"1611:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:30","type":""}],"src":"1502:127:30"},{"body":{"nodeType":"YulBlock","src":"1689:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:30"},"nodeType":"YulFunctionCall","src":"1699:34:30"},"nodeType":"YulExpressionStatement","src":"1699:34:30"},{"nodeType":"YulAssignment","src":"1742:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:30"},"nodeType":"YulFunctionCall","src":"1749:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:30","type":""}],"src":"1634:133:30"},{"body":{"nodeType":"YulBlock","src":"1827:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:30"},"nodeType":"YulFunctionCall","src":"1837:30:30"},"nodeType":"YulExpressionStatement","src":"1837:30:30"},{"nodeType":"YulAssignment","src":"1876:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:30"},"nodeType":"YulFunctionCall","src":"1883:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:30","type":""}],"src":"1772:129:30"},{"body":{"nodeType":"YulBlock","src":"1961:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:30"},"nodeType":"YulFunctionCall","src":"1971:16:30"},"nodeType":"YulExpressionStatement","src":"1971:16:30"},{"nodeType":"YulAssignment","src":"1996:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:30"},"nodeType":"YulFunctionCall","src":"2003:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:30","type":""}],"src":"1906:114:30"},{"body":{"nodeType":"YulBlock","src":"4136:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:30"},"nodeType":"YulFunctionCall","src":"4146:31:30"},"nodeType":"YulExpressionStatement","src":"4146:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:30"},"nodeType":"YulFunctionCall","src":"4193:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:30"},"nodeType":"YulFunctionCall","src":"4186:40:30"},"nodeType":"YulExpressionStatement","src":"4186:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:30"},"nodeType":"YulFunctionCall","src":"4242:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:30"},"nodeType":"YulFunctionCall","src":"4235:38:30"},"nodeType":"YulExpressionStatement","src":"4235:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:30"},"nodeType":"YulFunctionCall","src":"4289:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:30"},"nodeType":"YulFunctionCall","src":"4282:43:30"},"nodeType":"YulExpressionStatement","src":"4282:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:30"},"nodeType":"YulFunctionCall","src":"4341:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:30"},"nodeType":"YulFunctionCall","src":"4334:41:30"},"nodeType":"YulExpressionStatement","src":"4334:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:30"},"nodeType":"YulFunctionCall","src":"4391:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:30"},"nodeType":"YulFunctionCall","src":"4384:39:30"},"nodeType":"YulExpressionStatement","src":"4384:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:30"},"nodeType":"YulFunctionCall","src":"4439:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:30"},"nodeType":"YulFunctionCall","src":"4432:41:30"},"nodeType":"YulExpressionStatement","src":"4432:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:30"},"nodeType":"YulFunctionCall","src":"4489:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:30"},"nodeType":"YulFunctionCall","src":"4482:43:30"},"nodeType":"YulExpressionStatement","src":"4482:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:30"},"nodeType":"YulFunctionCall","src":"4541:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:30"},"nodeType":"YulFunctionCall","src":"4534:41:30"},"nodeType":"YulExpressionStatement","src":"4534:41:30"},{"nodeType":"YulAssignment","src":"4584:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:30"},"nodeType":"YulFunctionCall","src":"4921:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:30"},"nodeType":"YulFunctionCall","src":"4891:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:30"},"nodeType":"YulFunctionCall","src":"4861:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:30"},"nodeType":"YulFunctionCall","src":"4831:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:30"},"nodeType":"YulFunctionCall","src":"4801:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:30"},"nodeType":"YulFunctionCall","src":"4771:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:30"},"nodeType":"YulFunctionCall","src":"4741:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:30"},"nodeType":"YulFunctionCall","src":"4711:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:30"},"nodeType":"YulFunctionCall","src":"4681:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:30"},"nodeType":"YulFunctionCall","src":"4651:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:30"},"nodeType":"YulFunctionCall","src":"4621:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:30"},"nodeType":"YulFunctionCall","src":"4591:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:30","type":""}],"src":"2025:2926:30"},{"body":{"nodeType":"YulBlock","src":"5653:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:30"},"nodeType":"YulFunctionCall","src":"5663:28:30"},"nodeType":"YulExpressionStatement","src":"5663:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:30"},"nodeType":"YulFunctionCall","src":"5707:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:30"},"nodeType":"YulFunctionCall","src":"5700:36:30"},"nodeType":"YulExpressionStatement","src":"5700:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:30"},"nodeType":"YulFunctionCall","src":"5752:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:30"},"nodeType":"YulFunctionCall","src":"5745:39:30"},"nodeType":"YulExpressionStatement","src":"5745:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:30"},"nodeType":"YulFunctionCall","src":"5800:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:30"},"nodeType":"YulFunctionCall","src":"5793:40:30"},"nodeType":"YulExpressionStatement","src":"5793:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:30"},"nodeType":"YulFunctionCall","src":"5849:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:30"},"nodeType":"YulFunctionCall","src":"5842:49:30"},"nodeType":"YulExpressionStatement","src":"5842:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:30"},"nodeType":"YulFunctionCall","src":"5907:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:30"},"nodeType":"YulFunctionCall","src":"5900:25:30"},"nodeType":"YulExpressionStatement","src":"5900:25:30"},{"nodeType":"YulAssignment","src":"5934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:30"},"nodeType":"YulFunctionCall","src":"5941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:30","type":""}],"src":"4956:1003:30"},{"body":{"nodeType":"YulBlock","src":"6177:276:30","statements":[{"nodeType":"YulAssignment","src":"6187:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:30"},"nodeType":"YulFunctionCall","src":"6195:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:30"},"nodeType":"YulFunctionCall","src":"6223:25:30"},"nodeType":"YulExpressionStatement","src":"6223:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:30"},"nodeType":"YulFunctionCall","src":"6264:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:30"},"nodeType":"YulFunctionCall","src":"6257:34:30"},"nodeType":"YulExpressionStatement","src":"6257:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:30"},"nodeType":"YulFunctionCall","src":"6307:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:30"},"nodeType":"YulFunctionCall","src":"6300:34:30"},"nodeType":"YulExpressionStatement","src":"6300:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:30"},"nodeType":"YulFunctionCall","src":"6350:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:30"},"nodeType":"YulFunctionCall","src":"6343:34:30"},"nodeType":"YulExpressionStatement","src":"6343:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:30"},"nodeType":"YulFunctionCall","src":"6393:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:30"},"nodeType":"YulFunctionCall","src":"6430:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:30"},"nodeType":"YulFunctionCall","src":"6426:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:30"},"nodeType":"YulFunctionCall","src":"6414:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:30"},"nodeType":"YulFunctionCall","src":"6386:61:30"},"nodeType":"YulExpressionStatement","src":"6386:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:30","type":""}],"src":"5964:489:30"}]},"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":30,"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:18:-:0;;;279:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;344:17;786:19:12;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6223:25:30;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:30;;6300:34;;;;6350:18;;;6343:34;1371:4:12;6393:19:30;;;6386:61;1203:187:12;;;;;;;;;;6195:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;223:5658:18;;-1:-1:-1;223:5658:18;1527:1491:12;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:12;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4146:31:30;;-1:-1:-1;;;4202:2:30;4193:12;;4186:40;-1:-1:-1;;;4251:2:30;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:30;4341:12;;4334:41;-1:-1:-1;;;4400:2:30;4391:12;;4384:39;-1:-1:-1;;;4448:2:30;4439:12;;4432:41;-1:-1:-1;;;4498:3:30;4489:13;;4482:43;-1:-1:-1;;;4550:3:30;4541:13;;4534:41;-1:-1:-1;;;4930:3:30;4921:13;;624:32;-1:-1:-1;;;672:12:30;;;760:31;-1:-1:-1;;;807:12:30;;;895:30;-1:-1:-1;;;941:12:30;;;1029:29;-1:-1:-1;;;1074:12:30;;;1162:31;-1:-1:-1;;;1209:12:30;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:30;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:30;;;1837:30;-1:-1:-1;;;1883:12:30;;;1971:16;2003:11;;;2025:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5663:28:30;-1:-1:-1;;;5707:12:30;;;5700:36;-1:-1:-1;;;5752:12:30;;;5745:39;-1:-1:-1;;;5800:12:30;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:30;;;5900:25;1909:724:12;-1:-1:-1;5941:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:30:-;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:30;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:30: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:30;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:30:o;5964:489::-;223:5658:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"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:18:-: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:19:-: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:19:-: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":"address","name":"fulfiller","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":{"@_1739":{"entryPoint":null,"id":1739,"parameterSlots":1,"returnSlots":0},"@_2204":{"entryPoint":null,"id":2204,"parameterSlots":1,"returnSlots":0},"@_2375":{"entryPoint":null,"id":2375,"parameterSlots":2,"returnSlots":0},"@_3192":{"entryPoint":null,"id":3192,"parameterSlots":2,"returnSlots":0},"@_4003":{"entryPoint":null,"id":4003,"parameterSlots":0,"returnSlots":0},"@_4071":{"entryPoint":null,"id":4071,"parameterSlots":1,"returnSlots":0},"@_4561":{"entryPoint":null,"id":4561,"parameterSlots":1,"returnSlots":0},"@_617":{"entryPoint":null,"id":617,"parameterSlots":1,"returnSlots":0},"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":296,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_952":{"entryPoint":null,"id":952,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:30","statements":[{"nodeType":"YulAssignment","src":"84:22:30","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:30"},"nodeType":"YulFunctionCall","src":"93:13:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:30"}]},{"body":{"nodeType":"YulBlock","src":"169:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:30"},"nodeType":"YulFunctionCall","src":"171:12:30"},"nodeType":"YulExpressionStatement","src":"171:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:30"},"nodeType":"YulFunctionCall","src":"150:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:30"},"nodeType":"YulFunctionCall","src":"146:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:30"},"nodeType":"YulFunctionCall","src":"135:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:30"},"nodeType":"YulFunctionCall","src":"125:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:30"},"nodeType":"YulFunctionCall","src":"118:50:30"},"nodeType":"YulIf","src":"115:70:30"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:30","type":""}],"src":"14:177:30"},{"body":{"nodeType":"YulBlock","src":"294:195:30","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:30"},"nodeType":"YulFunctionCall","src":"342:12:30"},"nodeType":"YulExpressionStatement","src":"342:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:30"},"nodeType":"YulFunctionCall","src":"311:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:30"},"nodeType":"YulFunctionCall","src":"307:32:30"},"nodeType":"YulIf","src":"304:52:30"},{"nodeType":"YulAssignment","src":"365:50:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:30"},"nodeType":"YulFunctionCall","src":"375:40:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:30"}]},{"nodeType":"YulAssignment","src":"424:59:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:30"},"nodeType":"YulFunctionCall","src":"464:18:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:30"},"nodeType":"YulFunctionCall","src":"434:49:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:30","type":""}],"src":"196:293:30"},{"body":{"nodeType":"YulBlock","src":"592:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"638:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"647:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"650:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"640:6:30"},"nodeType":"YulFunctionCall","src":"640:12:30"},"nodeType":"YulExpressionStatement","src":"640:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"613:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"609:3:30"},"nodeType":"YulFunctionCall","src":"609:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"634:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"605:3:30"},"nodeType":"YulFunctionCall","src":"605:32:30"},"nodeType":"YulIf","src":"602:52:30"},{"nodeType":"YulAssignment","src":"663:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"679:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"673:5:30"},"nodeType":"YulFunctionCall","src":"673:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"663:6:30"}]},{"nodeType":"YulAssignment","src":"698:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"718:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"729:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:30"},"nodeType":"YulFunctionCall","src":"714:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"708:5:30"},"nodeType":"YulFunctionCall","src":"708:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"698:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"550:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"561:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"573:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"581:6:30","type":""}],"src":"494:245:30"},{"body":{"nodeType":"YulBlock","src":"799:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"816:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"821:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:30"},"nodeType":"YulFunctionCall","src":"809:32:30"},"nodeType":"YulExpressionStatement","src":"809:32:30"},{"nodeType":"YulAssignment","src":"850:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"861:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"866:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"857:3:30"},"nodeType":"YulFunctionCall","src":"857:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"850:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"783:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"791:3:30","type":""}],"src":"744:131:30"},{"body":{"nodeType":"YulBlock","src":"935:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"952:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"957:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"945:6:30"},"nodeType":"YulFunctionCall","src":"945:31:30"},"nodeType":"YulExpressionStatement","src":"945:31:30"},{"nodeType":"YulAssignment","src":"985:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"996:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1001:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"992:3:30"},"nodeType":"YulFunctionCall","src":"992:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"985:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"919:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"927:3:30","type":""}],"src":"880:130:30"},{"body":{"nodeType":"YulBlock","src":"1070:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1087:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"1092:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1080:6:30"},"nodeType":"YulFunctionCall","src":"1080:30:30"},"nodeType":"YulExpressionStatement","src":"1080:30:30"},{"nodeType":"YulAssignment","src":"1119:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1130:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1135:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:30"},"nodeType":"YulFunctionCall","src":"1126:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1119:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1054:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1062:3:30","type":""}],"src":"1015:129:30"},{"body":{"nodeType":"YulBlock","src":"1204:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1221:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1226:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1214:6:30"},"nodeType":"YulFunctionCall","src":"1214:29:30"},"nodeType":"YulExpressionStatement","src":"1214:29:30"},{"nodeType":"YulAssignment","src":"1252:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1268:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:30"},"nodeType":"YulFunctionCall","src":"1259:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1252:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1188:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1196:3:30","type":""}],"src":"1149:128:30"},{"body":{"nodeType":"YulBlock","src":"1337:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1354:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1359:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1347:6:30"},"nodeType":"YulFunctionCall","src":"1347:31:30"},"nodeType":"YulExpressionStatement","src":"1347:31:30"},{"nodeType":"YulAssignment","src":"1387:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:30"},"nodeType":"YulFunctionCall","src":"1394:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1321:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1329:3:30","type":""}],"src":"1282:130:30"},{"body":{"nodeType":"YulBlock","src":"1472:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1489:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1494:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1482:6:30"},"nodeType":"YulFunctionCall","src":"1482:27:30"},"nodeType":"YulExpressionStatement","src":"1482:27:30"},{"nodeType":"YulAssignment","src":"1518:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1529:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1534:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1525:3:30"},"nodeType":"YulFunctionCall","src":"1525:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1518:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1456:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1464:3:30","type":""}],"src":"1417:126:30"},{"body":{"nodeType":"YulBlock","src":"1603:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1620:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1625:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1613:6:30"},"nodeType":"YulFunctionCall","src":"1613:35:30"},"nodeType":"YulExpressionStatement","src":"1613:35:30"},{"nodeType":"YulAssignment","src":"1657:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1668:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1673:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1664:3:30"},"nodeType":"YulFunctionCall","src":"1664:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1657:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1587:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1595:3:30","type":""}],"src":"1548:134:30"},{"body":{"nodeType":"YulBlock","src":"1742:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1764:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:30"},"nodeType":"YulFunctionCall","src":"1752:28:30"},"nodeType":"YulExpressionStatement","src":"1752:28:30"},{"nodeType":"YulAssignment","src":"1789:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1800:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1796:3:30"},"nodeType":"YulFunctionCall","src":"1796:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1789:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1726:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1734:3:30","type":""}],"src":"1687:127:30"},{"body":{"nodeType":"YulBlock","src":"1874:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1891:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1896:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1884:6:30"},"nodeType":"YulFunctionCall","src":"1884:34:30"},"nodeType":"YulExpressionStatement","src":"1884:34:30"},{"nodeType":"YulAssignment","src":"1927:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1938:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1934:3:30"},"nodeType":"YulFunctionCall","src":"1934:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1927:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1858:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1866:3:30","type":""}],"src":"1819:133:30"},{"body":{"nodeType":"YulBlock","src":"2012:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2029:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"2034:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2022:6:30"},"nodeType":"YulFunctionCall","src":"2022:30:30"},"nodeType":"YulExpressionStatement","src":"2022:30:30"},{"nodeType":"YulAssignment","src":"2061:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2072:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2077:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2068:3:30"},"nodeType":"YulFunctionCall","src":"2068:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2061:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2004:3:30","type":""}],"src":"1957:129:30"},{"body":{"nodeType":"YulBlock","src":"2146:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2163:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"2168:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2156:6:30"},"nodeType":"YulFunctionCall","src":"2156:16:30"},"nodeType":"YulExpressionStatement","src":"2156:16:30"},{"nodeType":"YulAssignment","src":"2181:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2192:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2197:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:30"},"nodeType":"YulFunctionCall","src":"2188:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2181:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2130:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2138:3:30","type":""}],"src":"2091:114:30"},{"body":{"nodeType":"YulBlock","src":"4321:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4338:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4343:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:30"},"nodeType":"YulFunctionCall","src":"4331:31:30"},"nodeType":"YulExpressionStatement","src":"4331:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4382:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4378:3:30"},"nodeType":"YulFunctionCall","src":"4378:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4392:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4371:6:30"},"nodeType":"YulFunctionCall","src":"4371:40:30"},"nodeType":"YulExpressionStatement","src":"4371:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4431:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4436:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4427:3:30"},"nodeType":"YulFunctionCall","src":"4427:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4441:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4420:6:30"},"nodeType":"YulFunctionCall","src":"4420:38:30"},"nodeType":"YulExpressionStatement","src":"4420:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4478:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4483:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4474:3:30"},"nodeType":"YulFunctionCall","src":"4474:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4488:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4467:6:30"},"nodeType":"YulFunctionCall","src":"4467:43:30"},"nodeType":"YulExpressionStatement","src":"4467:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4530:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4535:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4526:3:30"},"nodeType":"YulFunctionCall","src":"4526:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4540:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4519:6:30"},"nodeType":"YulFunctionCall","src":"4519:41:30"},"nodeType":"YulExpressionStatement","src":"4519:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4580:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4585:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:30"},"nodeType":"YulFunctionCall","src":"4576:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4590:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:30"},"nodeType":"YulFunctionCall","src":"4569:39:30"},"nodeType":"YulExpressionStatement","src":"4569:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4628:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4633:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4624:3:30"},"nodeType":"YulFunctionCall","src":"4624:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4638:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4617:6:30"},"nodeType":"YulFunctionCall","src":"4617:41:30"},"nodeType":"YulExpressionStatement","src":"4617:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4683:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:30"},"nodeType":"YulFunctionCall","src":"4674:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4689:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:30"},"nodeType":"YulFunctionCall","src":"4667:43:30"},"nodeType":"YulExpressionStatement","src":"4667:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4730:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4735:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:30"},"nodeType":"YulFunctionCall","src":"4726:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4741:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4719:6:30"},"nodeType":"YulFunctionCall","src":"4719:41:30"},"nodeType":"YulExpressionStatement","src":"4719:41:30"},{"nodeType":"YulAssignment","src":"4769:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5110:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5115:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:30"},"nodeType":"YulFunctionCall","src":"5106:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"5076:29:30"},"nodeType":"YulFunctionCall","src":"5076:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"5046:29:30"},"nodeType":"YulFunctionCall","src":"5046:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"5016:29:30"},"nodeType":"YulFunctionCall","src":"5016:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4986:29:30"},"nodeType":"YulFunctionCall","src":"4986:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4956:29:30"},"nodeType":"YulFunctionCall","src":"4956:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4926:29:30"},"nodeType":"YulFunctionCall","src":"4926:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4896:29:30"},"nodeType":"YulFunctionCall","src":"4896:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4866:29:30"},"nodeType":"YulFunctionCall","src":"4866:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4836:29:30"},"nodeType":"YulFunctionCall","src":"4836:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4806:29:30"},"nodeType":"YulFunctionCall","src":"4806:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4776:29:30"},"nodeType":"YulFunctionCall","src":"4776:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4769:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4313:3:30","type":""}],"src":"2210:2926:30"},{"body":{"nodeType":"YulBlock","src":"5838:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5855:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5860:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5848:6:30"},"nodeType":"YulFunctionCall","src":"5848:28:30"},"nodeType":"YulExpressionStatement","src":"5848:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5896:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5901:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:30"},"nodeType":"YulFunctionCall","src":"5892:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5906:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:30"},"nodeType":"YulFunctionCall","src":"5885:36:30"},"nodeType":"YulExpressionStatement","src":"5885:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5941:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5946:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5937:3:30"},"nodeType":"YulFunctionCall","src":"5937:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5951:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5930:6:30"},"nodeType":"YulFunctionCall","src":"5930:39:30"},"nodeType":"YulExpressionStatement","src":"5930:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5989:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5994:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:30"},"nodeType":"YulFunctionCall","src":"5985:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5999:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5978:6:30"},"nodeType":"YulFunctionCall","src":"5978:40:30"},"nodeType":"YulExpressionStatement","src":"5978:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6038:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6043:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6034:3:30"},"nodeType":"YulFunctionCall","src":"6034:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6048:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6027:6:30"},"nodeType":"YulFunctionCall","src":"6027:49:30"},"nodeType":"YulExpressionStatement","src":"6027:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6096:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6101:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6092:3:30"},"nodeType":"YulFunctionCall","src":"6092:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"6106:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6085:6:30"},"nodeType":"YulFunctionCall","src":"6085:25:30"},"nodeType":"YulExpressionStatement","src":"6085:25:30"},{"nodeType":"YulAssignment","src":"6119:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6130:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6135:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:30"},"nodeType":"YulFunctionCall","src":"6126:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6119:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5830:3:30","type":""}],"src":"5141:1003:30"},{"body":{"nodeType":"YulBlock","src":"6362:276:30","statements":[{"nodeType":"YulAssignment","src":"6372:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6384:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:30"},"nodeType":"YulFunctionCall","src":"6380:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6372:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6415:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6426:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:30"},"nodeType":"YulFunctionCall","src":"6408:25:30"},"nodeType":"YulExpressionStatement","src":"6408:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6453:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6464:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6449:3:30"},"nodeType":"YulFunctionCall","src":"6449:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6469:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6442:6:30"},"nodeType":"YulFunctionCall","src":"6442:34:30"},"nodeType":"YulExpressionStatement","src":"6442:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6496:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6507:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:30"},"nodeType":"YulFunctionCall","src":"6492:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6512:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6485:6:30"},"nodeType":"YulFunctionCall","src":"6485:34:30"},"nodeType":"YulExpressionStatement","src":"6485:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6550:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:30"},"nodeType":"YulFunctionCall","src":"6535:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6555:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:30"},"nodeType":"YulFunctionCall","src":"6528:34:30"},"nodeType":"YulExpressionStatement","src":"6528:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6593:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:30"},"nodeType":"YulFunctionCall","src":"6578:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6603:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6615:3:30"},"nodeType":"YulFunctionCall","src":"6615:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6628:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:30"},"nodeType":"YulFunctionCall","src":"6611:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6599:3:30"},"nodeType":"YulFunctionCall","src":"6599:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6571:6:30"},"nodeType":"YulFunctionCall","src":"6571:61:30"},"nodeType":"YulExpressionStatement","src":"6571:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6310:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6318:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6326:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6334:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6342:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6353:4:30","type":""}],"src":"6149:489:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101a060405234801561001157600080fd5b506040516105f63803806105f683398101604081905261003091610498565b8181808280808080610040610128565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010291906104cb565b5061016052505060016000555050506001600160a01b031661018052506104ef92505050565b600080808061015760408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b394506000916103b191016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b80516001600160a01b038116811461049357600080fd5b919050565b600080604083850312156104ab57600080fd5b6104b48361047c565b91506104c26020840161047c565b90509250929050565b600080604083850312156104de57600080fd5b505080516020909101519092909150565b60805160a05160c05160e051610100516101205161014051610160516101805160b2610544600039600060310152600050506000505060005050600050506000505060005050600050506000505060b26000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea2646970667358221220147965d5b4a2d4f5be23a142b349da53916dd1d3fda7ef1c099169698359f8a264736f6c634300080e0033","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 EQ PUSH26 0x65D5B4A2D4F5BE23A142B349DA53916DD1D3FDA7EF1C09916969 DUP4 MSIZE 0xF8 LOG2 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"362:9405:20:-:0;;;546:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;621:17;640:11;;621:17;;;;;786:19:12;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6408:25:30;;;;6449:18;;;6442:34;;;;-1:-1:-1;6492:18:30;;6485:34;;;;6535:18;;;6528:34;1371:4:12;6578:19:30;;;6571:61;1203:187:12;;;;;;;;;;6380:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;;2345:1:13;658:16:22;:31;-1:-1:-1;;;;;;;;417:20:23;;;-1:-1:-1;362:9405:20;;-1:-1:-1;;;362:9405:20;1527:1491:12;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:12;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4331:31:30;;-1:-1:-1;;;4387:2:30;4378:12;;4371:40;-1:-1:-1;;;4436:2:30;4427:12;;4420:38;4488:21;4483:2;4474:12;;4467:43;-1:-1:-1;;;4535:2:30;4526:12;;4519:41;-1:-1:-1;;;4585:2:30;4576:12;;4569:39;-1:-1:-1;;;4633:2:30;4624:12;;4617:41;-1:-1:-1;;;4683:3:30;4674:13;;4667:43;-1:-1:-1;;;4735:3:30;4726:13;;4719:41;-1:-1:-1;;;5115:3:30;5106:13;;809:32;-1:-1:-1;;;857:12:30;;;945:31;-1:-1:-1;;;992:12:30;;;1080:30;-1:-1:-1;;;1126:12:30;;;1214:29;-1:-1:-1;;;1259:12:30;;;1347:31;-1:-1:-1;;;1394:12:30;;;1482:27;1625:22;1525:12;;;1613:35;-1:-1:-1;;;1664:12:30;;;1752:28;1896:21;1796:12;;;1884:34;-1:-1:-1;;;1934:12:30;;;2022:30;-1:-1:-1;;;2068:12:30;;;2156:16;2188:11;;;2210:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5848:28:30;-1:-1:-1;;;5892:12:30;;;5885:36;-1:-1:-1;;;5937:12:30;;;5930:39;-1:-1:-1;;;5985:12:30;;;5978:40;6048:27;6034:12;;;6027:49;-1:-1:-1;;;6092:12:30;;;6085:25;1909:724:12;-1:-1:-1;6126:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:177:30:-;93:13;;-1:-1:-1;;;;;135:31:30;;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:30;;729:2;714:18;;;708:25;673:16;;708:25;;-1:-1:-1;494:245:30:o;6149:489::-;362:9405:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@shadowToken_4061":{"entryPoint":null,"id":4061,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:125:30","statements":[{"nodeType":"YulAssignment","src":"125:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:30"},"nodeType":"YulFunctionCall","src":"133:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"190:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:30"},"nodeType":"YulFunctionCall","src":"178:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:30"},"nodeType":"YulFunctionCall","src":"160:74:30"},"nodeType":"YulExpressionStatement","src":"160:74:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:30","type":""}],"src":"14:226:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4061":[{"length":32,"start":49}]},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea2646970667358221220147965d5b4a2d4f5be23a142b349da53916dd1d3fda7ef1c099169698359f8a264736f6c634300080e0033","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 EQ PUSH26 0x65D5B4A2D4F5BE23A142B349DA53916DD1D3FDA7EF1C09916969 DUP4 MSIZE 0xF8 LOG2 PUSH5 0x736F6C6343 STOP ADDMOD 0xE STOP CALLER ","sourceMap":"362:9405:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:36:23;;;;;;;;190:42:30;178:55;;;160:74;;148:2;133:18;336:36:23;;;;;;"},"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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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            msg.sender,\\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\":\"0xeb45a47def0e63c67a9df11e8a95564f605a27e6f099c937ede116ce38a16971\",\"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":3994,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":1672,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":3178,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"_orderStatus","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(OrderStatus)1658_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)1658_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OrderStatus)","numberOfBytes":"32","value":"t_struct(OrderStatus)1658_storage"},"t_struct(OrderStatus)1658_storage":{"encoding":"inplace","label":"struct OrderStatus","members":[{"astId":1643,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"isValidated","offset":0,"slot":"0","type":"t_bool"},{"astId":1645,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"isCancelled","offset":1,"slot":"0","type":"t_bool"},{"astId":1647,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"isFinalized","offset":2,"slot":"0","type":"t_bool"},{"astId":1649,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"isBroken","offset":3,"slot":"0","type":"t_bool"},{"astId":1651,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"fulfiller","offset":4,"slot":"0","type":"t_address"},{"astId":1653,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"startedAt","offset":0,"slot":"1","type":"t_uint256"},{"astId":1655,"contract":"contracts/lib/OrderFulfiller.sol:OrderFulfiller","label":"shadowId","offset":0,"slot":"2","type":"t_uint256"},{"astId":1657,"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":"address","name":"fulfiller","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":{"@_1739":{"entryPoint":null,"id":1739,"parameterSlots":1,"returnSlots":0},"@_2204":{"entryPoint":null,"id":2204,"parameterSlots":1,"returnSlots":0},"@_3192":{"entryPoint":null,"id":3192,"parameterSlots":2,"returnSlots":0},"@_4003":{"entryPoint":null,"id":4003,"parameterSlots":0,"returnSlots":0},"@_4071":{"entryPoint":null,"id":4071,"parameterSlots":1,"returnSlots":0},"@_4561":{"entryPoint":null,"id":4561,"parameterSlots":1,"returnSlots":0},"@_617":{"entryPoint":null,"id":617,"parameterSlots":1,"returnSlots":0},"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":292,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_952":{"entryPoint":null,"id":952,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:30","statements":[{"nodeType":"YulAssignment","src":"84:22:30","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:30"},"nodeType":"YulFunctionCall","src":"93:13:30"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:30"}]},{"body":{"nodeType":"YulBlock","src":"169:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:30"},"nodeType":"YulFunctionCall","src":"171:12:30"},"nodeType":"YulExpressionStatement","src":"171:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:30"},"nodeType":"YulFunctionCall","src":"150:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:30"},"nodeType":"YulFunctionCall","src":"146:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:30"},"nodeType":"YulFunctionCall","src":"135:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:30"},"nodeType":"YulFunctionCall","src":"125:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:30"},"nodeType":"YulFunctionCall","src":"118:50:30"},"nodeType":"YulIf","src":"115:70:30"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:30","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:30","type":""}],"src":"14:177:30"},{"body":{"nodeType":"YulBlock","src":"294:195:30","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:30"},"nodeType":"YulFunctionCall","src":"342:12:30"},"nodeType":"YulExpressionStatement","src":"342:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:30"},"nodeType":"YulFunctionCall","src":"311:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:30"},"nodeType":"YulFunctionCall","src":"307:32:30"},"nodeType":"YulIf","src":"304:52:30"},{"nodeType":"YulAssignment","src":"365:50:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:30"},"nodeType":"YulFunctionCall","src":"375:40:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:30"}]},{"nodeType":"YulAssignment","src":"424:59:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:30"},"nodeType":"YulFunctionCall","src":"464:18:30"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:30"},"nodeType":"YulFunctionCall","src":"434:49:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:30"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:30","type":""}],"src":"196:293:30"},{"body":{"nodeType":"YulBlock","src":"592:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"638:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"647:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"650:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"640:6:30"},"nodeType":"YulFunctionCall","src":"640:12:30"},"nodeType":"YulExpressionStatement","src":"640:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"613:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"609:3:30"},"nodeType":"YulFunctionCall","src":"609:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"634:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"605:3:30"},"nodeType":"YulFunctionCall","src":"605:32:30"},"nodeType":"YulIf","src":"602:52:30"},{"nodeType":"YulAssignment","src":"663:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"679:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"673:5:30"},"nodeType":"YulFunctionCall","src":"673:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"663:6:30"}]},{"nodeType":"YulAssignment","src":"698:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"718:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"729:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"714:3:30"},"nodeType":"YulFunctionCall","src":"714:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"708:5:30"},"nodeType":"YulFunctionCall","src":"708:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"698:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"550:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"561:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"573:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"581:6:30","type":""}],"src":"494:245:30"},{"body":{"nodeType":"YulBlock","src":"799:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"816:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"821:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:30"},"nodeType":"YulFunctionCall","src":"809:32:30"},"nodeType":"YulExpressionStatement","src":"809:32:30"},{"nodeType":"YulAssignment","src":"850:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"861:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"866:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"857:3:30"},"nodeType":"YulFunctionCall","src":"857:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"850:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"783:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"791:3:30","type":""}],"src":"744:131:30"},{"body":{"nodeType":"YulBlock","src":"935:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"952:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"957:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"945:6:30"},"nodeType":"YulFunctionCall","src":"945:31:30"},"nodeType":"YulExpressionStatement","src":"945:31:30"},{"nodeType":"YulAssignment","src":"985:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"996:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1001:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"992:3:30"},"nodeType":"YulFunctionCall","src":"992:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"985:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"919:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"927:3:30","type":""}],"src":"880:130:30"},{"body":{"nodeType":"YulBlock","src":"1070:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1087:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"1092:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1080:6:30"},"nodeType":"YulFunctionCall","src":"1080:30:30"},"nodeType":"YulExpressionStatement","src":"1080:30:30"},{"nodeType":"YulAssignment","src":"1119:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1130:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1135:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:30"},"nodeType":"YulFunctionCall","src":"1126:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1119:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1054:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1062:3:30","type":""}],"src":"1015:129:30"},{"body":{"nodeType":"YulBlock","src":"1204:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1221:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1226:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1214:6:30"},"nodeType":"YulFunctionCall","src":"1214:29:30"},"nodeType":"YulExpressionStatement","src":"1214:29:30"},{"nodeType":"YulAssignment","src":"1252:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1268:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:30"},"nodeType":"YulFunctionCall","src":"1259:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1252:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1188:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1196:3:30","type":""}],"src":"1149:128:30"},{"body":{"nodeType":"YulBlock","src":"1337:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1354:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1359:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1347:6:30"},"nodeType":"YulFunctionCall","src":"1347:31:30"},"nodeType":"YulExpressionStatement","src":"1347:31:30"},{"nodeType":"YulAssignment","src":"1387:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:30"},"nodeType":"YulFunctionCall","src":"1394:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1321:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1329:3:30","type":""}],"src":"1282:130:30"},{"body":{"nodeType":"YulBlock","src":"1472:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1489:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1494:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1482:6:30"},"nodeType":"YulFunctionCall","src":"1482:27:30"},"nodeType":"YulExpressionStatement","src":"1482:27:30"},{"nodeType":"YulAssignment","src":"1518:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1529:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1534:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1525:3:30"},"nodeType":"YulFunctionCall","src":"1525:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1518:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1456:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1464:3:30","type":""}],"src":"1417:126:30"},{"body":{"nodeType":"YulBlock","src":"1603:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1620:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1625:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1613:6:30"},"nodeType":"YulFunctionCall","src":"1613:35:30"},"nodeType":"YulExpressionStatement","src":"1613:35:30"},{"nodeType":"YulAssignment","src":"1657:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1668:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1673:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1664:3:30"},"nodeType":"YulFunctionCall","src":"1664:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1657:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1587:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1595:3:30","type":""}],"src":"1548:134:30"},{"body":{"nodeType":"YulBlock","src":"1742:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1764:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:30"},"nodeType":"YulFunctionCall","src":"1752:28:30"},"nodeType":"YulExpressionStatement","src":"1752:28:30"},{"nodeType":"YulAssignment","src":"1789:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1800:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1796:3:30"},"nodeType":"YulFunctionCall","src":"1796:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1789:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1726:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1734:3:30","type":""}],"src":"1687:127:30"},{"body":{"nodeType":"YulBlock","src":"1874:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1891:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1896:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1884:6:30"},"nodeType":"YulFunctionCall","src":"1884:34:30"},"nodeType":"YulExpressionStatement","src":"1884:34:30"},{"nodeType":"YulAssignment","src":"1927:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1938:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1934:3:30"},"nodeType":"YulFunctionCall","src":"1934:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1927:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1858:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1866:3:30","type":""}],"src":"1819:133:30"},{"body":{"nodeType":"YulBlock","src":"2012:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2029:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"2034:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2022:6:30"},"nodeType":"YulFunctionCall","src":"2022:30:30"},"nodeType":"YulExpressionStatement","src":"2022:30:30"},{"nodeType":"YulAssignment","src":"2061:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2072:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2077:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2068:3:30"},"nodeType":"YulFunctionCall","src":"2068:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2061:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2004:3:30","type":""}],"src":"1957:129:30"},{"body":{"nodeType":"YulBlock","src":"2146:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2163:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"2168:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2156:6:30"},"nodeType":"YulFunctionCall","src":"2156:16:30"},"nodeType":"YulExpressionStatement","src":"2156:16:30"},{"nodeType":"YulAssignment","src":"2181:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2192:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2197:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2188:3:30"},"nodeType":"YulFunctionCall","src":"2188:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2181:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2130:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2138:3:30","type":""}],"src":"2091:114:30"},{"body":{"nodeType":"YulBlock","src":"4321:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4338:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4343:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:30"},"nodeType":"YulFunctionCall","src":"4331:31:30"},"nodeType":"YulExpressionStatement","src":"4331:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4382:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4378:3:30"},"nodeType":"YulFunctionCall","src":"4378:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4392:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4371:6:30"},"nodeType":"YulFunctionCall","src":"4371:40:30"},"nodeType":"YulExpressionStatement","src":"4371:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4431:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4436:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4427:3:30"},"nodeType":"YulFunctionCall","src":"4427:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4441:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4420:6:30"},"nodeType":"YulFunctionCall","src":"4420:38:30"},"nodeType":"YulExpressionStatement","src":"4420:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4478:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4483:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4474:3:30"},"nodeType":"YulFunctionCall","src":"4474:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4488:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4467:6:30"},"nodeType":"YulFunctionCall","src":"4467:43:30"},"nodeType":"YulExpressionStatement","src":"4467:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4530:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4535:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4526:3:30"},"nodeType":"YulFunctionCall","src":"4526:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4540:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4519:6:30"},"nodeType":"YulFunctionCall","src":"4519:41:30"},"nodeType":"YulExpressionStatement","src":"4519:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4580:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4585:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4576:3:30"},"nodeType":"YulFunctionCall","src":"4576:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4590:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:30"},"nodeType":"YulFunctionCall","src":"4569:39:30"},"nodeType":"YulExpressionStatement","src":"4569:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4628:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4633:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4624:3:30"},"nodeType":"YulFunctionCall","src":"4624:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4638:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4617:6:30"},"nodeType":"YulFunctionCall","src":"4617:41:30"},"nodeType":"YulExpressionStatement","src":"4617:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4683:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:30"},"nodeType":"YulFunctionCall","src":"4674:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4689:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:30"},"nodeType":"YulFunctionCall","src":"4667:43:30"},"nodeType":"YulExpressionStatement","src":"4667:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4730:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4735:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:30"},"nodeType":"YulFunctionCall","src":"4726:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4741:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4719:6:30"},"nodeType":"YulFunctionCall","src":"4719:41:30"},"nodeType":"YulExpressionStatement","src":"4719:41:30"},{"nodeType":"YulAssignment","src":"4769:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5110:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5115:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:30"},"nodeType":"YulFunctionCall","src":"5106:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"5076:29:30"},"nodeType":"YulFunctionCall","src":"5076:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"5046:29:30"},"nodeType":"YulFunctionCall","src":"5046:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"5016:29:30"},"nodeType":"YulFunctionCall","src":"5016:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4986:29:30"},"nodeType":"YulFunctionCall","src":"4986:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4956:29:30"},"nodeType":"YulFunctionCall","src":"4956:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4926:29:30"},"nodeType":"YulFunctionCall","src":"4926:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4896:29:30"},"nodeType":"YulFunctionCall","src":"4896:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4866:29:30"},"nodeType":"YulFunctionCall","src":"4866:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4836:29:30"},"nodeType":"YulFunctionCall","src":"4836:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4806:29:30"},"nodeType":"YulFunctionCall","src":"4806:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4776:29:30"},"nodeType":"YulFunctionCall","src":"4776:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4769:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4313:3:30","type":""}],"src":"2210:2926:30"},{"body":{"nodeType":"YulBlock","src":"5838:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5855:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5860:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5848:6:30"},"nodeType":"YulFunctionCall","src":"5848:28:30"},"nodeType":"YulExpressionStatement","src":"5848:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5896:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5901:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:30"},"nodeType":"YulFunctionCall","src":"5892:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5906:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:30"},"nodeType":"YulFunctionCall","src":"5885:36:30"},"nodeType":"YulExpressionStatement","src":"5885:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5941:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5946:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5937:3:30"},"nodeType":"YulFunctionCall","src":"5937:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5951:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5930:6:30"},"nodeType":"YulFunctionCall","src":"5930:39:30"},"nodeType":"YulExpressionStatement","src":"5930:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5989:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5994:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:30"},"nodeType":"YulFunctionCall","src":"5985:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5999:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5978:6:30"},"nodeType":"YulFunctionCall","src":"5978:40:30"},"nodeType":"YulExpressionStatement","src":"5978:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6038:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6043:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6034:3:30"},"nodeType":"YulFunctionCall","src":"6034:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6048:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6027:6:30"},"nodeType":"YulFunctionCall","src":"6027:49:30"},"nodeType":"YulExpressionStatement","src":"6027:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6096:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6101:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6092:3:30"},"nodeType":"YulFunctionCall","src":"6092:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"6106:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6085:6:30"},"nodeType":"YulFunctionCall","src":"6085:25:30"},"nodeType":"YulExpressionStatement","src":"6085:25:30"},{"nodeType":"YulAssignment","src":"6119:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6130:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"6135:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6126:3:30"},"nodeType":"YulFunctionCall","src":"6126:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6119:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5830:3:30","type":""}],"src":"5141:1003:30"},{"body":{"nodeType":"YulBlock","src":"6362:276:30","statements":[{"nodeType":"YulAssignment","src":"6372:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6384:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6380:3:30"},"nodeType":"YulFunctionCall","src":"6380:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6372:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6415:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6426:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:30"},"nodeType":"YulFunctionCall","src":"6408:25:30"},"nodeType":"YulExpressionStatement","src":"6408:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6453:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6464:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6449:3:30"},"nodeType":"YulFunctionCall","src":"6449:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6469:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6442:6:30"},"nodeType":"YulFunctionCall","src":"6442:34:30"},"nodeType":"YulExpressionStatement","src":"6442:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6496:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6507:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6492:3:30"},"nodeType":"YulFunctionCall","src":"6492:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6512:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6485:6:30"},"nodeType":"YulFunctionCall","src":"6485:34:30"},"nodeType":"YulExpressionStatement","src":"6485:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6539:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6550:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6535:3:30"},"nodeType":"YulFunctionCall","src":"6535:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6555:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:30"},"nodeType":"YulFunctionCall","src":"6528:34:30"},"nodeType":"YulExpressionStatement","src":"6528:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6582:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6593:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:30"},"nodeType":"YulFunctionCall","src":"6578:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6603:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6624:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6615:3:30"},"nodeType":"YulFunctionCall","src":"6615:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6628:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:30"},"nodeType":"YulFunctionCall","src":"6611:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6599:3:30"},"nodeType":"YulFunctionCall","src":"6599:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6571:6:30"},"nodeType":"YulFunctionCall","src":"6571:61:30"},"nodeType":"YulExpressionStatement","src":"6571:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6310:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6318:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6326:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6334:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6342:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6353:4:30","type":""}],"src":"6149:489:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101a060405234801561001157600080fd5b506040516105f23803806105f283398101604081905261003091610494565b80828080808061003e610124565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010091906104c7565b5061016052505060016000555050506001600160a01b031661018052506104eb9050565b600080808061015360408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b394506000916103ad91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b80516001600160a01b038116811461048f57600080fd5b919050565b600080604083850312156104a757600080fd5b6104b083610478565b91506104be60208401610478565b90509250929050565b600080604083850312156104da57600080fd5b505080516020909101519092909150565b60805160a05160c05160e051610100516101205161014051610160516101805160b2610540600039600060310152600050506000505060005050600050506000505060005050600050506000505060b26000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea2646970667358221220626833a783da07078edf844b310e31b652b0be836fe71866e90045127803eea664736f6c634300080e0033","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 PUSH3 0x6833A7 DUP4 0xDA SMOD SMOD DUP15 0xDF DUP5 0x4B BALANCE 0xE BALANCE 0xB6 MSTORE 0xB0 0xBE DUP4 PUSH16 0xE71866E90045127803EEA664736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ","sourceMap":"297:12178:21:-:0;;;407:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;502:11;476:17;;;;;786:19:12;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6408:25:30;;;;6449:18;;;6442:34;;;;-1:-1:-1;6492:18:30;;6485:34;;;;6535:18;;;6528:34;1371:4:12;6578:19:30;;;6571:61;1203:187:12;;;;;;;;;;6380:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;;2345:1:13;658:16:22;:31;-1:-1:-1;;;;;;;;417:20:23;;;-1:-1:-1;297:12178:21;;-1:-1:-1;297:12178:21;1527:1491:12;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:12;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4331:31:30;;-1:-1:-1;;;4387:2:30;4378:12;;4371:40;-1:-1:-1;;;4436:2:30;4427:12;;4420:38;4488:21;4483:2;4474:12;;4467:43;-1:-1:-1;;;4535:2:30;4526:12;;4519:41;-1:-1:-1;;;4585:2:30;4576:12;;4569:39;-1:-1:-1;;;4633:2:30;4624:12;;4617:41;-1:-1:-1;;;4683:3:30;4674:13;;4667:43;-1:-1:-1;;;4735:3:30;4726:13;;4719:41;-1:-1:-1;;;5115:3:30;5106:13;;809:32;-1:-1:-1;;;857:12:30;;;945:31;-1:-1:-1;;;992:12:30;;;1080:30;-1:-1:-1;;;1126:12:30;;;1214:29;-1:-1:-1;;;1259:12:30;;;1347:31;-1:-1:-1;;;1394:12:30;;;1482:27;1625:22;1525:12;;;1613:35;-1:-1:-1;;;1664:12:30;;;1752:28;1896:21;1796:12;;;1884:34;-1:-1:-1;;;1934:12:30;;;2022:30;-1:-1:-1;;;2068:12:30;;;2156:16;2188:11;;;2210:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5848:28:30;-1:-1:-1;;;5892:12:30;;;5885:36;-1:-1:-1;;;5937:12:30;;;5930:39;-1:-1:-1;;;5985:12:30;;;5978:40;6048:27;6034:12;;;6027:49;-1:-1:-1;;;6092:12:30;;;6085:25;1909:724:12;-1:-1:-1;6126:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:177:30:-;93:13;;-1:-1:-1;;;;;135:31:30;;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:30;;729:2;714:18;;;708:25;673:16;;708:25;;-1:-1:-1;494:245:30:o;6149:489::-;297:12178:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@shadowToken_4061":{"entryPoint":null,"id":4061,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:125:30","statements":[{"nodeType":"YulAssignment","src":"125:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:30"},"nodeType":"YulFunctionCall","src":"133:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"190:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:30"},"nodeType":"YulFunctionCall","src":"178:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:30"},"nodeType":"YulFunctionCall","src":"160:74:30"},"nodeType":"YulExpressionStatement","src":"160:74:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:30","type":""}],"src":"14:226:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4061":[{"length":32,"start":49}]},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c8063ffc5d97a14602d575b600080fd5b60537f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea2646970667358221220626833a783da07078edf844b310e31b652b0be836fe71866e90045127803eea664736f6c634300080e0033","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 PUSH3 0x6833A7 DUP4 0xDA SMOD SMOD DUP15 0xDF DUP5 0x4B BALANCE 0xE BALANCE 0xB6 MSTORE 0xB0 0xBE DUP4 PUSH16 0xE71866E90045127803EEA664736F6C63 NUMBER STOP ADDMOD 0xE STOP CALLER ","sourceMap":"297:12178:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:36:23;;;;;;;;190:42:30;178:55;;;160:74;;148:2;133:18;336:36:23;;;;;;"},"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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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":3994,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":1672,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"_counters","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":3178,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"_orderStatus","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(OrderStatus)1658_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)1658_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OrderStatus)","numberOfBytes":"32","value":"t_struct(OrderStatus)1658_storage"},"t_struct(OrderStatus)1658_storage":{"encoding":"inplace","label":"struct OrderStatus","members":[{"astId":1643,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"isValidated","offset":0,"slot":"0","type":"t_bool"},{"astId":1645,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"isCancelled","offset":1,"slot":"0","type":"t_bool"},{"astId":1647,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"isFinalized","offset":2,"slot":"0","type":"t_bool"},{"astId":1649,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"isBroken","offset":3,"slot":"0","type":"t_bool"},{"astId":1651,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"fulfiller","offset":4,"slot":"0","type":"t_address"},{"astId":1653,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"startedAt","offset":0,"slot":"1","type":"t_uint256"},{"astId":1655,"contract":"contracts/lib/OrderValidator.sol:OrderValidator","label":"shadowId","offset":0,"slot":"2","type":"t_uint256"},{"astId":1657,"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":{"@_4003":{"entryPoint":null,"id":4003,"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:22:-:0;;;571:125;;;;;;;;;-1:-1:-1;2345:1:13;658:16:22;: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:22:-: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":3994,"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":{"@_4071":{"entryPoint":null,"id":4071,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:30","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:30"},"nodeType":"YulFunctionCall","src":"143:12:30"},"nodeType":"YulExpressionStatement","src":"143:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:30"},"nodeType":"YulFunctionCall","src":"112:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:30"},"nodeType":"YulFunctionCall","src":"108:32:30"},"nodeType":"YulIf","src":"105:52:30"},{"nodeType":"YulVariableDeclaration","src":"166:29:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:30"},"nodeType":"YulFunctionCall","src":"179:16:30"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:30"},"nodeType":"YulFunctionCall","src":"260:12:30"},"nodeType":"YulExpressionStatement","src":"260:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:30"},"nodeType":"YulFunctionCall","src":"239:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:30"},"nodeType":"YulFunctionCall","src":"235:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:30"},"nodeType":"YulFunctionCall","src":"224:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:30"},"nodeType":"YulFunctionCall","src":"214:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:30"},"nodeType":"YulFunctionCall","src":"207:50:30"},"nodeType":"YulIf","src":"204:70:30"},{"nodeType":"YulAssignment","src":"283:15:30","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:30"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:30","type":""}],"src":"14:290:30"}]},"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":30,"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:23:-:0;;;379:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;417:20:23;;;309:777;;14:290:30;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:30;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:30:o;:::-;309:777:23;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@shadowToken_4061":{"entryPoint":null,"id":4061,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:125:30","statements":[{"nodeType":"YulAssignment","src":"125:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:30"},"nodeType":"YulFunctionCall","src":"133:18:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:30"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:30"},{"kind":"number","nodeType":"YulLiteral","src":"190:42:30","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:30"},"nodeType":"YulFunctionCall","src":"178:55:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:30"},"nodeType":"YulFunctionCall","src":"160:74:30"},"nodeType":"YulExpressionStatement","src":"160:74:30"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:30","type":""}],"src":"14:226:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4061":[{"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:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:36;;;;;;;;190:42:30;178:55;;;160:74;;148:2;133:18;336:36:23;;;;;;"},"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:24:-: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:24:-: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:25:-: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:25:-: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":"address","name":"fulfiller","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":{"@_2204":{"entryPoint":null,"id":2204,"parameterSlots":1,"returnSlots":0},"@_4003":{"entryPoint":null,"id":4003,"parameterSlots":0,"returnSlots":0},"@_4561":{"entryPoint":null,"id":4561,"parameterSlots":1,"returnSlots":0},"@_617":{"entryPoint":null,"id":617,"parameterSlots":1,"returnSlots":0},"@_923":{"entryPoint":null,"id":923,"parameterSlots":1,"returnSlots":0},"@_deriveDomainSeparator_944":{"entryPoint":null,"id":944,"parameterSlots":0,"returnSlots":1},"@_deriveTypehashes_1029":{"entryPoint":273,"id":1029,"parameterSlots":0,"returnSlots":4},"@_nameString_952":{"entryPoint":null,"id":952,"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:30","statements":[{"nodeType":"YulBlock","src":"6:3:30","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:30","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:30"},"nodeType":"YulFunctionCall","src":"143:12:30"},"nodeType":"YulExpressionStatement","src":"143:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:30"},"nodeType":"YulFunctionCall","src":"112:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:30","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:30"},"nodeType":"YulFunctionCall","src":"108:32:30"},"nodeType":"YulIf","src":"105:52:30"},{"nodeType":"YulVariableDeclaration","src":"166:29:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:30"},"nodeType":"YulFunctionCall","src":"179:16:30"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:30","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:30"},"nodeType":"YulFunctionCall","src":"260:12:30"},"nodeType":"YulExpressionStatement","src":"260:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:30"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:30"},"nodeType":"YulFunctionCall","src":"239:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:30"},"nodeType":"YulFunctionCall","src":"235:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:30"},"nodeType":"YulFunctionCall","src":"224:31:30"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:30"},"nodeType":"YulFunctionCall","src":"214:42:30"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:30"},"nodeType":"YulFunctionCall","src":"207:50:30"},"nodeType":"YulIf","src":"204:70:30"},{"nodeType":"YulAssignment","src":"283:15:30","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:30"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:30","type":""}],"src":"14:290:30"},{"body":{"nodeType":"YulBlock","src":"407:147:30","statements":[{"body":{"nodeType":"YulBlock","src":"453:16:30","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"462:1:30","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"465:1:30","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"455:6:30"},"nodeType":"YulFunctionCall","src":"455:12:30"},"nodeType":"YulExpressionStatement","src":"455:12:30"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"428:7:30"},{"name":"headStart","nodeType":"YulIdentifier","src":"437:9:30"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"424:3:30"},"nodeType":"YulFunctionCall","src":"424:23:30"},{"kind":"number","nodeType":"YulLiteral","src":"449:2:30","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:30"},"nodeType":"YulFunctionCall","src":"420:32:30"},"nodeType":"YulIf","src":"417:52:30"},{"nodeType":"YulAssignment","src":"478:26:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"494:9:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"488:5:30"},"nodeType":"YulFunctionCall","src":"488:16:30"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"478:6:30"}]},{"nodeType":"YulAssignment","src":"513:35:30","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"533:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"544:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"529:3:30"},"nodeType":"YulFunctionCall","src":"529:18:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"523:5:30"},"nodeType":"YulFunctionCall","src":"523:25:30"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"513:6:30"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"365:9:30","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"376:7:30","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"388:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"396:6:30","type":""}],"src":"309:245:30"},{"body":{"nodeType":"YulBlock","src":"614:76:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"631:3:30"},{"hexValue":"75696e74323536206475726174696f6e2c","kind":"string","nodeType":"YulLiteral","src":"636:19:30","type":"","value":"uint256 duration,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"624:6:30"},"nodeType":"YulFunctionCall","src":"624:32:30"},"nodeType":"YulExpressionStatement","src":"624:32:30"},{"nodeType":"YulAssignment","src":"665:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"676:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"681:2:30","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"672:3:30"},"nodeType":"YulFunctionCall","src":"672:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"665:3:30"}]}]},"name":"abi_encode_stringliteral_9c70","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"598:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"606:3:30","type":""}],"src":"559:131:30"},{"body":{"nodeType":"YulBlock","src":"750:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"767:3:30"},{"hexValue":"75696e7432353620706572696f64732c","kind":"string","nodeType":"YulLiteral","src":"772:18:30","type":"","value":"uint256 periods,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"760:6:30"},"nodeType":"YulFunctionCall","src":"760:31:30"},"nodeType":"YulExpressionStatement","src":"760:31:30"},{"nodeType":"YulAssignment","src":"800:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"816:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"807:3:30"},"nodeType":"YulFunctionCall","src":"807:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"800:3:30"}]}]},"name":"abi_encode_stringliteral_bab2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"734:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"742:3:30","type":""}],"src":"695:130:30"},{"body":{"nodeType":"YulBlock","src":"885:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"902:3:30"},{"hexValue":"75696e7432353620616d6f756e742c","kind":"string","nodeType":"YulLiteral","src":"907:17:30","type":"","value":"uint256 amount,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:30"},"nodeType":"YulFunctionCall","src":"895:30:30"},"nodeType":"YulExpressionStatement","src":"895:30:30"},{"nodeType":"YulAssignment","src":"934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:30"},"nodeType":"YulFunctionCall","src":"941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"934:3:30"}]}]},"name":"abi_encode_stringliteral_1e4b","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"869:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"877:3:30","type":""}],"src":"830:129:30"},{"body":{"nodeType":"YulBlock","src":"1019:73:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1036:3:30"},{"hexValue":"75696e7432353620726174696f2c","kind":"string","nodeType":"YulLiteral","src":"1041:16:30","type":"","value":"uint256 ratio,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1029:6:30"},"nodeType":"YulFunctionCall","src":"1029:29:30"},"nodeType":"YulExpressionStatement","src":"1029:29:30"},{"nodeType":"YulAssignment","src":"1067:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1078:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1083:2:30","type":"","value":"14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1074:3:30"},"nodeType":"YulFunctionCall","src":"1074:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1067:3:30"}]}]},"name":"abi_encode_stringliteral_89a9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1003:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1011:3:30","type":""}],"src":"964:128:30"},{"body":{"nodeType":"YulBlock","src":"1152:75:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1169:3:30"},{"hexValue":"75696e7432353620726f79616c74792c","kind":"string","nodeType":"YulLiteral","src":"1174:18:30","type":"","value":"uint256 royalty,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:30"},"nodeType":"YulFunctionCall","src":"1162:31:30"},"nodeType":"YulExpressionStatement","src":"1162:31:30"},{"nodeType":"YulAssignment","src":"1202:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1218:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:30"},"nodeType":"YulFunctionCall","src":"1209:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1202:3:30"}]}]},"name":"abi_encode_stringliteral_5c66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1136:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1144:3:30","type":""}],"src":"1097:130:30"},{"body":{"nodeType":"YulBlock","src":"1287:71:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1304:3:30"},{"hexValue":"75696e74323536206665652c","kind":"string","nodeType":"YulLiteral","src":"1309:14:30","type":"","value":"uint256 fee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1297:6:30"},"nodeType":"YulFunctionCall","src":"1297:27:30"},"nodeType":"YulExpressionStatement","src":"1297:27:30"},{"nodeType":"YulAssignment","src":"1333:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1344:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1349:2:30","type":"","value":"12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:30"},"nodeType":"YulFunctionCall","src":"1340:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1333:3:30"}]}]},"name":"abi_encode_stringliteral_b48f","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1271:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1279:3:30","type":""}],"src":"1232:126:30"},{"body":{"nodeType":"YulBlock","src":"1418:79:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1435:3:30"},{"hexValue":"75696e743235362077697468647261774665652c","kind":"string","nodeType":"YulLiteral","src":"1440:22:30","type":"","value":"uint256 withdrawFee,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1428:6:30"},"nodeType":"YulFunctionCall","src":"1428:35:30"},"nodeType":"YulExpressionStatement","src":"1428:35:30"},{"nodeType":"YulAssignment","src":"1472:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1483:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:30","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:30"},"nodeType":"YulFunctionCall","src":"1479:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1472:3:30"}]}]},"name":"abi_encode_stringliteral_0c2a","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1402:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1410:3:30","type":""}],"src":"1363:134:30"},{"body":{"nodeType":"YulBlock","src":"1557:72:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1574:3:30"},{"hexValue":"75696e743235362073616c742c","kind":"string","nodeType":"YulLiteral","src":"1579:15:30","type":"","value":"uint256 salt,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:30"},"nodeType":"YulFunctionCall","src":"1567:28:30"},"nodeType":"YulExpressionStatement","src":"1567:28:30"},{"nodeType":"YulAssignment","src":"1604:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1615:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1620:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1611:3:30"},"nodeType":"YulFunctionCall","src":"1611:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1604:3:30"}]}]},"name":"abi_encode_stringliteral_7afc","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1541:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1549:3:30","type":""}],"src":"1502:127:30"},{"body":{"nodeType":"YulBlock","src":"1689:78:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1706:3:30"},{"hexValue":"6279746573333220636f6e647569744b65792c","kind":"string","nodeType":"YulLiteral","src":"1711:21:30","type":"","value":"bytes32 conduitKey,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1699:6:30"},"nodeType":"YulFunctionCall","src":"1699:34:30"},"nodeType":"YulExpressionStatement","src":"1699:34:30"},{"nodeType":"YulAssignment","src":"1742:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1753:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1758:2:30","type":"","value":"19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1749:3:30"},"nodeType":"YulFunctionCall","src":"1749:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1742:3:30"}]}]},"name":"abi_encode_stringliteral_cfcd","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1673:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1681:3:30","type":""}],"src":"1634:133:30"},{"body":{"nodeType":"YulBlock","src":"1827:74:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1844:3:30"},{"hexValue":"75696e7432353620636f756e746572","kind":"string","nodeType":"YulLiteral","src":"1849:17:30","type":"","value":"uint256 counter"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1837:6:30"},"nodeType":"YulFunctionCall","src":"1837:30:30"},"nodeType":"YulExpressionStatement","src":"1837:30:30"},{"nodeType":"YulAssignment","src":"1876:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1887:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"1892:2:30","type":"","value":"15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1883:3:30"},"nodeType":"YulFunctionCall","src":"1883:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1876:3:30"}]}]},"name":"abi_encode_stringliteral_41ba","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1811:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1819:3:30","type":""}],"src":"1772:129:30"},{"body":{"nodeType":"YulBlock","src":"1961:59:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1978:3:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"1983:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1971:6:30"},"nodeType":"YulFunctionCall","src":"1971:16:30"},"nodeType":"YulExpressionStatement","src":"1971:16:30"},{"nodeType":"YulAssignment","src":"1996:18:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2007:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"2012:1:30","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:30"},"nodeType":"YulFunctionCall","src":"2003:11:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1996:3:30"}]}]},"name":"abi_encode_stringliteral_59d7","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1945:3:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1953:3:30","type":""}],"src":"1906:114:30"},{"body":{"nodeType":"YulBlock","src":"4136:815:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4153:3:30"},{"hexValue":"4f72646572436f6d706f6e656e747328","kind":"string","nodeType":"YulLiteral","src":"4158:18:30","type":"","value":"OrderComponents("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4146:6:30"},"nodeType":"YulFunctionCall","src":"4146:31:30"},"nodeType":"YulExpressionStatement","src":"4146:31:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4197:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4202:2:30","type":"","value":"16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4193:3:30"},"nodeType":"YulFunctionCall","src":"4193:12:30"},{"hexValue":"61646472657373206f6666657265722c","kind":"string","nodeType":"YulLiteral","src":"4207:18:30","type":"","value":"address offerer,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4186:6:30"},"nodeType":"YulFunctionCall","src":"4186:40:30"},"nodeType":"YulExpressionStatement","src":"4186:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4246:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4251:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4242:3:30"},"nodeType":"YulFunctionCall","src":"4242:12:30"},{"hexValue":"6164647265737320746f6b656e2c","kind":"string","nodeType":"YulLiteral","src":"4256:16:30","type":"","value":"address token,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4235:6:30"},"nodeType":"YulFunctionCall","src":"4235:38:30"},"nodeType":"YulExpressionStatement","src":"4235:38:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4293:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:30","type":"","value":"46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:30"},"nodeType":"YulFunctionCall","src":"4289:12:30"},{"hexValue":"75696e74323536206964656e7469666965722c","kind":"string","nodeType":"YulLiteral","src":"4303:21:30","type":"","value":"uint256 identifier,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4282:6:30"},"nodeType":"YulFunctionCall","src":"4282:43:30"},"nodeType":"YulExpressionStatement","src":"4282:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4345:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4350:2:30","type":"","value":"65"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4341:3:30"},"nodeType":"YulFunctionCall","src":"4341:12:30"},{"hexValue":"616464726573732063757272656e63792c","kind":"string","nodeType":"YulLiteral","src":"4355:19:30","type":"","value":"address currency,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4334:6:30"},"nodeType":"YulFunctionCall","src":"4334:41:30"},"nodeType":"YulExpressionStatement","src":"4334:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4395:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4400:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4391:3:30"},"nodeType":"YulFunctionCall","src":"4391:12:30"},{"hexValue":"61646472657373206172746973742c","kind":"string","nodeType":"YulLiteral","src":"4405:17:30","type":"","value":"address artist,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4384:6:30"},"nodeType":"YulFunctionCall","src":"4384:39:30"},"nodeType":"YulExpressionStatement","src":"4384:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4443:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4448:2:30","type":"","value":"97"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4439:3:30"},"nodeType":"YulFunctionCall","src":"4439:12:30"},{"hexValue":"6164647265737320706c6174666f726d2c","kind":"string","nodeType":"YulLiteral","src":"4453:19:30","type":"","value":"address platform,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4432:6:30"},"nodeType":"YulFunctionCall","src":"4432:41:30"},"nodeType":"YulExpressionStatement","src":"4432:41:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4493:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4498:3:30","type":"","value":"114"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:30"},"nodeType":"YulFunctionCall","src":"4489:13:30"},{"hexValue":"75696e7432353620737461727454696d652c","kind":"string","nodeType":"YulLiteral","src":"4504:20:30","type":"","value":"uint256 startTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4482:6:30"},"nodeType":"YulFunctionCall","src":"4482:43:30"},"nodeType":"YulExpressionStatement","src":"4482:43:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4545:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4550:3:30","type":"","value":"132"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4541:3:30"},"nodeType":"YulFunctionCall","src":"4541:13:30"},{"hexValue":"75696e7432353620656e6454696d652c","kind":"string","nodeType":"YulLiteral","src":"4556:18:30","type":"","value":"uint256 endTime,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4534:6:30"},"nodeType":"YulFunctionCall","src":"4534:41:30"},"nodeType":"YulExpressionStatement","src":"4534:41:30"},{"nodeType":"YulAssignment","src":"4584:361:30","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4925:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"4930:3:30","type":"","value":"148"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4921:3:30"},"nodeType":"YulFunctionCall","src":"4921:13:30"}],"functionName":{"name":"abi_encode_stringliteral_9c70","nodeType":"YulIdentifier","src":"4891:29:30"},"nodeType":"YulFunctionCall","src":"4891:44:30"}],"functionName":{"name":"abi_encode_stringliteral_bab2","nodeType":"YulIdentifier","src":"4861:29:30"},"nodeType":"YulFunctionCall","src":"4861:75:30"}],"functionName":{"name":"abi_encode_stringliteral_1e4b","nodeType":"YulIdentifier","src":"4831:29:30"},"nodeType":"YulFunctionCall","src":"4831:106:30"}],"functionName":{"name":"abi_encode_stringliteral_89a9","nodeType":"YulIdentifier","src":"4801:29:30"},"nodeType":"YulFunctionCall","src":"4801:137:30"}],"functionName":{"name":"abi_encode_stringliteral_5c66","nodeType":"YulIdentifier","src":"4771:29:30"},"nodeType":"YulFunctionCall","src":"4771:168:30"}],"functionName":{"name":"abi_encode_stringliteral_b48f","nodeType":"YulIdentifier","src":"4741:29:30"},"nodeType":"YulFunctionCall","src":"4741:199:30"}],"functionName":{"name":"abi_encode_stringliteral_0c2a","nodeType":"YulIdentifier","src":"4711:29:30"},"nodeType":"YulFunctionCall","src":"4711:230:30"}],"functionName":{"name":"abi_encode_stringliteral_7afc","nodeType":"YulIdentifier","src":"4681:29:30"},"nodeType":"YulFunctionCall","src":"4681:261:30"}],"functionName":{"name":"abi_encode_stringliteral_cfcd","nodeType":"YulIdentifier","src":"4651:29:30"},"nodeType":"YulFunctionCall","src":"4651:292:30"}],"functionName":{"name":"abi_encode_stringliteral_41ba","nodeType":"YulIdentifier","src":"4621:29:30"},"nodeType":"YulFunctionCall","src":"4621:323:30"}],"functionName":{"name":"abi_encode_stringliteral_59d7","nodeType":"YulIdentifier","src":"4591:29:30"},"nodeType":"YulFunctionCall","src":"4591:354:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4584:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4128:3:30","type":""}],"src":"2025:2926:30"},{"body":{"nodeType":"YulBlock","src":"5653:306:30","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5670:3:30"},{"hexValue":"454950373132446f6d61696e28","kind":"string","nodeType":"YulLiteral","src":"5675:15:30","type":"","value":"EIP712Domain("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5663:6:30"},"nodeType":"YulFunctionCall","src":"5663:28:30"},"nodeType":"YulExpressionStatement","src":"5663:28:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5711:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5716:2:30","type":"","value":"13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:30"},"nodeType":"YulFunctionCall","src":"5707:12:30"},{"hexValue":"737472696e67206e616d652c","kind":"string","nodeType":"YulLiteral","src":"5721:14:30","type":"","value":"string name,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5700:6:30"},"nodeType":"YulFunctionCall","src":"5700:36:30"},"nodeType":"YulExpressionStatement","src":"5700:36:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5756:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5761:2:30","type":"","value":"25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5752:3:30"},"nodeType":"YulFunctionCall","src":"5752:12:30"},{"hexValue":"737472696e672076657273696f6e2c","kind":"string","nodeType":"YulLiteral","src":"5766:17:30","type":"","value":"string version,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:30"},"nodeType":"YulFunctionCall","src":"5745:39:30"},"nodeType":"YulExpressionStatement","src":"5745:39:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5804:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5809:2:30","type":"","value":"40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5800:3:30"},"nodeType":"YulFunctionCall","src":"5800:12:30"},{"hexValue":"75696e7432353620636861696e49642c","kind":"string","nodeType":"YulLiteral","src":"5814:18:30","type":"","value":"uint256 chainId,"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:30"},"nodeType":"YulFunctionCall","src":"5793:40:30"},"nodeType":"YulExpressionStatement","src":"5793:40:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5858:2:30","type":"","value":"56"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:30"},"nodeType":"YulFunctionCall","src":"5849:12:30"},{"hexValue":"6164647265737320766572696679696e67436f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5863:27:30","type":"","value":"address verifyingContract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5842:6:30"},"nodeType":"YulFunctionCall","src":"5842:49:30"},"nodeType":"YulExpressionStatement","src":"5842:49:30"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5911:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5916:2:30","type":"","value":"81"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5907:3:30"},"nodeType":"YulFunctionCall","src":"5907:12:30"},{"hexValue":"29","kind":"string","nodeType":"YulLiteral","src":"5921:3:30","type":"","value":")"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5900:6:30"},"nodeType":"YulFunctionCall","src":"5900:25:30"},"nodeType":"YulExpressionStatement","src":"5900:25:30"},{"nodeType":"YulAssignment","src":"5934:19:30","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5945:3:30"},{"kind":"number","nodeType":"YulLiteral","src":"5950:2:30","type":"","value":"82"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:30"},"nodeType":"YulFunctionCall","src":"5941:12:30"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5934:3:30"}]}]},"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:30","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5645:3:30","type":""}],"src":"4956:1003:30"},{"body":{"nodeType":"YulBlock","src":"6177:276:30","statements":[{"nodeType":"YulAssignment","src":"6187:27:30","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6210:3:30","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:30"},"nodeType":"YulFunctionCall","src":"6195:19:30"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6187:4:30"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:30"},{"name":"value0","nodeType":"YulIdentifier","src":"6241:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:30"},"nodeType":"YulFunctionCall","src":"6223:25:30"},"nodeType":"YulExpressionStatement","src":"6223:25:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6268:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6279:2:30","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:30"},"nodeType":"YulFunctionCall","src":"6264:18:30"},{"name":"value1","nodeType":"YulIdentifier","src":"6284:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6257:6:30"},"nodeType":"YulFunctionCall","src":"6257:34:30"},"nodeType":"YulExpressionStatement","src":"6257:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6311:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6322:2:30","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6307:3:30"},"nodeType":"YulFunctionCall","src":"6307:18:30"},{"name":"value2","nodeType":"YulIdentifier","src":"6327:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:30"},"nodeType":"YulFunctionCall","src":"6300:34:30"},"nodeType":"YulExpressionStatement","src":"6300:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:30","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:30"},"nodeType":"YulFunctionCall","src":"6350:18:30"},{"name":"value3","nodeType":"YulIdentifier","src":"6370:6:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6343:6:30"},"nodeType":"YulFunctionCall","src":"6343:34:30"},"nodeType":"YulExpressionStatement","src":"6343:34:30"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6397:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"6408:3:30","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6393:3:30"},"nodeType":"YulFunctionCall","src":"6393:19:30"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6418:6:30"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6434:3:30","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:30","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6430:3:30"},"nodeType":"YulFunctionCall","src":"6430:11:30"},{"kind":"number","nodeType":"YulLiteral","src":"6443:1:30","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6426:3:30"},"nodeType":"YulFunctionCall","src":"6426:19:30"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6414:3:30"},"nodeType":"YulFunctionCall","src":"6414:32:30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6386:6:30"},"nodeType":"YulFunctionCall","src":"6386:61:30"},"nodeType":"YulExpressionStatement","src":"6386:61:30"}]},"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:30","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6125:6:30","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6133:6:30","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6141:6:30","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6149:6:30","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:30","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:30","type":""}],"src":"5964:489:30"}]},"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":30,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"61018060405234801561001157600080fd5b5060405161054338038061054383398101604081905261003091610465565b80808061003b610111565b60e05260c081815260a0838152608085815246610100819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610120526001600160a01b03811661014081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fd9190610495565b506101605250506001600055506104b99050565b600080808061014060408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260038152620312e360ec1b90840152519095507fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3945060009161039a91016f09ee4c8cae486dedae0dedccadce8e6560831b81526f1859191c995cdcc81bd999995c995c8b60821b60108201526d1859191c995cdcc81d1bdad95b8b60921b60208201527f75696e74323536206964656e7469666965722c00000000000000000000000000602e820152701859191c995cdcc818dd5c9c995b98de4b607a1b60418201526e1859191c995cdcc8185c9d1a5cdd0b608a1b6052820152701859191c995cdcc81c1b185d199bdc9b4b607a1b6061820152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b60728201526f1d5a5b9d0c8d4d88195b99151a5b594b60821b6084820152701d5a5b9d0c8d4d88191d5c985d1a5bdb8b607a1b60948201526f1d5a5b9d0c8d4d881c195c9a5bd91ccb60821b60a58201526e1d5a5b9d0c8d4d88185b5bdd5b9d0b608a1b60b58201526d1d5a5b9d0c8d4d881c985d1a5bcb60921b60c48201526f1d5a5b9d0c8d4d881c9bde585b1d1e4b60821b60d28201526b1d5a5b9d0c8d4d881999594b60a21b60e28201527f75696e743235362077697468647261774665652c00000000000000000000000060ee8201526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101028201527f6279746573333220636f6e647569744b65792c0000000000000000000000000061010f8201526e3ab4b73a191a9b1031b7bab73a32b960891b610122820152602960f81b6101318201526101320190565b60408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b60718301529150607201604051602081830303815290604052805190602001209250808051906020012091505090919293565b60006020828403121561047757600080fd5b81516001600160a01b038116811461048e57600080fd5b9392505050565b600080604083850312156104a857600080fd5b505080516020909101519092909150565b60805160a05160c05160e05161010051610120516101405161016051603f6105046000396000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220bb8262397b5d0ea03f5f30b03d740a7908518cb52c280a03ccc2476e43e4870b64736f6c634300080e0033","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 0xBB DUP3 PUSH3 0x397B5D 0xE LOG0 EXTCODEHASH 0x5F ADDRESS 0xB0 RETURNDATASIZE PUSH21 0xA7908518CB52C280A03CCC2476E43E4870B64736F PUSH13 0x634300080E0033000000000000 ","sourceMap":"349:3907:27:-:0;;;764:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;814:17;;;786:19:12;:17;:19::i;:::-;655:150;;;;;;;;;;;;;;828:13;816:25;;;;-1:-1:-1;1203:187:12;;-1:-1:-1;1203:187:12;;;6223:25:30;;;;6264:18;;;6257:34;;;;-1:-1:-1;6307:18:30;;6300:34;;;;6350:18;;;6343:34;1371:4:12;6393:19:30;;;6386:61;1203:187:12;;;;;;;;;;6195:19:30;;1203:187:12;;;1180:220;;;;;851:44;;-1:-1:-1;;;;;906:67:12;;;;;;1032:42;;;-1:-1:-1;;;1032:42:12;;;;:40;;:42;;;;;;;;;;;;;906:67;1032:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;984:100:12;;-1:-1:-1;;2345:1:13;658:16:22;:31;-1:-1:-1;349:3907:27;;-1:-1:-1;349:3907:27;1527:1491:12;1616:16;;;;1794:13;1492:22;;;;;;;;;;;;-1:-1:-1;;;1492:22:12;;;;;1413:108;1794:13;1778:31;;;;;;;1844:12;;;;;;;;;;;-1:-1:-1;;;1844:12:12;;;;1909:724;1778:31;;-1:-1:-1;1834:23:12;;-1:-1:-1;;;1909:724:12;;;-1:-1:-1;;;4146:31:30;;-1:-1:-1;;;4202:2:30;4193:12;;4186:40;-1:-1:-1;;;4251:2:30;4242:12;;4235:38;4303:21;4298:2;4289:12;;4282:43;-1:-1:-1;;;4350:2:30;4341:12;;4334:41;-1:-1:-1;;;4400:2:30;4391:12;;4384:39;-1:-1:-1;;;4448:2:30;4439:12;;4432:41;-1:-1:-1;;;4498:3:30;4489:13;;4482:43;-1:-1:-1;;;4550:3:30;4541:13;;4534:41;-1:-1:-1;;;4930:3:30;4921:13;;624:32;-1:-1:-1;;;672:12:30;;;760:31;-1:-1:-1;;;807:12:30;;;895:30;-1:-1:-1;;;941:12:30;;;1029:29;-1:-1:-1;;;1074:12:30;;;1162:31;-1:-1:-1;;;1209:12:30;;;1297:27;1440:22;1340:12;;;1428:35;-1:-1:-1;;;1479:12:30;;;1567:28;1711:21;1611:12;;;1699:34;-1:-1:-1;;;1749:12:30;;;1837:30;-1:-1:-1;;;1883:12:30;;;1971:16;2003:11;;;2025:2926;1909:724:12;;;;-1:-1:-1;;1909:724:12;;;;;;;;;;-1:-1:-1;;;1909:724:12;2690:248;;5663:28:30;-1:-1:-1;;;5707:12:30;;;5700:36;-1:-1:-1;;;5752:12:30;;;5745:39;-1:-1:-1;;;5800:12:30;;;5793:40;5863:27;5849:12;;;5842:49;-1:-1:-1;;;5907:12:30;;;5900:25;1909:724:12;-1:-1:-1;5941:12:30;;2690:248:12;;;;;;;;;;;;2667:281;;;;;;2644:304;;2985:25;2975:36;;;;;;2959:52;;1757:1261;1527:1491;;;;:::o;14:290:30:-;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:30;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:30: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:30;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:30:o;5964:489::-;349:3907:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220bb8262397b5d0ea03f5f30b03d740a7908518cb52c280a03ccc2476e43e4870b64736f6c634300080e0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB DUP3 PUSH3 0x397B5D 0xE LOG0 EXTCODEHASH 0x5F ADDRESS 0xB0 RETURNDATASIZE PUSH21 0xA7908518CB52C280A03CCC2476E43E4870B64736F PUSH13 0x634300080E0033000000000000 ","sourceMap":"349:3907:27:-: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\":\"address\",\"name\":\"fulfiller\",\"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        address fulfiller,\\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\":\"0x68acfe71116f34501781a1009e8bee2cd00261e32a4a939b9dd4cb8d6d508987\",\"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":3994,"contract":"contracts/lib/Verifiers.sol:Verifiers","label":"_reentrancyGuard","offset":0,"slot":"0","type":"t_uint256"},{"astId":1672,"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}}},"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/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}}}}}}