From 849272568f44561db816e9591692617341824c1f Mon Sep 17 00:00:00 2001 From: bbist Date: Mon, 7 Nov 2022 21:07:43 +0545 Subject: [PATCH 01/19] fix incorrect solmate git submodule version --- .gas-snapshot | 1760 ++++++++++++++++++++++++------------------------- Makefile | 3 +- 2 files changed, 882 insertions(+), 881 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index ea0202e..5ead95d 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,1098 +1,1098 @@ -ExponentialCurveTest:test_getBuyInfoExample() (gas: 9089) -ExponentialCurveTest:test_getBuyInfoWithoutFee(uint128,uint64,uint8) (runs: 256, μ: 960, ~: 523) -ExponentialCurveTest:test_getSellInfoExample() (gas: 9022) -ExponentialCurveTest:test_getSellInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 1856, ~: 604) -LinearCurveTest:test_getBuyInfoExample() (gas: 8628) -LinearCurveTest:test_getBuyInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 7267, ~: 8800) -LinearCurveTest:test_getSellInfoExample() (gas: 8477) -LinearCurveTest:test_getSellInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 7503, ~: 8909) -XykCurveTest:test_getBuyInfoCalculatesProtocolFee() (gas: 1816716) +ExponentialCurveTest:test_getBuyInfoExample() (gas: 9074) +ExponentialCurveTest:test_getBuyInfoWithoutFee(uint128,uint64,uint8) (runs: 256, μ: 957, ~: 523) +ExponentialCurveTest:test_getSellInfoExample() (gas: 9010) +ExponentialCurveTest:test_getSellInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 1854, ~: 604) +LinearCurveTest:test_getBuyInfoExample() (gas: 8642) +LinearCurveTest:test_getBuyInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 7276, ~: 8819) +LinearCurveTest:test_getSellInfoExample() (gas: 8503) +LinearCurveTest:test_getSellInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 7522, ~: 8927) +XykCurveTest:test_getBuyInfoCalculatesProtocolFee() (gas: 1790944) XykCurveTest:test_getBuyInfoCannotHave0NumItems() (gas: 6571) -XykCurveTest:test_getBuyInfoReturnsInputValue() (gas: 1792395) -XykCurveTest:test_getBuyInfoReturnsNewReserves() (gas: 1792436) -XykCurveTest:test_getSellInfoCalculatesProtocolFee() (gas: 1816573) +XykCurveTest:test_getBuyInfoReturnsInputValue() (gas: 1766600) +XykCurveTest:test_getBuyInfoReturnsNewReserves() (gas: 1766647) +XykCurveTest:test_getSellInfoCalculatesProtocolFee() (gas: 1790801) XykCurveTest:test_getSellInfoCannotHave0NumItems() (gas: 6558) -XykCurveTest:test_getSellInfoReturnsNewReserves() (gas: 1792301) -XykCurveTest:test_getSellInfoReturnsOutputValue() (gas: 1792308) -XykCurveTest:test_swapNFTsForToken() (gas: 2062094) -XykCurveTest:test_swapTokenForAnyNFTs() (gas: 1833311) -NoArbExponentialCurveEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 837514, ~: 1259150) -NoArbExponentialCurveEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 831582, ~: 1247979) -NoArbExponentialCurveEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 338296, ~: 407745) -NoArbExponentialCurveEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 316336, ~: 408211) -NoArbExponentialCurveMissingEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 819956, ~: 1267083) -NoArbExponentialCurveMissingEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 754908, ~: 1216925) -NoArbExponentialCurveMissingEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 291975, ~: 415678) -NoArbExponentialCurveMissingEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 246214, ~: 377157) -NoArbLinearCurveEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 853883, ~: 1260909) -NoArbLinearCurveEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 839778, ~: 1249738) -NoArbLinearCurveEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 310087, ~: 409504) -NoArbLinearCurveEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 296035, ~: 409970) -NoArbLinearCurveMissingEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 849987, ~: 1268842) -NoArbLinearCurveMissingEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 756583, ~: 1218684) -NoArbLinearCurveMissingEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 316419, ~: 417437) -NoArbLinearCurveMissingEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 269200, ~: 378916) -NoArbXykCurveEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 861944, ~: 1261483) -NoArbXykCurveEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 851760, ~: 1250312) -NoArbXykCurveEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 313035, ~: 410078) -NoArbXykCurveEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 306210, ~: 417544) -NoArbXykCurveMissingEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 793167, ~: 1269416) -NoArbXykCurveMissingEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 754601, ~: 1219258) -NoArbXykCurveMissingEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 292855, ~: 418011) -NoArbXykCurveMissingEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 259069, ~: 386490) -PAFExponentialCurveEnumerableERC20Test:testFail_callMint721() (gas: 19270) +XykCurveTest:test_getSellInfoReturnsNewReserves() (gas: 1766515) +XykCurveTest:test_getSellInfoReturnsOutputValue() (gas: 1766513) +XykCurveTest:test_swapNFTsForToken() (gas: 2032226) +XykCurveTest:test_swapTokenForAnyNFTs() (gas: 1803025) +NoArbExponentialCurveEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 782517, ~: 1241754) +NoArbExponentialCurveEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 759208, ~: 1232853) +NoArbExponentialCurveEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 305726, ~: 401288) +NoArbExponentialCurveEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 298966, ~: 404015) +NoArbExponentialCurveMissingEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 847253, ~: 1249611) +NoArbExponentialCurveMissingEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 812515, ~: 1201729) +NoArbExponentialCurveMissingEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 290667, ~: 409145) +NoArbExponentialCurveMissingEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 257523, ~: 372891) +NoArbLinearCurveEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 831296, ~: 1243509) +NoArbLinearCurveEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 800054, ~: 1234608) +NoArbLinearCurveEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 311623, ~: 403043) +NoArbLinearCurveEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 307807, ~: 405770) +NoArbLinearCurveMissingEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 806551, ~: 1251366) +NoArbLinearCurveMissingEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 774691, ~: 1203484) +NoArbLinearCurveMissingEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 299436, ~: 410900) +NoArbLinearCurveMissingEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 247171, ~: 374646) +NoArbXykCurveEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 823229, ~: 1244121) +NoArbXykCurveEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 815405, ~: 1235220) +NoArbXykCurveEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 309733, ~: 403655) +NoArbXykCurveEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 306635, ~: 413390) +NoArbXykCurveMissingEnumerableERC20Test:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 797559, ~: 1251978) +NoArbXykCurveMissingEnumerableERC20Test:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 754562, ~: 1204096) +NoArbXykCurveMissingEnumerableETHTest:test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 302968, ~: 411512) +NoArbXykCurveMissingEnumerableETHTest:test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 270302, ~: 382266) +PAFExponentialCurveEnumerableERC20Test:testFail_callMint721() (gas: 19246) PAFExponentialCurveEnumerableERC20Test:testFail_changeAssetRecipientForTrade() (gas: 10713) PAFExponentialCurveEnumerableERC20Test:testFail_changeDeltaNotOwner() (gas: 18581) PAFExponentialCurveEnumerableERC20Test:testFail_changeFeeAboveMax() (gas: 10754) PAFExponentialCurveEnumerableERC20Test:testFail_changeFeeNotOwner() (gas: 18654) PAFExponentialCurveEnumerableERC20Test:testFail_changeSpotNotOwner() (gas: 18581) -PAFExponentialCurveEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22630) +PAFExponentialCurveEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22581) PAFExponentialCurveEnumerableERC20Test:testFail_reInitPool() (gas: 11087) PAFExponentialCurveEnumerableERC20Test:testFail_rescueTokensNotOwner() (gas: 27804) -PAFExponentialCurveEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33989) -PAFExponentialCurveEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 95720) +PAFExponentialCurveEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33993) +PAFExponentialCurveEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 95772) PAFExponentialCurveEnumerableERC20Test:testFail_tradePoolChangeAssetRecipient() (gas: 10756) PAFExponentialCurveEnumerableERC20Test:testFail_tradePoolChangeFeePastMax() (gas: 10798) PAFExponentialCurveEnumerableERC20Test:testFail_transferOwnership() (gas: 18602) PAFExponentialCurveEnumerableERC20Test:testFail_withdraw() (gas: 26455) -PAFExponentialCurveEnumerableERC20Test:testGas_basicDeploy() (gas: 245006) +PAFExponentialCurveEnumerableERC20Test:testGas_basicDeploy() (gas: 245027) PAFExponentialCurveEnumerableERC20Test:testGas_transferNoCallback() (gas: 15668) -PAFExponentialCurveEnumerableERC20Test:test_callMint721() (gas: 173667) -PAFExponentialCurveEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14651) -PAFExponentialCurveEnumerableERC20Test:test_changeFeeRecipient() (gas: 12142) +PAFExponentialCurveEnumerableERC20Test:test_callMint721() (gas: 173873) +PAFExponentialCurveEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14675) +PAFExponentialCurveEnumerableERC20Test:test_changeFeeRecipient() (gas: 12166) PAFExponentialCurveEnumerableERC20Test:test_getAllHeldNFTs() (gas: 28856) PAFExponentialCurveEnumerableERC20Test:test_modifyPairParams() (gas: 52364) -PAFExponentialCurveEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55592) -PAFExponentialCurveEnumerableERC20Test:test_rescueTokens() (gas: 161961) +PAFExponentialCurveEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55556) +PAFExponentialCurveEnumerableERC20Test:test_rescueTokens() (gas: 157458) PAFExponentialCurveEnumerableERC20Test:test_transferCallback() (gas: 43243) PAFExponentialCurveEnumerableERC20Test:test_transferOwnership() (gas: 16077) PAFExponentialCurveEnumerableERC20Test:test_verifyPoolParams() (gas: 48502) -PAFExponentialCurveEnumerableERC20Test:test_withdraw() (gas: 26847) -PAFExponentialCurveEnumerableERC20Test:test_withdraw1155() (gas: 61665) -PAFExponentialCurveEnumerableERC20Test:test_withdrawFees() (gas: 268882) -PAFExponentialCurveEnumerableETHTest:testFail_callMint721() (gas: 19267) +PAFExponentialCurveEnumerableERC20Test:test_withdraw() (gas: 26856) +PAFExponentialCurveEnumerableERC20Test:test_withdraw1155() (gas: 61671) +PAFExponentialCurveEnumerableERC20Test:test_withdrawFees() (gas: 264443) +PAFExponentialCurveEnumerableETHTest:testFail_callMint721() (gas: 19243) PAFExponentialCurveEnumerableETHTest:testFail_changeAssetRecipientForTrade() (gas: 10732) PAFExponentialCurveEnumerableETHTest:testFail_changeDeltaNotOwner() (gas: 18597) PAFExponentialCurveEnumerableETHTest:testFail_changeFeeAboveMax() (gas: 10751) PAFExponentialCurveEnumerableETHTest:testFail_changeFeeNotOwner() (gas: 18670) PAFExponentialCurveEnumerableETHTest:testFail_changeSpotNotOwner() (gas: 18597) -PAFExponentialCurveEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22643) +PAFExponentialCurveEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22594) PAFExponentialCurveEnumerableETHTest:testFail_reInitPool() (gas: 11084) PAFExponentialCurveEnumerableETHTest:testFail_rescueTokensNotOwner() (gas: 27820) -PAFExponentialCurveEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40686) -PAFExponentialCurveEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 65799) +PAFExponentialCurveEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40690) +PAFExponentialCurveEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 65817) PAFExponentialCurveEnumerableETHTest:testFail_tradePoolChangeAssetRecipient() (gas: 10775) PAFExponentialCurveEnumerableETHTest:testFail_tradePoolChangeFeePastMax() (gas: 10795) PAFExponentialCurveEnumerableETHTest:testFail_transferOwnership() (gas: 18640) PAFExponentialCurveEnumerableETHTest:testFail_withdraw() (gas: 18516) PAFExponentialCurveEnumerableETHTest:testGas_basicDeploy() (gas: 181969) PAFExponentialCurveEnumerableETHTest:testGas_transferNoCallback() (gas: 15717) -PAFExponentialCurveEnumerableETHTest:test_callMint721() (gas: 173664) -PAFExponentialCurveEnumerableETHTest:test_changeFeeMultiplier() (gas: 14651) -PAFExponentialCurveEnumerableETHTest:test_changeFeeRecipient() (gas: 12142) +PAFExponentialCurveEnumerableETHTest:test_callMint721() (gas: 173870) +PAFExponentialCurveEnumerableETHTest:test_changeFeeMultiplier() (gas: 14675) +PAFExponentialCurveEnumerableETHTest:test_changeFeeRecipient() (gas: 12166) PAFExponentialCurveEnumerableETHTest:test_getAllHeldNFTs() (gas: 28853) PAFExponentialCurveEnumerableETHTest:test_modifyPairParams() (gas: 52335) -PAFExponentialCurveEnumerableETHTest:test_multicallModifyPairParams() (gas: 55571) -PAFExponentialCurveEnumerableETHTest:test_rescueTokens() (gas: 161843) +PAFExponentialCurveEnumerableETHTest:test_multicallModifyPairParams() (gas: 55535) +PAFExponentialCurveEnumerableETHTest:test_rescueTokens() (gas: 157340) PAFExponentialCurveEnumerableETHTest:test_transferCallback() (gas: 43262) PAFExponentialCurveEnumerableETHTest:test_transferOwnership() (gas: 16071) PAFExponentialCurveEnumerableETHTest:test_verifyPoolParams() (gas: 41065) PAFExponentialCurveEnumerableETHTest:test_withdraw() (gas: 18982) -PAFExponentialCurveEnumerableETHTest:test_withdraw1155() (gas: 61558) -PAFExponentialCurveEnumerableETHTest:test_withdrawFees() (gas: 262802) -PAFExponentialCurveMissingEnumerableERC20Test:testFail_callMint721() (gas: 19270) +PAFExponentialCurveEnumerableETHTest:test_withdraw1155() (gas: 61564) +PAFExponentialCurveEnumerableETHTest:test_withdrawFees() (gas: 258320) +PAFExponentialCurveMissingEnumerableERC20Test:testFail_callMint721() (gas: 19246) PAFExponentialCurveMissingEnumerableERC20Test:testFail_changeAssetRecipientForTrade() (gas: 10713) PAFExponentialCurveMissingEnumerableERC20Test:testFail_changeDeltaNotOwner() (gas: 18581) PAFExponentialCurveMissingEnumerableERC20Test:testFail_changeFeeAboveMax() (gas: 10754) PAFExponentialCurveMissingEnumerableERC20Test:testFail_changeFeeNotOwner() (gas: 18654) PAFExponentialCurveMissingEnumerableERC20Test:testFail_changeSpotNotOwner() (gas: 18581) -PAFExponentialCurveMissingEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22630) +PAFExponentialCurveMissingEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22581) PAFExponentialCurveMissingEnumerableERC20Test:testFail_reInitPool() (gas: 11087) PAFExponentialCurveMissingEnumerableERC20Test:testFail_rescueTokensNotOwner() (gas: 27804) -PAFExponentialCurveMissingEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33980) -PAFExponentialCurveMissingEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 95813) +PAFExponentialCurveMissingEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33984) +PAFExponentialCurveMissingEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 95865) PAFExponentialCurveMissingEnumerableERC20Test:testFail_tradePoolChangeAssetRecipient() (gas: 10756) PAFExponentialCurveMissingEnumerableERC20Test:testFail_tradePoolChangeFeePastMax() (gas: 10798) PAFExponentialCurveMissingEnumerableERC20Test:testFail_transferOwnership() (gas: 18602) PAFExponentialCurveMissingEnumerableERC20Test:testFail_withdraw() (gas: 26455) -PAFExponentialCurveMissingEnumerableERC20Test:testGas_basicDeploy() (gas: 245109) +PAFExponentialCurveMissingEnumerableERC20Test:testGas_basicDeploy() (gas: 245130) PAFExponentialCurveMissingEnumerableERC20Test:testGas_transferNoCallback() (gas: 15668) -PAFExponentialCurveMissingEnumerableERC20Test:test_callMint721() (gas: 99256) -PAFExponentialCurveMissingEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14651) -PAFExponentialCurveMissingEnumerableERC20Test:test_changeFeeRecipient() (gas: 12142) +PAFExponentialCurveMissingEnumerableERC20Test:test_callMint721() (gas: 99426) +PAFExponentialCurveMissingEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14675) +PAFExponentialCurveMissingEnumerableERC20Test:test_changeFeeRecipient() (gas: 12166) PAFExponentialCurveMissingEnumerableERC20Test:test_getAllHeldNFTs() (gas: 23451) PAFExponentialCurveMissingEnumerableERC20Test:test_modifyPairParams() (gas: 52364) -PAFExponentialCurveMissingEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55592) -PAFExponentialCurveMissingEnumerableERC20Test:test_rescueTokens() (gas: 113040) +PAFExponentialCurveMissingEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55556) +PAFExponentialCurveMissingEnumerableERC20Test:test_rescueTokens() (gas: 109392) PAFExponentialCurveMissingEnumerableERC20Test:test_transferCallback() (gas: 43243) PAFExponentialCurveMissingEnumerableERC20Test:test_transferOwnership() (gas: 16077) PAFExponentialCurveMissingEnumerableERC20Test:test_verifyPoolParams() (gas: 48473) -PAFExponentialCurveMissingEnumerableERC20Test:test_withdraw() (gas: 26847) -PAFExponentialCurveMissingEnumerableERC20Test:test_withdraw1155() (gas: 61665) -PAFExponentialCurveMissingEnumerableERC20Test:test_withdrawFees() (gas: 198692) -PAFExponentialCurveMissingEnumerableETHTest:testFail_callMint721() (gas: 19267) +PAFExponentialCurveMissingEnumerableERC20Test:test_withdraw() (gas: 26856) +PAFExponentialCurveMissingEnumerableERC20Test:test_withdraw1155() (gas: 61671) +PAFExponentialCurveMissingEnumerableERC20Test:test_withdrawFees() (gas: 194197) +PAFExponentialCurveMissingEnumerableETHTest:testFail_callMint721() (gas: 19243) PAFExponentialCurveMissingEnumerableETHTest:testFail_changeAssetRecipientForTrade() (gas: 10732) PAFExponentialCurveMissingEnumerableETHTest:testFail_changeDeltaNotOwner() (gas: 18597) PAFExponentialCurveMissingEnumerableETHTest:testFail_changeFeeAboveMax() (gas: 10751) PAFExponentialCurveMissingEnumerableETHTest:testFail_changeFeeNotOwner() (gas: 18670) PAFExponentialCurveMissingEnumerableETHTest:testFail_changeSpotNotOwner() (gas: 18597) -PAFExponentialCurveMissingEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22643) +PAFExponentialCurveMissingEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22594) PAFExponentialCurveMissingEnumerableETHTest:testFail_reInitPool() (gas: 11084) PAFExponentialCurveMissingEnumerableETHTest:testFail_rescueTokensNotOwner() (gas: 27820) -PAFExponentialCurveMissingEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40677) -PAFExponentialCurveMissingEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 65892) +PAFExponentialCurveMissingEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40681) +PAFExponentialCurveMissingEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 65910) PAFExponentialCurveMissingEnumerableETHTest:testFail_tradePoolChangeAssetRecipient() (gas: 10775) PAFExponentialCurveMissingEnumerableETHTest:testFail_tradePoolChangeFeePastMax() (gas: 10795) PAFExponentialCurveMissingEnumerableETHTest:testFail_transferOwnership() (gas: 18640) PAFExponentialCurveMissingEnumerableETHTest:testFail_withdraw() (gas: 18516) PAFExponentialCurveMissingEnumerableETHTest:testGas_basicDeploy() (gas: 182072) PAFExponentialCurveMissingEnumerableETHTest:testGas_transferNoCallback() (gas: 15717) -PAFExponentialCurveMissingEnumerableETHTest:test_callMint721() (gas: 99253) -PAFExponentialCurveMissingEnumerableETHTest:test_changeFeeMultiplier() (gas: 14651) -PAFExponentialCurveMissingEnumerableETHTest:test_changeFeeRecipient() (gas: 12142) +PAFExponentialCurveMissingEnumerableETHTest:test_callMint721() (gas: 99423) +PAFExponentialCurveMissingEnumerableETHTest:test_changeFeeMultiplier() (gas: 14675) +PAFExponentialCurveMissingEnumerableETHTest:test_changeFeeRecipient() (gas: 12166) PAFExponentialCurveMissingEnumerableETHTest:test_getAllHeldNFTs() (gas: 23448) PAFExponentialCurveMissingEnumerableETHTest:test_modifyPairParams() (gas: 52335) -PAFExponentialCurveMissingEnumerableETHTest:test_multicallModifyPairParams() (gas: 55571) -PAFExponentialCurveMissingEnumerableETHTest:test_rescueTokens() (gas: 112945) +PAFExponentialCurveMissingEnumerableETHTest:test_multicallModifyPairParams() (gas: 55535) +PAFExponentialCurveMissingEnumerableETHTest:test_rescueTokens() (gas: 109298) PAFExponentialCurveMissingEnumerableETHTest:test_transferCallback() (gas: 43262) PAFExponentialCurveMissingEnumerableETHTest:test_transferOwnership() (gas: 16071) PAFExponentialCurveMissingEnumerableETHTest:test_verifyPoolParams() (gas: 41036) PAFExponentialCurveMissingEnumerableETHTest:test_withdraw() (gas: 18982) -PAFExponentialCurveMissingEnumerableETHTest:test_withdraw1155() (gas: 61558) -PAFExponentialCurveMissingEnumerableETHTest:test_withdrawFees() (gas: 192612) -PAFLinearCurveEnumerableERC20Test:testFail_callMint721() (gas: 19270) +PAFExponentialCurveMissingEnumerableETHTest:test_withdraw1155() (gas: 61564) +PAFExponentialCurveMissingEnumerableETHTest:test_withdrawFees() (gas: 188074) +PAFLinearCurveEnumerableERC20Test:testFail_callMint721() (gas: 19246) PAFLinearCurveEnumerableERC20Test:testFail_changeAssetRecipientForTrade() (gas: 10713) PAFLinearCurveEnumerableERC20Test:testFail_changeDeltaNotOwner() (gas: 18581) PAFLinearCurveEnumerableERC20Test:testFail_changeFeeAboveMax() (gas: 10754) PAFLinearCurveEnumerableERC20Test:testFail_changeFeeNotOwner() (gas: 18654) PAFLinearCurveEnumerableERC20Test:testFail_changeSpotNotOwner() (gas: 18581) -PAFLinearCurveEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22630) +PAFLinearCurveEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22581) PAFLinearCurveEnumerableERC20Test:testFail_reInitPool() (gas: 11087) PAFLinearCurveEnumerableERC20Test:testFail_rescueTokensNotOwner() (gas: 27804) -PAFLinearCurveEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33707) -PAFLinearCurveEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 95437) +PAFLinearCurveEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33733) +PAFLinearCurveEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 95508) PAFLinearCurveEnumerableERC20Test:testFail_tradePoolChangeAssetRecipient() (gas: 10756) PAFLinearCurveEnumerableERC20Test:testFail_tradePoolChangeFeePastMax() (gas: 10798) PAFLinearCurveEnumerableERC20Test:testFail_transferOwnership() (gas: 18602) PAFLinearCurveEnumerableERC20Test:testFail_withdraw() (gas: 26455) -PAFLinearCurveEnumerableERC20Test:testGas_basicDeploy() (gas: 244953) +PAFLinearCurveEnumerableERC20Test:testGas_basicDeploy() (gas: 244974) PAFLinearCurveEnumerableERC20Test:testGas_transferNoCallback() (gas: 15668) -PAFLinearCurveEnumerableERC20Test:test_callMint721() (gas: 173667) -PAFLinearCurveEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14651) -PAFLinearCurveEnumerableERC20Test:test_changeFeeRecipient() (gas: 12142) +PAFLinearCurveEnumerableERC20Test:test_callMint721() (gas: 173873) +PAFLinearCurveEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14675) +PAFLinearCurveEnumerableERC20Test:test_changeFeeRecipient() (gas: 12166) PAFLinearCurveEnumerableERC20Test:test_getAllHeldNFTs() (gas: 28856) PAFLinearCurveEnumerableERC20Test:test_modifyPairParams() (gas: 52311) -PAFLinearCurveEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55539) -PAFLinearCurveEnumerableERC20Test:test_rescueTokens() (gas: 161961) +PAFLinearCurveEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55503) +PAFLinearCurveEnumerableERC20Test:test_rescueTokens() (gas: 157458) PAFLinearCurveEnumerableERC20Test:test_transferCallback() (gas: 43243) PAFLinearCurveEnumerableERC20Test:test_transferOwnership() (gas: 16077) PAFLinearCurveEnumerableERC20Test:test_verifyPoolParams() (gas: 48502) -PAFLinearCurveEnumerableERC20Test:test_withdraw() (gas: 26847) -PAFLinearCurveEnumerableERC20Test:test_withdraw1155() (gas: 61665) -PAFLinearCurveEnumerableERC20Test:test_withdrawFees() (gas: 268338) -PAFLinearCurveEnumerableETHTest:testFail_callMint721() (gas: 19267) +PAFLinearCurveEnumerableERC20Test:test_withdraw() (gas: 26856) +PAFLinearCurveEnumerableERC20Test:test_withdraw1155() (gas: 61671) +PAFLinearCurveEnumerableERC20Test:test_withdrawFees() (gas: 263943) +PAFLinearCurveEnumerableETHTest:testFail_callMint721() (gas: 19243) PAFLinearCurveEnumerableETHTest:testFail_changeAssetRecipientForTrade() (gas: 10732) PAFLinearCurveEnumerableETHTest:testFail_changeDeltaNotOwner() (gas: 18597) PAFLinearCurveEnumerableETHTest:testFail_changeFeeAboveMax() (gas: 10751) PAFLinearCurveEnumerableETHTest:testFail_changeFeeNotOwner() (gas: 18670) PAFLinearCurveEnumerableETHTest:testFail_changeSpotNotOwner() (gas: 18597) -PAFLinearCurveEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22643) +PAFLinearCurveEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22594) PAFLinearCurveEnumerableETHTest:testFail_reInitPool() (gas: 11084) PAFLinearCurveEnumerableETHTest:testFail_rescueTokensNotOwner() (gas: 27820) -PAFLinearCurveEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40404) -PAFLinearCurveEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 65516) +PAFLinearCurveEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40430) +PAFLinearCurveEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 65553) PAFLinearCurveEnumerableETHTest:testFail_tradePoolChangeAssetRecipient() (gas: 10775) PAFLinearCurveEnumerableETHTest:testFail_tradePoolChangeFeePastMax() (gas: 10795) PAFLinearCurveEnumerableETHTest:testFail_transferOwnership() (gas: 18640) PAFLinearCurveEnumerableETHTest:testFail_withdraw() (gas: 18516) PAFLinearCurveEnumerableETHTest:testGas_basicDeploy() (gas: 181916) PAFLinearCurveEnumerableETHTest:testGas_transferNoCallback() (gas: 15717) -PAFLinearCurveEnumerableETHTest:test_callMint721() (gas: 173664) -PAFLinearCurveEnumerableETHTest:test_changeFeeMultiplier() (gas: 14651) -PAFLinearCurveEnumerableETHTest:test_changeFeeRecipient() (gas: 12142) +PAFLinearCurveEnumerableETHTest:test_callMint721() (gas: 173870) +PAFLinearCurveEnumerableETHTest:test_changeFeeMultiplier() (gas: 14675) +PAFLinearCurveEnumerableETHTest:test_changeFeeRecipient() (gas: 12166) PAFLinearCurveEnumerableETHTest:test_getAllHeldNFTs() (gas: 28853) PAFLinearCurveEnumerableETHTest:test_modifyPairParams() (gas: 52282) -PAFLinearCurveEnumerableETHTest:test_multicallModifyPairParams() (gas: 55518) -PAFLinearCurveEnumerableETHTest:test_rescueTokens() (gas: 161843) +PAFLinearCurveEnumerableETHTest:test_multicallModifyPairParams() (gas: 55482) +PAFLinearCurveEnumerableETHTest:test_rescueTokens() (gas: 157340) PAFLinearCurveEnumerableETHTest:test_transferCallback() (gas: 43262) PAFLinearCurveEnumerableETHTest:test_transferOwnership() (gas: 16071) PAFLinearCurveEnumerableETHTest:test_verifyPoolParams() (gas: 41065) PAFLinearCurveEnumerableETHTest:test_withdraw() (gas: 18982) -PAFLinearCurveEnumerableETHTest:test_withdraw1155() (gas: 61558) -PAFLinearCurveEnumerableETHTest:test_withdrawFees() (gas: 262258) -PAFLinearCurveMissingEnumerableERC20Test:testFail_callMint721() (gas: 19270) +PAFLinearCurveEnumerableETHTest:test_withdraw1155() (gas: 61564) +PAFLinearCurveEnumerableETHTest:test_withdrawFees() (gas: 257820) +PAFLinearCurveMissingEnumerableERC20Test:testFail_callMint721() (gas: 19246) PAFLinearCurveMissingEnumerableERC20Test:testFail_changeAssetRecipientForTrade() (gas: 10713) PAFLinearCurveMissingEnumerableERC20Test:testFail_changeDeltaNotOwner() (gas: 18581) PAFLinearCurveMissingEnumerableERC20Test:testFail_changeFeeAboveMax() (gas: 10754) PAFLinearCurveMissingEnumerableERC20Test:testFail_changeFeeNotOwner() (gas: 18654) PAFLinearCurveMissingEnumerableERC20Test:testFail_changeSpotNotOwner() (gas: 18581) -PAFLinearCurveMissingEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22630) +PAFLinearCurveMissingEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22581) PAFLinearCurveMissingEnumerableERC20Test:testFail_reInitPool() (gas: 11087) PAFLinearCurveMissingEnumerableERC20Test:testFail_rescueTokensNotOwner() (gas: 27804) -PAFLinearCurveMissingEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33698) -PAFLinearCurveMissingEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 95530) +PAFLinearCurveMissingEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33724) +PAFLinearCurveMissingEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 95601) PAFLinearCurveMissingEnumerableERC20Test:testFail_tradePoolChangeAssetRecipient() (gas: 10756) PAFLinearCurveMissingEnumerableERC20Test:testFail_tradePoolChangeFeePastMax() (gas: 10798) PAFLinearCurveMissingEnumerableERC20Test:testFail_transferOwnership() (gas: 18602) PAFLinearCurveMissingEnumerableERC20Test:testFail_withdraw() (gas: 26455) -PAFLinearCurveMissingEnumerableERC20Test:testGas_basicDeploy() (gas: 245056) +PAFLinearCurveMissingEnumerableERC20Test:testGas_basicDeploy() (gas: 245077) PAFLinearCurveMissingEnumerableERC20Test:testGas_transferNoCallback() (gas: 15668) -PAFLinearCurveMissingEnumerableERC20Test:test_callMint721() (gas: 99256) -PAFLinearCurveMissingEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14651) -PAFLinearCurveMissingEnumerableERC20Test:test_changeFeeRecipient() (gas: 12142) +PAFLinearCurveMissingEnumerableERC20Test:test_callMint721() (gas: 99426) +PAFLinearCurveMissingEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14675) +PAFLinearCurveMissingEnumerableERC20Test:test_changeFeeRecipient() (gas: 12166) PAFLinearCurveMissingEnumerableERC20Test:test_getAllHeldNFTs() (gas: 23451) PAFLinearCurveMissingEnumerableERC20Test:test_modifyPairParams() (gas: 52311) -PAFLinearCurveMissingEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55539) -PAFLinearCurveMissingEnumerableERC20Test:test_rescueTokens() (gas: 113040) +PAFLinearCurveMissingEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55503) +PAFLinearCurveMissingEnumerableERC20Test:test_rescueTokens() (gas: 109392) PAFLinearCurveMissingEnumerableERC20Test:test_transferCallback() (gas: 43243) PAFLinearCurveMissingEnumerableERC20Test:test_transferOwnership() (gas: 16077) PAFLinearCurveMissingEnumerableERC20Test:test_verifyPoolParams() (gas: 48473) -PAFLinearCurveMissingEnumerableERC20Test:test_withdraw() (gas: 26847) -PAFLinearCurveMissingEnumerableERC20Test:test_withdraw1155() (gas: 61665) -PAFLinearCurveMissingEnumerableERC20Test:test_withdrawFees() (gas: 198148) -PAFLinearCurveMissingEnumerableETHTest:testFail_callMint721() (gas: 19267) +PAFLinearCurveMissingEnumerableERC20Test:test_withdraw() (gas: 26856) +PAFLinearCurveMissingEnumerableERC20Test:test_withdraw1155() (gas: 61671) +PAFLinearCurveMissingEnumerableERC20Test:test_withdrawFees() (gas: 193697) +PAFLinearCurveMissingEnumerableETHTest:testFail_callMint721() (gas: 19243) PAFLinearCurveMissingEnumerableETHTest:testFail_changeAssetRecipientForTrade() (gas: 10732) PAFLinearCurveMissingEnumerableETHTest:testFail_changeDeltaNotOwner() (gas: 18597) PAFLinearCurveMissingEnumerableETHTest:testFail_changeFeeAboveMax() (gas: 10751) PAFLinearCurveMissingEnumerableETHTest:testFail_changeFeeNotOwner() (gas: 18670) PAFLinearCurveMissingEnumerableETHTest:testFail_changeSpotNotOwner() (gas: 18597) -PAFLinearCurveMissingEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22643) +PAFLinearCurveMissingEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22594) PAFLinearCurveMissingEnumerableETHTest:testFail_reInitPool() (gas: 11084) PAFLinearCurveMissingEnumerableETHTest:testFail_rescueTokensNotOwner() (gas: 27820) -PAFLinearCurveMissingEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40395) -PAFLinearCurveMissingEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 65609) +PAFLinearCurveMissingEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40421) +PAFLinearCurveMissingEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 65646) PAFLinearCurveMissingEnumerableETHTest:testFail_tradePoolChangeAssetRecipient() (gas: 10775) PAFLinearCurveMissingEnumerableETHTest:testFail_tradePoolChangeFeePastMax() (gas: 10795) PAFLinearCurveMissingEnumerableETHTest:testFail_transferOwnership() (gas: 18640) PAFLinearCurveMissingEnumerableETHTest:testFail_withdraw() (gas: 18516) PAFLinearCurveMissingEnumerableETHTest:testGas_basicDeploy() (gas: 182019) PAFLinearCurveMissingEnumerableETHTest:testGas_transferNoCallback() (gas: 15717) -PAFLinearCurveMissingEnumerableETHTest:test_callMint721() (gas: 99253) -PAFLinearCurveMissingEnumerableETHTest:test_changeFeeMultiplier() (gas: 14651) -PAFLinearCurveMissingEnumerableETHTest:test_changeFeeRecipient() (gas: 12142) +PAFLinearCurveMissingEnumerableETHTest:test_callMint721() (gas: 99423) +PAFLinearCurveMissingEnumerableETHTest:test_changeFeeMultiplier() (gas: 14675) +PAFLinearCurveMissingEnumerableETHTest:test_changeFeeRecipient() (gas: 12166) PAFLinearCurveMissingEnumerableETHTest:test_getAllHeldNFTs() (gas: 23448) PAFLinearCurveMissingEnumerableETHTest:test_modifyPairParams() (gas: 52282) -PAFLinearCurveMissingEnumerableETHTest:test_multicallModifyPairParams() (gas: 55518) -PAFLinearCurveMissingEnumerableETHTest:test_rescueTokens() (gas: 112945) +PAFLinearCurveMissingEnumerableETHTest:test_multicallModifyPairParams() (gas: 55482) +PAFLinearCurveMissingEnumerableETHTest:test_rescueTokens() (gas: 109298) PAFLinearCurveMissingEnumerableETHTest:test_transferCallback() (gas: 43262) PAFLinearCurveMissingEnumerableETHTest:test_transferOwnership() (gas: 16071) PAFLinearCurveMissingEnumerableETHTest:test_verifyPoolParams() (gas: 41036) PAFLinearCurveMissingEnumerableETHTest:test_withdraw() (gas: 18982) -PAFLinearCurveMissingEnumerableETHTest:test_withdraw1155() (gas: 61558) -PAFLinearCurveMissingEnumerableETHTest:test_withdrawFees() (gas: 192068) -PAFXykCurveEnumerableERC20Test:testFail_callMint721() (gas: 19270) +PAFLinearCurveMissingEnumerableETHTest:test_withdraw1155() (gas: 61564) +PAFLinearCurveMissingEnumerableETHTest:test_withdrawFees() (gas: 187574) +PAFXykCurveEnumerableERC20Test:testFail_callMint721() (gas: 19246) PAFXykCurveEnumerableERC20Test:testFail_changeAssetRecipientForTrade() (gas: 10713) PAFXykCurveEnumerableERC20Test:testFail_changeDeltaNotOwner() (gas: 18581) PAFXykCurveEnumerableERC20Test:testFail_changeFeeAboveMax() (gas: 10754) PAFXykCurveEnumerableERC20Test:testFail_changeFeeNotOwner() (gas: 18654) PAFXykCurveEnumerableERC20Test:testFail_changeSpotNotOwner() (gas: 18581) -PAFXykCurveEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22630) +PAFXykCurveEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22581) PAFXykCurveEnumerableERC20Test:testFail_reInitPool() (gas: 11087) PAFXykCurveEnumerableERC20Test:testFail_rescueTokensNotOwner() (gas: 27804) -PAFXykCurveEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33271) -PAFXykCurveEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 63341) +PAFXykCurveEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33311) +PAFXykCurveEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 63427) PAFXykCurveEnumerableERC20Test:testFail_tradePoolChangeAssetRecipient() (gas: 10756) PAFXykCurveEnumerableERC20Test:testFail_tradePoolChangeFeePastMax() (gas: 10798) PAFXykCurveEnumerableERC20Test:testFail_transferOwnership() (gas: 18602) PAFXykCurveEnumerableERC20Test:testFail_withdraw() (gas: 26455) -PAFXykCurveEnumerableERC20Test:testGas_basicDeploy() (gas: 244953) +PAFXykCurveEnumerableERC20Test:testGas_basicDeploy() (gas: 244974) PAFXykCurveEnumerableERC20Test:testGas_transferNoCallback() (gas: 15668) -PAFXykCurveEnumerableERC20Test:test_callMint721() (gas: 173667) -PAFXykCurveEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14651) -PAFXykCurveEnumerableERC20Test:test_changeFeeRecipient() (gas: 12142) +PAFXykCurveEnumerableERC20Test:test_callMint721() (gas: 173873) +PAFXykCurveEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14675) +PAFXykCurveEnumerableERC20Test:test_changeFeeRecipient() (gas: 12166) PAFXykCurveEnumerableERC20Test:test_getAllHeldNFTs() (gas: 28856) PAFXykCurveEnumerableERC20Test:test_modifyPairParams() (gas: 52311) -PAFXykCurveEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55539) -PAFXykCurveEnumerableERC20Test:test_rescueTokens() (gas: 161961) +PAFXykCurveEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55503) +PAFXykCurveEnumerableERC20Test:test_rescueTokens() (gas: 157458) PAFXykCurveEnumerableERC20Test:test_transferCallback() (gas: 43243) PAFXykCurveEnumerableERC20Test:test_transferOwnership() (gas: 16077) PAFXykCurveEnumerableERC20Test:test_verifyPoolParams() (gas: 48502) -PAFXykCurveEnumerableERC20Test:test_withdraw() (gas: 26847) -PAFXykCurveEnumerableERC20Test:test_withdraw1155() (gas: 61665) -PAFXykCurveEnumerableERC20Test:test_withdrawFees() (gas: 244861) -PAFXykCurveEnumerableETHTest:testFail_callMint721() (gas: 19267) +PAFXykCurveEnumerableERC20Test:test_withdraw() (gas: 26856) +PAFXykCurveEnumerableERC20Test:test_withdraw1155() (gas: 61671) +PAFXykCurveEnumerableERC20Test:test_withdrawFees() (gas: 240481) +PAFXykCurveEnumerableETHTest:testFail_callMint721() (gas: 19243) PAFXykCurveEnumerableETHTest:testFail_changeAssetRecipientForTrade() (gas: 10732) PAFXykCurveEnumerableETHTest:testFail_changeDeltaNotOwner() (gas: 18597) PAFXykCurveEnumerableETHTest:testFail_changeFeeAboveMax() (gas: 10751) PAFXykCurveEnumerableETHTest:testFail_changeFeeNotOwner() (gas: 18670) PAFXykCurveEnumerableETHTest:testFail_changeSpotNotOwner() (gas: 18597) -PAFXykCurveEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22643) +PAFXykCurveEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22594) PAFXykCurveEnumerableETHTest:testFail_reInitPool() (gas: 11084) PAFXykCurveEnumerableETHTest:testFail_rescueTokensNotOwner() (gas: 27820) -PAFXykCurveEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 39968) -PAFXykCurveEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 57694) +PAFXykCurveEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 40008) +PAFXykCurveEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 57759) PAFXykCurveEnumerableETHTest:testFail_tradePoolChangeAssetRecipient() (gas: 10775) PAFXykCurveEnumerableETHTest:testFail_tradePoolChangeFeePastMax() (gas: 10795) PAFXykCurveEnumerableETHTest:testFail_transferOwnership() (gas: 18640) PAFXykCurveEnumerableETHTest:testFail_withdraw() (gas: 18516) PAFXykCurveEnumerableETHTest:testGas_basicDeploy() (gas: 181916) PAFXykCurveEnumerableETHTest:testGas_transferNoCallback() (gas: 15717) -PAFXykCurveEnumerableETHTest:test_callMint721() (gas: 173664) -PAFXykCurveEnumerableETHTest:test_changeFeeMultiplier() (gas: 14651) -PAFXykCurveEnumerableETHTest:test_changeFeeRecipient() (gas: 12142) +PAFXykCurveEnumerableETHTest:test_callMint721() (gas: 173870) +PAFXykCurveEnumerableETHTest:test_changeFeeMultiplier() (gas: 14675) +PAFXykCurveEnumerableETHTest:test_changeFeeRecipient() (gas: 12166) PAFXykCurveEnumerableETHTest:test_getAllHeldNFTs() (gas: 28853) PAFXykCurveEnumerableETHTest:test_modifyPairParams() (gas: 52282) -PAFXykCurveEnumerableETHTest:test_multicallModifyPairParams() (gas: 55518) -PAFXykCurveEnumerableETHTest:test_rescueTokens() (gas: 161843) +PAFXykCurveEnumerableETHTest:test_multicallModifyPairParams() (gas: 55482) +PAFXykCurveEnumerableETHTest:test_rescueTokens() (gas: 157340) PAFXykCurveEnumerableETHTest:test_transferCallback() (gas: 43262) PAFXykCurveEnumerableETHTest:test_transferOwnership() (gas: 16071) PAFXykCurveEnumerableETHTest:test_verifyPoolParams() (gas: 41065) PAFXykCurveEnumerableETHTest:test_withdraw() (gas: 18982) -PAFXykCurveEnumerableETHTest:test_withdraw1155() (gas: 61558) -PAFXykCurveEnumerableETHTest:test_withdrawFees() (gas: 223755) -PAFXykCurveMissingEnumerableERC20Test:testFail_callMint721() (gas: 19270) +PAFXykCurveEnumerableETHTest:test_withdraw1155() (gas: 61564) +PAFXykCurveEnumerableETHTest:test_withdrawFees() (gas: 219345) +PAFXykCurveMissingEnumerableERC20Test:testFail_callMint721() (gas: 19246) PAFXykCurveMissingEnumerableERC20Test:testFail_changeAssetRecipientForTrade() (gas: 10713) PAFXykCurveMissingEnumerableERC20Test:testFail_changeDeltaNotOwner() (gas: 18581) PAFXykCurveMissingEnumerableERC20Test:testFail_changeFeeAboveMax() (gas: 10754) PAFXykCurveMissingEnumerableERC20Test:testFail_changeFeeNotOwner() (gas: 18654) PAFXykCurveMissingEnumerableERC20Test:testFail_changeSpotNotOwner() (gas: 18581) -PAFXykCurveMissingEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22630) +PAFXykCurveMissingEnumerableERC20Test:testFail_multicallChangeOwnership() (gas: 22581) PAFXykCurveMissingEnumerableERC20Test:testFail_reInitPool() (gas: 11087) PAFXykCurveMissingEnumerableERC20Test:testFail_rescueTokensNotOwner() (gas: 27804) -PAFXykCurveMissingEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33262) -PAFXykCurveMissingEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 63434) +PAFXykCurveMissingEnumerableERC20Test:testFail_swapForAnyNFTsPastBalance() (gas: 33302) +PAFXykCurveMissingEnumerableERC20Test:testFail_swapForNFTNotInPool() (gas: 63520) PAFXykCurveMissingEnumerableERC20Test:testFail_tradePoolChangeAssetRecipient() (gas: 10756) PAFXykCurveMissingEnumerableERC20Test:testFail_tradePoolChangeFeePastMax() (gas: 10798) PAFXykCurveMissingEnumerableERC20Test:testFail_transferOwnership() (gas: 18602) PAFXykCurveMissingEnumerableERC20Test:testFail_withdraw() (gas: 26455) -PAFXykCurveMissingEnumerableERC20Test:testGas_basicDeploy() (gas: 245056) +PAFXykCurveMissingEnumerableERC20Test:testGas_basicDeploy() (gas: 245077) PAFXykCurveMissingEnumerableERC20Test:testGas_transferNoCallback() (gas: 15668) -PAFXykCurveMissingEnumerableERC20Test:test_callMint721() (gas: 99256) -PAFXykCurveMissingEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14651) -PAFXykCurveMissingEnumerableERC20Test:test_changeFeeRecipient() (gas: 12142) +PAFXykCurveMissingEnumerableERC20Test:test_callMint721() (gas: 99426) +PAFXykCurveMissingEnumerableERC20Test:test_changeFeeMultiplier() (gas: 14675) +PAFXykCurveMissingEnumerableERC20Test:test_changeFeeRecipient() (gas: 12166) PAFXykCurveMissingEnumerableERC20Test:test_getAllHeldNFTs() (gas: 23451) PAFXykCurveMissingEnumerableERC20Test:test_modifyPairParams() (gas: 52311) -PAFXykCurveMissingEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55539) -PAFXykCurveMissingEnumerableERC20Test:test_rescueTokens() (gas: 113040) +PAFXykCurveMissingEnumerableERC20Test:test_multicallModifyPairParams() (gas: 55503) +PAFXykCurveMissingEnumerableERC20Test:test_rescueTokens() (gas: 109392) PAFXykCurveMissingEnumerableERC20Test:test_transferCallback() (gas: 43243) PAFXykCurveMissingEnumerableERC20Test:test_transferOwnership() (gas: 16077) PAFXykCurveMissingEnumerableERC20Test:test_verifyPoolParams() (gas: 48473) -PAFXykCurveMissingEnumerableERC20Test:test_withdraw() (gas: 26847) -PAFXykCurveMissingEnumerableERC20Test:test_withdraw1155() (gas: 61665) -PAFXykCurveMissingEnumerableERC20Test:test_withdrawFees() (gas: 174671) -PAFXykCurveMissingEnumerableETHTest:testFail_callMint721() (gas: 19267) +PAFXykCurveMissingEnumerableERC20Test:test_withdraw() (gas: 26856) +PAFXykCurveMissingEnumerableERC20Test:test_withdraw1155() (gas: 61671) +PAFXykCurveMissingEnumerableERC20Test:test_withdrawFees() (gas: 170235) +PAFXykCurveMissingEnumerableETHTest:testFail_callMint721() (gas: 19243) PAFXykCurveMissingEnumerableETHTest:testFail_changeAssetRecipientForTrade() (gas: 10732) PAFXykCurveMissingEnumerableETHTest:testFail_changeDeltaNotOwner() (gas: 18597) PAFXykCurveMissingEnumerableETHTest:testFail_changeFeeAboveMax() (gas: 10751) PAFXykCurveMissingEnumerableETHTest:testFail_changeFeeNotOwner() (gas: 18670) PAFXykCurveMissingEnumerableETHTest:testFail_changeSpotNotOwner() (gas: 18597) -PAFXykCurveMissingEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22643) +PAFXykCurveMissingEnumerableETHTest:testFail_multicallChangeOwnership() (gas: 22594) PAFXykCurveMissingEnumerableETHTest:testFail_reInitPool() (gas: 11084) PAFXykCurveMissingEnumerableETHTest:testFail_rescueTokensNotOwner() (gas: 27820) -PAFXykCurveMissingEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 39959) -PAFXykCurveMissingEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 57787) +PAFXykCurveMissingEnumerableETHTest:testFail_swapForAnyNFTsPastBalance() (gas: 39999) +PAFXykCurveMissingEnumerableETHTest:testFail_swapForNFTNotInPool() (gas: 57852) PAFXykCurveMissingEnumerableETHTest:testFail_tradePoolChangeAssetRecipient() (gas: 10775) PAFXykCurveMissingEnumerableETHTest:testFail_tradePoolChangeFeePastMax() (gas: 10795) PAFXykCurveMissingEnumerableETHTest:testFail_transferOwnership() (gas: 18640) PAFXykCurveMissingEnumerableETHTest:testFail_withdraw() (gas: 18516) PAFXykCurveMissingEnumerableETHTest:testGas_basicDeploy() (gas: 182019) PAFXykCurveMissingEnumerableETHTest:testGas_transferNoCallback() (gas: 15717) -PAFXykCurveMissingEnumerableETHTest:test_callMint721() (gas: 99253) -PAFXykCurveMissingEnumerableETHTest:test_changeFeeMultiplier() (gas: 14651) -PAFXykCurveMissingEnumerableETHTest:test_changeFeeRecipient() (gas: 12142) +PAFXykCurveMissingEnumerableETHTest:test_callMint721() (gas: 99423) +PAFXykCurveMissingEnumerableETHTest:test_changeFeeMultiplier() (gas: 14675) +PAFXykCurveMissingEnumerableETHTest:test_changeFeeRecipient() (gas: 12166) PAFXykCurveMissingEnumerableETHTest:test_getAllHeldNFTs() (gas: 23448) PAFXykCurveMissingEnumerableETHTest:test_modifyPairParams() (gas: 52282) -PAFXykCurveMissingEnumerableETHTest:test_multicallModifyPairParams() (gas: 55518) -PAFXykCurveMissingEnumerableETHTest:test_rescueTokens() (gas: 112945) +PAFXykCurveMissingEnumerableETHTest:test_multicallModifyPairParams() (gas: 55482) +PAFXykCurveMissingEnumerableETHTest:test_rescueTokens() (gas: 109298) PAFXykCurveMissingEnumerableETHTest:test_transferCallback() (gas: 43262) PAFXykCurveMissingEnumerableETHTest:test_transferOwnership() (gas: 16071) PAFXykCurveMissingEnumerableETHTest:test_verifyPoolParams() (gas: 41036) PAFXykCurveMissingEnumerableETHTest:test_withdraw() (gas: 18982) -PAFXykCurveMissingEnumerableETHTest:test_withdraw1155() (gas: 61558) -PAFXykCurveMissingEnumerableETHTest:test_withdrawFees() (gas: 153565) -RMPExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 538309) -RMPExponentialCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 644134) -RMPExponentialCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 635794) -RMPExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 540619) -RMPExponentialCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 615775) -RMPExponentialCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 609570) -RMPExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 629016) -RMPExponentialCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 413808) -RMPExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 414952) -RMPExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 631326) -RMPExponentialCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 390409) -RMPExponentialCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 393285) -RMPLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 517489) -RMPLinearCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 624264) -RMPLinearCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 615924) -RMPLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 519799) -RMPLinearCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 595900) -RMPLinearCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 589695) -RMPLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 608196) -RMPLinearCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 397912) -RMPLinearCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 399056) -RMPLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 610506) -RMPLinearCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 374509) -RMPLinearCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 377385) -RMPWRExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 665589) -RMPWRExponentialCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 742016) -RMPWRExponentialCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 732992) -RMPWRExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 697826) -RMPWRExponentialCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 726536) -RMPWRExponentialCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 718610) -RMPWRExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 756371) -RMPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 510483) -RMPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 511229) -RMPWRExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 788608) -RMPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 494113) -RMPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 495987) -RMPWRLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 646883) -RMPWRLinearCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 722146) -RMPWRLinearCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 713122) -RMPWRLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 677006) -RMPWRLinearCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 706661) -RMPWRLinearCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 698735) -RMPWRLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 735551) -RMPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 490613) -RMPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 491359) -RMPWRLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 767788) -RMPWRLinearCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 474238) -RMPWRLinearCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 476112) -RMPWRXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 690434) -RMPWRXykCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 742991) -RMPWRXykCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 733967) -RMPWRXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 698671) -RMPWRXykCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 725326) -RMPWRXykCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 717400) -RMPWRXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 781216) -RMPWRXykCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 511458) -RMPWRXykCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 512204) -RMPWRXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 789453) -RMPWRXykCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 492903) -RMPWRXykCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 494777) -RMPXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 563154) -RMPXykCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 645109) -RMPXykCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 636769) -RMPXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 541464) -RMPXykCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 614565) -RMPXykCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 608360) -RMPXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 653861) -RMPXykCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 414588) -RMPXykCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 415732) -RMPXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 632171) -RMPXykCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 389441) -RMPXykCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 392317) -RRSExponentialCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 429176) -RRSExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 396538) -RRSExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 267720) -RRSExponentialCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 445998) -RRSExponentialCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 384508) -RRSExponentialCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 403163) -RRSExponentialCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 372968) -RRSExponentialCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 240051) -RRSExponentialCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 418397) -RRSExponentialCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 356884) -RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 462334) -RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 405398) -RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 284255) -RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 342188) -RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 278640) -RRSExponentialCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 436321) -RRSExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 381656) -RRSExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 256586) -RRSExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 314243) -RRSExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 250660) -RRSLinearCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 418663) -RRSLinearCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 390649) -RRSLinearCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 262280) -RRSLinearCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 444094) -RRSLinearCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 382604) -RRSLinearCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 392650) -RRSLinearCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 367079) -RRSLinearCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 234611) -RRSLinearCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 416493) -RRSLinearCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 354980) -RRSLinearCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 451821) -RRSLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 399509) -RRSLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 278815) -RRSLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 340284) -RRSLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 276736) -RRSLinearCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 425808) -RRSLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 375767) -RRSLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 251146) -RRSLinearCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 312339) -RRSLinearCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 248756) -RRSWARExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 169812) -RRSWARExponentialCurveEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 195682) -RRSWARExponentialCurveEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 196984) -RRSWARExponentialCurveEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 166127) -RRSWARExponentialCurveEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 203263) -RRSWARExponentialCurveEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 204504) -RRSWARExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 135513) -RRSWARExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 149378) -RRSWARExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 152634) -RRSWARExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 131828) -RRSWARExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 156781) -RRSWARExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 159982) -RRSWARLinearCurveEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 165456) -RRSWARLinearCurveEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 191706) -RRSWARLinearCurveEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 193008) -RRSWARLinearCurveEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 161771) -RRSWARLinearCurveEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 199287) -RRSWARLinearCurveEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 200528) -RRSWARLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 131157) -RRSWARLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 145402) -RRSWARLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 148658) -RRSWARLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 127472) -RRSWARLinearCurveMissingEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 152805) -RRSWARLinearCurveMissingEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 156006) -RRSWARXykCurveEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 173881) -RRSWARXykCurveEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 195003) -RRSWARXykCurveEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 196305) -RRSWARXykCurveEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 165396) -RRSWARXykCurveEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 202584) -RRSWARXykCurveEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 203825) -RRSWARXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 139582) -RRSWARXykCurveMissingEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 148699) -RRSWARXykCurveMissingEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 151955) -RRSWARXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 131097) -RRSWARXykCurveMissingEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 156102) -RRSWARXykCurveMissingEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 159303) -RRSWRExponentialCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 506756) -RRSWRExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 462191) -RRSWRExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 328229) -RRSWRExponentialCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 511410) -RRSWRExponentialCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 450296) -RRSWRExponentialCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 493251) -RRSWRExponentialCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 447136) -RRSWRExponentialCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 307138) -RRSWRExponentialCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 490244) -RRSWRExponentialCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 429320) -RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 539959) -RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 471081) -RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 344794) -RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 407645) -RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 344473) -RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 526454) -RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 455854) -RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 323703) -RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 386135) -RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 323141) -RRSWRLinearCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 496243) -RRSWRLinearCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 456302) -RRSWRLinearCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 322789) -RRSWRLinearCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 509506) -RRSWRLinearCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 448392) -RRSWRLinearCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 482738) -RRSWRLinearCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 441247) -RRSWRLinearCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 301698) -RRSWRLinearCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 488340) -RRSWRLinearCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 427416) -RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 529446) -RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 465192) -RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 339354) -RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 405741) -RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 342569) -RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 515941) -RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 449965) -RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 318263) -RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 384231) -RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 321237) -RRSWRXykCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 503847) -RRSWRXykCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 464014) -RRSWRXykCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 326414) -RRSWRXykCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 516536) -RRSWRXykCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 455422) -RRSWRXykCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 490342) -RRSWRXykCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 448959) -RRSWRXykCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 305323) -RRSWRXykCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 495370) -RRSWRXykCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 434446) -RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 537050) -RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 472904) -RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 342979) -RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 412771) -RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 349599) -RRSWRXykCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 523545) -RRSWRXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 457677) -RRSWRXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 321888) -RRSWRXykCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 391261) -RRSWRXykCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 328267) -RRSXykCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 426267) -RRSXykCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 398361) -RRSXykCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 265905) -RRSXykCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 451124) -RRSXykCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 389634) -RRSXykCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 400254) -RRSXykCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 374791) -RRSXykCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 238236) -RRSXykCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 423523) -RRSXykCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 362010) -RRSXykCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 459425) -RRSXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 407221) -RRSXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 282440) -RRSXykCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 347314) -RRSXykCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 283766) -RRSXykCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 433412) -RRSXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 383479) -RRSXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 254771) -RRSXykCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 319369) -RRSXykCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 255786) -RSPExponentialCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 189353) -RSPExponentialCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38089) -RSPExponentialCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49954) -RSPExponentialCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 48757) -RSPExponentialCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44862) -RSPExponentialCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 525884) -RSPExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 416274) -RSPExponentialCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 198136) -RSPExponentialCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 209712) -RSPExponentialCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 177011) -RSPExponentialCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 161784) -RSPExponentialCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 182547) -RSPExponentialCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 353583) -RSPExponentialCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 411287) -RSPExponentialCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 161659) -RSPExponentialCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38040) -RSPExponentialCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 76501) -RSPExponentialCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 58429) -RSPExponentialCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 60300) -RSPExponentialCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 523414) -RSPExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 389008) -RSPExponentialCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 193164) -RSPExponentialCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 203943) -RSPExponentialCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 149317) -RSPExponentialCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 140331) -RSPExponentialCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 161508) -RSPExponentialCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 332578) -RSPExponentialCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 390745) -RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 178178) -RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38089) -RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49857) -RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 48748) -RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44862) -RSPExponentialCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 548009) -RSPExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 438423) -RSPExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 171352) -RSPExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 198281) -RSPExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 175436) -RSPExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 137380) -RSPExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 147991) -RSPExponentialCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 215146) -RSPExponentialCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 267623) -RSPExponentialCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 150484) -RSPExponentialCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38040) -RSPExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 76404) -RSPExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 58429) -RSPExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 60300) -RSPExponentialCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 545539) -RSPExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 411157) -RSPExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 166239) -RSPExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 192340) -RSPExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 147742) -RSPExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 115749) -RSPExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 126780) -RSPExponentialCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 193964) -RSPExponentialCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 246909) -RSPLinearCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 185189) -RSPLinearCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37993) -RSPLinearCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49223) -RSPLinearCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 48755) -RSPLinearCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44860) -RSPLinearCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 516264) -RSPLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 411212) -RSPLinearCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 194880) -RSPLinearCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 204942) -RSPLinearCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 172847) -RSPLinearCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 157810) -RSPLinearCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 178573) -RSPLinearCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 348711) -RSPLinearCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 406415) -RSPLinearCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 157495) -RSPLinearCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37944) -RSPLinearCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 75039) -RSPLinearCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 58427) -RSPLinearCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 60298) -RSPLinearCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 513794) -RSPLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 383946) -RSPLinearCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 189908) -RSPLinearCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 200326) -RSPLinearCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 145153) -RSPLinearCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 136356) -RSPLinearCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 157533) -RSPLinearCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 327256) -RSPLinearCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 385423) -RSPLinearCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 174014) -RSPLinearCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37993) -RSPLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49126) -RSPLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 48746) -RSPLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44860) -RSPLinearCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 538389) -RSPLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 433361) -RSPLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 168097) -RSPLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 191412) -RSPLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 171272) -RSPLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 133406) -RSPLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 144017) -RSPLinearCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 210274) -RSPLinearCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 262751) -RSPLinearCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 146320) -RSPLinearCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37944) -RSPLinearCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 74942) -RSPLinearCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 58427) -RSPLinearCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 60298) -RSPLinearCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 535919) -RSPLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 406095) -RSPLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 162983) -RSPLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 188270) -RSPLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 143578) -RSPLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 111774) -RSPLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 122805) -RSPLinearCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 188642) -RSPLinearCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 241587) -RSPWARExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 411844) -RSPWARExponentialCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 252824) -RSPWARExponentialCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 251075) -RSPWARExponentialCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 191840) -RSPWARExponentialCurveEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 201680) -RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 162113) -RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 210781) -RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 182986) -RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 231612) -RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 353917) -RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 411554) -RSPWARExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 403843) -RSPWARExponentialCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 266967) -RSPWARExponentialCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 265673) -RSPWARExponentialCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 183399) -RSPWARExponentialCurveEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 171009) -RSPWARExponentialCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 168468) -RSPWARExponentialCurveEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 202279) -RSPWARExponentialCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 189743) -RSPWARExponentialCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 223545) -RSPWARExponentialCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 360720) -RSPWARExponentialCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 418808) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 226447) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 216921) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 217126) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 151439) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 170225) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 137709) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 186377) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 148430) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 197056) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 215480) -RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 267890) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 218446) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 230886) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 231552) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 142998) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 139554) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 143886) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 177697) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 155015) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 188817) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 222106) -RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 274972) -RSPWARLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 406782) -RSPWARLinearCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 241982) -RSPWARLinearCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 240233) -RSPWARLinearCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 187676) -RSPWARLinearCurveEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 197516) -RSPWARLinearCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 158139) -RSPWARLinearCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 206807) -RSPWARLinearCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 179012) -RSPWARLinearCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 227638) -RSPWARLinearCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 349045) -RSPWARLinearCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 406682) -RSPWARLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 398781) -RSPWARLinearCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 258924) -RSPWARLinearCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 257630) -RSPWARLinearCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 179235) -RSPWARLinearCurveEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 166845) -RSPWARLinearCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 164493) -RSPWARLinearCurveEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 198304) -RSPWARLinearCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 185768) -RSPWARLinearCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 219570) -RSPWARLinearCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 355398) -RSPWARLinearCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 413486) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 221385) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 206079) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 206284) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 147275) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 166061) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 133735) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 182403) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 144456) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 193082) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 210608) -RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 263018) -RSPWARLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 213384) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 222843) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 223509) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 138834) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 135390) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 139911) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 173722) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 151040) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 184842) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 216784) -RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 269650) -RSPWARXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 411115) -RSPWARXykCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 253638) -RSPWARXykCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 251889) -RSPWARXykCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 192009) -RSPWARXykCurveEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 201849) -RSPWARXykCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 162308) -RSPWARXykCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 210976) -RSPWARXykCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 183181) -RSPWARXykCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 231807) -RSPWARXykCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 353214) -RSPWARXykCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 410851) -RSPWARXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 403114) -RSPWARXykCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 267344) -RSPWARXykCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 266050) -RSPWARXykCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 183568) -RSPWARXykCurveEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 171178) -RSPWARXykCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 168226) -RSPWARXykCurveEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 202037) -RSPWARXykCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 189501) -RSPWARXykCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 223303) -RSPWARXykCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 359131) -RSPWARXykCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 417219) -RSPWARXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 225718) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 217735) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 217940) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 151608) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 170394) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 137904) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 186572) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 148625) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 197251) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 214777) -RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 267187) -RSPWARXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 217717) -RSPWARXykCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 231263) -RSPWARXykCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 231929) -RSPWARXykCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 143167) -RSPWARXykCurveMissingEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 139723) -RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 143644) -RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 177455) -RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 154773) -RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 188575) -RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 220517) -RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 273383) -RSPWRExponentialCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 261965) -RSPWRExponentialCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38239) -RSPWRExponentialCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 50254) -RSPWRExponentialCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 214062) -RSPWRExponentialCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 239656) -RSPWRExponentialCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 652767) -RSPWRExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 471997) -RSPWRExponentialCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 278293) -RSPWRExponentialCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 289891) -RSPWRExponentialCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 232750) -RSPWRExponentialCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 210029) -RSPWRExponentialCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 230736) -RSPWRExponentialCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 401654) -RSPWRExponentialCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 459274) -RSPWRExponentialCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 223831) -RSPWRExponentialCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38190) -RSPWRExponentialCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 76656) -RSPWRExponentialCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 197585) -RSPWRExponentialCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 223403) -RSPWRExponentialCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 680225) -RSPWRExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 451225) -RSPWRExponentialCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 275917) -RSPWRExponentialCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 291588) -RSPWRExponentialCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 211544) -RSPWRExponentialCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 193224) -RSPWRExponentialCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 214147) -RSPWRExponentialCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 385286) -RSPWRExponentialCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 443199) -RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 250805) -RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38239) -RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 50157) -RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 194473) -RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 205115) -RSPWRExponentialCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 674967) -RSPWRExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 494161) -RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 251534) -RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 278490) -RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 231190) -RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 185640) -RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 196195) -RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 263232) -RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 315625) -RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 212671) -RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38190) -RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 76559) -RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 177818) -RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 188690) -RSPWRExponentialCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 702425) -RSPWRExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 473389) -RSPWRExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 244290) -RSPWRExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 280015) -RSPWRExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 209984) -RSPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 168657) -RSPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 179434) -RSPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 246687) -RSPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 299378) -RSPWRLinearCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 257801) -RSPWRLinearCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38143) -RSPWRLinearCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49523) -RSPWRLinearCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 210088) -RSPWRLinearCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 235682) -RSPWRLinearCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 643147) -RSPWRLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 466935) -RSPWRLinearCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 274960) -RSPWRLinearCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 284928) -RSPWRLinearCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 228586) -RSPWRLinearCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 206055) -RSPWRLinearCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 226762) -RSPWRLinearCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 396782) -RSPWRLinearCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 454402) -RSPWRLinearCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 219667) -RSPWRLinearCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38094) -RSPWRLinearCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 75194) -RSPWRLinearCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 193610) -RSPWRLinearCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 219428) -RSPWRLinearCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 670605) -RSPWRLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 446163) -RSPWRLinearCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 271750) -RSPWRLinearCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 287421) -RSPWRLinearCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 207380) -RSPWRLinearCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 189249) -RSPWRLinearCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 210172) -RSPWRLinearCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 379964) -RSPWRLinearCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 437877) -RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 246641) -RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38143) -RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49426) -RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 190499) -RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 201141) -RSPWRLinearCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 665347) -RSPWRLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 489099) -RSPWRLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 248201) -RSPWRLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 271524) -RSPWRLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 227026) -RSPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 181666) -RSPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 192221) -RSPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 258360) -RSPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 310753) -RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 208507) -RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38094) -RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 75097) -RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 173843) -RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 184715) -RSPWRLinearCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 692805) -RSPWRLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 468327) -RSPWRLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 240123) -RSPWRLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 275848) -RSPWRLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 205820) -RSPWRLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 164682) -RSPWRLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 175459) -RSPWRLinearCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 241365) -RSPWRLinearCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 294056) -RSPWRXykCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 262134) -RSPWRXykCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37789) -RSPWRXykCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 48368) -RSPWRXykCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 214257) -RSPWRXykCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 239851) -RSPWRXykCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 653612) -RSPWRXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 471268) -RSPWRXykCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 279522) -RSPWRXykCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 289489) -RSPWRXykCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 232919) -RSPWRXykCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 210224) -RSPWRXykCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 230931) -RSPWRXykCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 400951) -RSPWRXykCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 458571) -RSPWRXykCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 224000) -RSPWRXykCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37740) -RSPWRXykCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 58320) -RSPWRXykCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 197343) -RSPWRXykCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 223161) -RSPWRXykCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 681070) -RSPWRXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 450496) -RSPWRXykCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 274216) -RSPWRXykCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 289887) -RSPWRXykCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 211713) -RSPWRXykCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 192982) -RSPWRXykCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 213905) -RSPWRXykCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 383697) -RSPWRXykCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 441610) -RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 250974) -RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37789) -RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 48271) -RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 194668) -RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 205310) -RSPWRXykCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 675812) -RSPWRXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 493432) -RSPWRXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 252763) -RSPWRXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 274426) -RSPWRXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 231359) -RSPWRXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 185835) -RSPWRXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 196390) -RSPWRXykCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 262529) -RSPWRXykCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 314922) -RSPWRXykCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 212840) -RSPWRXykCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37740) -RSPWRXykCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 58232) -RSPWRXykCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 177576) -RSPWRXykCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 188448) -RSPWRXykCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 703270) -RSPWRXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 472660) -RSPWRXykCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 242589) -RSPWRXykCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 278314) -RSPWRXykCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 210153) -RSPWRXykCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 168415) -RSPWRXykCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 179192) -RSPWRXykCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 245098) -RSPWRXykCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 297789) -RSPXykCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 189522) -RSPXykCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37639) -RSPXykCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 48068) -RSPXykCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 47883) -RSPXykCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 43988) -RSPXykCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 526729) -RSPXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 415545) -RSPXykCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 200074) -RSPXykCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 210136) -RSPXykCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 177180) -RSPXykCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 161979) -RSPXykCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 182742) -RSPXykCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 352880) -RSPXykCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 410584) -RSPXykCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 161828) -RSPXykCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37590) -RSPXykCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 58063) -RSPXykCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 57555) -RSPXykCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 59426) -RSPXykCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 524259) -RSPXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 388279) -RSPXykCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 194753) -RSPXykCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 205171) -RSPXykCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 149486) -RSPXykCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 140089) -RSPXykCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 161266) -RSPXykCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 330989) -RSPXykCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 389156) -RSPXykCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 178347) -RSPXykCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37639) -RSPXykCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 47971) -RSPXykCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 47874) -RSPXykCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 43988) -RSPXykCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 548854) -RSPXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 437694) -RSPXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 173291) -RSPXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 195104) -RSPXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 175605) -RSPXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 137575) -RSPXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 148186) -RSPXykCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 214443) -RSPXykCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 266920) -RSPXykCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 150653) -RSPXykCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37590) -RSPXykCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 57975) -RSPXykCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 57555) -RSPXykCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 59426) -RSPXykCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 546384) -RSPXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 410428) -RSPXykCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 167828) -RSPXykCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 191526) -RSPXykCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 147911) -RSPXykCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 115507) -RSPXykCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 126538) -RSPXykCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 192375) -RSPXykCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 245320) +PAFXykCurveMissingEnumerableETHTest:test_withdraw1155() (gas: 61564) +PAFXykCurveMissingEnumerableETHTest:test_withdrawFees() (gas: 149099) +RMPExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 527424) +RMPExponentialCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 633457) +RMPExponentialCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 625006) +RMPExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 529644) +RMPExponentialCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 604943) +RMPExponentialCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 598627) +RMPExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 618101) +RMPExponentialCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 405155) +RMPExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 406210) +RMPExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 620321) +RMPExponentialCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 381632) +RMPExponentialCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 384419) +RMPLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 506664) +RMPLinearCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 613557) +RMPLinearCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 605106) +RMPLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 508884) +RMPLinearCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 585023) +RMPLinearCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 578707) +RMPLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 597341) +RMPLinearCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 389235) +RMPLinearCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 390290) +RMPLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 599561) +RMPLinearCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 365696) +RMPLinearCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 368483) +RMPWRExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 654981) +RMPWRExponentialCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 731469) +RMPWRExponentialCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 722337) +RMPWRExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 686949) +RMPWRExponentialCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 715769) +RMPWRExponentialCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 707732) +RMPWRExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 745644) +RMPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 499796) +RMPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 500434) +RMPWRExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 777701) +RMPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 483206) +RMPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 484969) +RMPWRLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 638373) +RMPWRLinearCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 711569) +RMPWRLinearCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 702437) +RMPWRLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 666189) +RMPWRLinearCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 695849) +RMPWRLinearCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 687812) +RMPWRLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 724884) +RMPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 479896) +RMPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 480534) +RMPWRLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 756941) +RMPWRLinearCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 463286) +RMPWRLinearCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 465049) +RMPWRXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 679847) +RMPWRXykCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 732554) +RMPWRXykCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 723422) +RMPWRXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 687904) +RMPWRXykCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 714724) +RMPWRXykCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 706687) +RMPWRXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 770599) +RMPWRXykCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 500881) +RMPWRXykCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 501519) +RMPWRXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 778656) +RMPWRXykCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 482161) +RMPWRXykCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 483924) +RMPXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 552379) +RMPXykCurveEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 634542) +RMPXykCurveEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 626091) +RMPXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 530599) +RMPXykCurveEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 603898) +RMPXykCurveEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 597582) +RMPXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 643056) +RMPXykCurveMissingEnumerableERC20Test:test_swapTokenForAny5NFTs() (gas: 406023) +RMPXykCurveMissingEnumerableERC20Test:test_swapTokenForSpecific5NFTs() (gas: 407078) +RMPXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 621276) +RMPXykCurveMissingEnumerableETHTest:test_swapTokenForAny5NFTs() (gas: 380796) +RMPXykCurveMissingEnumerableETHTest:test_swapTokenForSpecific5NFTs() (gas: 383583) +RRSExponentialCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 420193) +RRSExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 387543) +RRSExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 263231) +RRSExponentialCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 437023) +RRSExponentialCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 375592) +RRSExponentialCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 394136) +RRSExponentialCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 363896) +RRSExponentialCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 235536) +RRSExponentialCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 409314) +RRSExponentialCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 347868) +RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 453327) +RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 396335) +RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 279754) +RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 333101) +RRSExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 269612) +RRSExponentialCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 427270) +RRSExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 372516) +RRSExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 252059) +RRSExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 305048) +RRSExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 241532) +RRSLinearCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 409897) +RRSLinearCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 381813) +RRSLinearCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 257915) +RRSLinearCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 435273) +RRSLinearCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 373842) +RRSLinearCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 383840) +RRSLinearCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 358166) +RRSLinearCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 230220) +RRSLinearCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 407564) +RRSLinearCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 346118) +RRSLinearCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 443031) +RRSLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 390605) +RRSLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 274438) +RRSLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 331351) +RRSLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 267862) +RRSLinearCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 416974) +RRSLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 366786) +RRSLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 246743) +RRSLinearCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 303298) +RRSLinearCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 239782) +RRSWARExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 167661) +RRSWARExponentialCurveEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 193573) +RRSWARExponentialCurveEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 194804) +RRSWARExponentialCurveEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 163967) +RRSWARExponentialCurveEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 201112) +RRSWARExponentialCurveEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 202311) +RRSWARExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 133356) +RRSWARExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 147241) +RRSWARExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 150426) +RRSWARExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 129662) +RRSWARExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 154602) +RRSWARExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 157761) +RRSWARLinearCurveEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 163329) +RRSWARLinearCurveEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 189585) +RRSWARLinearCurveEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 190816) +RRSWARLinearCurveEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 159635) +RRSWARLinearCurveEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 197124) +RRSWARLinearCurveEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 198323) +RRSWARLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 129024) +RRSWARLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 143253) +RRSWARLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 146438) +RRSWARLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 125330) +RRSWARLinearCurveMissingEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 150614) +RRSWARLinearCurveMissingEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 153773) +RRSWARXykCurveEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 171774) +RRSWARXykCurveEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 192938) +RRSWARXykCurveEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 194169) +RRSWARXykCurveEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 163280) +RRSWARXykCurveEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 200477) +RRSWARXykCurveEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 201676) +RRSWARXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForToken() (gas: 137469) +RRSWARXykCurveMissingEnumerableERC20Test:test_robustSwapTokenForAnyNFTs() (gas: 146606) +RRSWARXykCurveMissingEnumerableERC20Test:test_robustSwapTokenForSpecificNFTs() (gas: 149791) +RRSWARXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForToken() (gas: 128975) +RRSWARXykCurveMissingEnumerableETHTest:test_robustSwapTokenForAnyNFTs() (gas: 153967) +RRSWARXykCurveMissingEnumerableETHTest:test_robustSwapTokenForSpecificNFTs() (gas: 157126) +RRSWRExponentialCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 497878) +RRSWRExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 453266) +RRSWRExponentialCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 323787) +RRSWRExponentialCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 502502) +RRSWRExponentialCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 441452) +RRSWRExponentialCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 484276) +RRSWRExponentialCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 438106) +RRSWRExponentialCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 302635) +RRSWRExponentialCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 481185) +RRSWRExponentialCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 420350) +RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 531057) +RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 462088) +RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 340340) +RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 398625) +RRSWRExponentialCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 335517) +RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 517455) +RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 446756) +RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 319188) +RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 376964) +RRSWRExponentialCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 314059) +RRSWRLinearCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 487582) +RRSWRLinearCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 447536) +RRSWRLinearCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 318471) +RRSWRLinearCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 500752) +RRSWRLinearCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 439702) +RRSWRLinearCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 473980) +RRSWRLinearCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 432376) +RRSWRLinearCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 297319) +RRSWRLinearCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 479435) +RRSWRLinearCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 418600) +RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 520761) +RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 456358) +RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 335024) +RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 396875) +RRSWRLinearCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 333767) +RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 507159) +RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 441026) +RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 313872) +RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 375214) +RRSWRLinearCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 312309) +RRSWRXykCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 495221) +RRSWRXykCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 455305) +RRSWRXykCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 322116) +RRSWRXykCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 507880) +RRSWRXykCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 446830) +RRSWRXykCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 481619) +RRSWRXykCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 440145) +RRSWRXykCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 300964) +RRSWRXykCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 486563) +RRSWRXykCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 425728) +RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 528400) +RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 464127) +RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 338669) +RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 404003) +RRSWRXykCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 340895) +RRSWRXykCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 514798) +RRSWRXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 448795) +RRSWRXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 317517) +RRSWRXykCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 382342) +RRSWRXykCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 319437) +RRSXykCurveEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 417536) +RRSXykCurveEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 389582) +RRSXykCurveEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 261560) +RRSXykCurveEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 442401) +RRSXykCurveEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 380970) +RRSXykCurveEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 391479) +RRSXykCurveEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 365935) +RRSXykCurveEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 233865) +RRSXykCurveEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 414692) +RRSXykCurveEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 353246) +RRSXykCurveMissingEnumerableERC20Test:test_robustSwap2NFTsForToken() (gas: 450670) +RRSXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 398374) +RRSXykCurveMissingEnumerableERC20Test:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 278083) +RRSXykCurveMissingEnumerableERC20Test:test_robustSwapTokenFor2SpecificNFTs() (gas: 338479) +RRSXykCurveMissingEnumerableERC20Test:test_robustSwapTokenForAny2NFTs() (gas: 274990) +RRSXykCurveMissingEnumerableETHTest:test_robustSwap2NFTsForToken() (gas: 424613) +RRSXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenAndTokenForNFTs() (gas: 374555) +RRSXykCurveMissingEnumerableETHTest:test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 250388) +RRSXykCurveMissingEnumerableETHTest:test_robustSwapTokenFor2SpecificNFTs() (gas: 310426) +RRSXykCurveMissingEnumerableETHTest:test_robustSwapTokenForAny2NFTs() (gas: 246910) +RSPExponentialCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 187169) +RSPExponentialCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38111) +RSPExponentialCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49936) +RSPExponentialCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 48803) +RSPExponentialCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44898) +RSPExponentialCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 514939) +RSPExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 405050) +RSPExponentialCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 194643) +RSPExponentialCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 205331) +RSPExponentialCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 174822) +RSPExponentialCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 159632) +RSPExponentialCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 180377) +RSPExponentialCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 342351) +RSPExponentialCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 400037) +RSPExponentialCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 159450) +RSPExponentialCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38055) +RSPExponentialCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 76392) +RSPExponentialCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 58422) +RSPExponentialCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 60322) +RSPExponentialCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 512344) +RSPExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 377759) +RSPExponentialCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 189594) +RSPExponentialCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 200016) +RSPExponentialCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 147103) +RSPExponentialCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 138095) +RSPExponentialCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 159293) +RSPExponentialCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 321230) +RSPExponentialCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 379418) +RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 175988) +RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38111) +RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49839) +RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 48794) +RSPExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44898) +RSPExponentialCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 537034) +RSPExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 427169) +RSPExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 167832) +RSPExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 193866) +RSPExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 173241) +RSPExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 135200) +RSPExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 145793) +RSPExponentialCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 203774) +RSPExponentialCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 256233) +RSPExponentialCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 148269) +RSPExponentialCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38055) +RSPExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 76295) +RSPExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 58422) +RSPExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 60322) +RSPExponentialCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 534439) +RSPExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 399878) +RSPExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 162641) +RSPExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 187848) +RSPExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 145522) +RSPExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 113485) +RSPExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 124537) +RSPExponentialCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 182476) +RSPExponentialCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 235442) +RSPLinearCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 183017) +RSPLinearCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38021) +RSPLinearCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49259) +RSPLinearCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 48795) +RSPLinearCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44890) +RSPLinearCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 505379) +RSPLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 400064) +RSPLinearCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 191390) +RSPLinearCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 201440) +RSPLinearCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 170670) +RSPLinearCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 155652) +RSPLinearCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 176397) +RSPLinearCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 337537) +RSPLinearCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 395223) +RSPLinearCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 155298) +RSPLinearCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37965) +RSPLinearCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 75038) +RSPLinearCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 58414) +RSPLinearCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 60314) +RSPLinearCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 502784) +RSPLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 372773) +RSPLinearCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 186338) +RSPLinearCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 196760) +RSPLinearCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 142951) +RSPLinearCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 134111) +RSPLinearCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 155309) +RSPLinearCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 315995) +RSPLinearCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 374183) +RSPLinearCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 171836) +RSPLinearCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38021) +RSPLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49162) +RSPLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 48786) +RSPLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44890) +RSPLinearCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 527474) +RSPLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 422183) +RSPLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 164580) +RSPLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 187000) +RSPLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 169089) +RSPLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 131220) +RSPLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 141813) +RSPLinearCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 198960) +RSPLinearCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 251419) +RSPLinearCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 144117) +RSPLinearCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37965) +RSPLinearCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 74941) +RSPLinearCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 58414) +RSPLinearCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 60314) +RSPLinearCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 524879) +RSPLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 394892) +RSPLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 159385) +RSPLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 183778) +RSPLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 141370) +RSPLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 109501) +RSPLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 120553) +RSPLinearCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 178220) +RSPLinearCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 230207) +RSPWARExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 400674) +RSPWARExponentialCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 248468) +RSPWARExponentialCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 246690) +RSPWARExponentialCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 189649) +RSPWARExponentialCurveEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 199522) +RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 159961) +RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 208658) +RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 180802) +RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 229457) +RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 342685) +RSPWARExponentialCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 400290) +RSPWARExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 392672) +RSPWARExponentialCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 262546) +RSPWARExponentialCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 261258) +RSPWARExponentialCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 181207) +RSPWARExponentialCurveEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 168841) +RSPWARExponentialCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 166240) +RSPWARExponentialCurveEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 200080) +RSPWARExponentialCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 187537) +RSPWARExponentialCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 221368) +RSPWARExponentialCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 349380) +RSPWARExponentialCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 407490) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 215247) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 212531) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 212707) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 149242) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 168061) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 135529) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 184226) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 146218) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 194873) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 204108) +RSPWARExponentialCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 256486) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 207245) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 226431) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 227103) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 140800) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 137380) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 141630) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 175470) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 152781) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 186612) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 210626) +RSPWARExponentialCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 263514) +RSPWARLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 395688) +RSPWARLinearCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 237626) +RSPWARLinearCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 235848) +RSPWARLinearCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 185497) +RSPWARLinearCurveEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 195370) +RSPWARLinearCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 155981) +RSPWARLinearCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 204678) +RSPWARLinearCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 176822) +RSPWARLinearCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 225477) +RSPWARLinearCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 337871) +RSPWARLinearCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 395476) +RSPWARLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 387686) +RSPWARLinearCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 254500) +RSPWARLinearCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 253212) +RSPWARLinearCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 177055) +RSPWARLinearCurveEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 164689) +RSPWARLinearCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 162256) +RSPWARLinearCurveEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 196096) +RSPWARLinearCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 183553) +RSPWARLinearCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 217384) +RSPWARLinearCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 344145) +RSPWARLinearCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 402255) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 210261) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 201689) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 201865) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 145090) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 163909) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 131549) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 180246) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 142238) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 190893) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 199294) +RSPWARLinearCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 251672) +RSPWARLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 202259) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 218385) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 219057) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 136648) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 133228) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 137646) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 171486) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 148797) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 182628) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 205391) +RSPWARLinearCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 258279) +RSPWARXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 400031) +RSPWARXykCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 249315) +RSPWARXykCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 247537) +RSPWARXykCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 189840) +RSPWARXykCurveEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 199713) +RSPWARXykCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 160178) +RSPWARXykCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 208875) +RSPWARXykCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 181019) +RSPWARXykCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 229674) +RSPWARXykCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 342068) +RSPWARXykCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 399673) +RSPWARXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 392029) +RSPWARXykCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 262967) +RSPWARXykCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 261679) +RSPWARXykCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 181398) +RSPWARXykCurveEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 169032) +RSPWARXykCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 166031) +RSPWARXykCurveEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 199871) +RSPWARXykCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 187328) +RSPWARXykCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 221159) +RSPWARXykCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 347920) +RSPWARXykCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 406030) +RSPWARXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 214604) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 213378) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 213554) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 149433) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForTokenWithProtocolFee() (gas: 168252) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 135746) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 184443) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 146435) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 195090) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 203491) +RSPWARXykCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 255869) +RSPWARXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 206602) +RSPWARXykCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 226852) +RSPWARXykCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 227524) +RSPWARXykCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 140991) +RSPWARXykCurveMissingEnumerableETHTest:test_swapSingleNFTForTokenWithProtocolFee() (gas: 137571) +RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 141421) +RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 175261) +RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 152572) +RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 186403) +RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 209166) +RSPWARXykCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 262054) +RSPWRExponentialCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 259809) +RSPWRExponentialCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38261) +RSPWRExponentialCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 50240) +RSPWRExponentialCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 211937) +RSPWRExponentialCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 237502) +RSPWRExponentialCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 641987) +RSPWRExponentialCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 460798) +RSPWRExponentialCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 274867) +RSPWRExponentialCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 285579) +RSPWRExponentialCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 230589) +RSPWRExponentialCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 207898) +RSPWRExponentialCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 228576) +RSPWRExponentialCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 390443) +RSPWRExponentialCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 448031) +RSPWRExponentialCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 221639) +RSPWRExponentialCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38212) +RSPWRExponentialCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 76604) +RSPWRExponentialCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 195405) +RSPWRExponentialCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 221194) +RSPWRExponentialCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 669265) +RSPWRExponentialCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 439990) +RSPWRExponentialCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 271554) +RSPWRExponentialCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 287193) +RSPWRExponentialCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 209347) +RSPWRExponentialCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 191049) +RSPWRExponentialCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 211940) +RSPWRExponentialCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 373999) +RSPWRExponentialCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 431880) +RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 248643) +RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38261) +RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 50143) +RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 192320) +RSPWRExponentialCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 202933) +RSPWRExponentialCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 664157) +RSPWRExponentialCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 482932) +RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 248080) +RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 274144) +RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 229023) +RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 183481) +RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 194007) +RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 251881) +RSPWRExponentialCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 304242) +RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 210473) +RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38212) +RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 76507) +RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 175610) +RSPWRExponentialCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 186453) +RSPWRExponentialCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 691435) +RSPWRExponentialCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 462124) +RSPWRExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 239893) +RSPWRExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 275586) +RSPWRExponentialCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 207781) +RSPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 166454) +RSPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 177199) +RSPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 235260) +RSPWRExponentialCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 287919) +RSPWRLinearCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 255657) +RSPWRLinearCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38171) +RSPWRLinearCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49563) +RSPWRLinearCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 207957) +RSPWRLinearCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 233522) +RSPWRLinearCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 632427) +RSPWRLinearCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 455812) +RSPWRLinearCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 271539) +RSPWRLinearCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 281483) +RSPWRLinearCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 226437) +RSPWRLinearCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 203918) +RSPWRLinearCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 224596) +RSPWRLinearCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 385629) +RSPWRLinearCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 443217) +RSPWRLinearCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 217487) +RSPWRLinearCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38122) +RSPWRLinearCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 75250) +RSPWRLinearCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 191421) +RSPWRLinearCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 217210) +RSPWRLinearCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 659705) +RSPWRLinearCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 435004) +RSPWRLinearCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 267390) +RSPWRLinearCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 283029) +RSPWRLinearCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 205195) +RSPWRLinearCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 187065) +RSPWRLinearCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 207956) +RSPWRLinearCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 368764) +RSPWRLinearCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 426645) +RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 244491) +RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38171) +RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 49466) +RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 188340) +RSPWRLinearCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 198953) +RSPWRLinearCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 654597) +RSPWRLinearCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 477946) +RSPWRLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 244752) +RSPWRLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 267184) +RSPWRLinearCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 224871) +RSPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 179501) +RSPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 190027) +RSPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 247067) +RSPWRLinearCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 299428) +RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 206321) +RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 38122) +RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 75153) +RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 171626) +RSPWRLinearCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 182469) +RSPWRLinearCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 681875) +RSPWRLinearCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 457138) +RSPWRLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 235729) +RSPWRLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 271422) +RSPWRLinearCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 203629) +RSPWRLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 162470) +RSPWRLinearCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 173215) +RSPWRLinearCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 230025) +RSPWRLinearCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 282684) +RSPWRXykCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 260000) +RSPWRXykCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37822) +RSPWRXykCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 48392) +RSPWRXykCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 212154) +RSPWRXykCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 237719) +RSPWRXykCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 642942) +RSPWRXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 460155) +RSPWRXykCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 276131) +RSPWRXykCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 286075) +RSPWRXykCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 230780) +RSPWRXykCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 208115) +RSPWRXykCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 228793) +RSPWRXykCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 389826) +RSPWRXykCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 447414) +RSPWRXykCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 221830) +RSPWRXykCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37773) +RSPWRXykCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 58344) +RSPWRXykCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 195196) +RSPWRXykCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 220985) +RSPWRXykCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 670220) +RSPWRXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 439347) +RSPWRXykCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 269908) +RSPWRXykCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 285547) +RSPWRXykCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 209538) +RSPWRXykCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 190840) +RSPWRXykCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 211731) +RSPWRXykCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 372539) +RSPWRXykCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 430420) +RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 248834) +RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37822) +RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 48295) +RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 192537) +RSPWRXykCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 203150) +RSPWRXykCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 665112) +RSPWRXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 482289) +RSPWRXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 249344) +RSPWRXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 270124) +RSPWRXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 229214) +RSPWRXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 183698) +RSPWRXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 194224) +RSPWRXykCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 251264) +RSPWRXykCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 303625) +RSPWRXykCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 210664) +RSPWRXykCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37773) +RSPWRXykCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 58256) +RSPWRXykCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 175401) +RSPWRXykCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 186244) +RSPWRXykCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 692390) +RSPWRXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 461481) +RSPWRXykCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 238247) +RSPWRXykCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 273940) +RSPWRXykCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 207972) +RSPWRXykCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 166245) +RSPWRXykCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 176990) +RSPWRXykCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 233800) +RSPWRXykCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 286459) +RSPXykCurveEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 187360) +RSPXykCurveEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37672) +RSPXykCurveEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 48088) +RSPXykCurveEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 47951) +RSPXykCurveEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44046) +RSPXykCurveEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 515894) +RSPXykCurveEnumerableERC20Test:test_swap5NFTsForToken() (gas: 404407) +RSPXykCurveEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 196599) +RSPXykCurveEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 206648) +RSPXykCurveEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 175013) +RSPXykCurveEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 159849) +RSPXykCurveEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 180594) +RSPXykCurveEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 341734) +RSPXykCurveEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 399420) +RSPXykCurveEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 159641) +RSPXykCurveEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37616) +RSPXykCurveEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 58030) +RSPXykCurveEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 57570) +RSPXykCurveEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 59470) +RSPXykCurveEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 513299) +RSPXykCurveEnumerableETHTest:test_swap5NFTsForToken() (gas: 377116) +RSPXykCurveEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 191209) +RSPXykCurveEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 201631) +RSPXykCurveEnumerableETHTest:test_swapSingleNFTForToken() (gas: 147294) +RSPXykCurveEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 137886) +RSPXykCurveEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 159084) +RSPXykCurveEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 319770) +RSPXykCurveEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 377958) +RSPXykCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForNonexistentToken() (gas: 176179) +RSPXykCurveMissingEnumerableERC20Test:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37672) +RSPXykCurveMissingEnumerableERC20Test:testFail_swapTokenForAnyNFTsPastBalance() (gas: 47991) +RSPXykCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 47942) +RSPXykCurveMissingEnumerableERC20Test:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 44046) +RSPXykCurveMissingEnumerableERC20Test:testGas_swapSingleNFTForToken5Times() (gas: 537989) +RSPXykCurveMissingEnumerableERC20Test:test_swap5NFTsForToken() (gas: 426526) +RSPXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForAnyNFT() (gas: 169788) +RSPXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForSpecificNFT() (gas: 190711) +RSPXykCurveMissingEnumerableERC20Test:test_swapSingleNFTForToken() (gas: 173432) +RSPXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleAnyNFT() (gas: 135417) +RSPXykCurveMissingEnumerableERC20Test:test_swapTokenForSingleSpecificNFT() (gas: 146010) +RSPXykCurveMissingEnumerableERC20Test:test_swapTokenforAny5NFTs() (gas: 203157) +RSPXykCurveMissingEnumerableERC20Test:test_swapTokenforSpecific5NFTs() (gas: 255616) +RSPXykCurveMissingEnumerableETHTest:testFail_swapSingleNFTForNonexistentToken() (gas: 148460) +RSPXykCurveMissingEnumerableETHTest:testFail_swapSingleNFTForTokenWithEmptyList() (gas: 37616) +RSPXykCurveMissingEnumerableETHTest:testFail_swapTokenForAnyNFTsPastBalance() (gas: 57942) +RSPXykCurveMissingEnumerableETHTest:testFail_swapTokenForSingleAnyNFTSlippage() (gas: 57570) +RSPXykCurveMissingEnumerableETHTest:testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 59470) +RSPXykCurveMissingEnumerableETHTest:testGas_swapSingleNFTForToken5Times() (gas: 535394) +RSPXykCurveMissingEnumerableETHTest:test_swap5NFTsForToken() (gas: 399235) +RSPXykCurveMissingEnumerableETHTest:test_swapSingleNFTForAnyNFT() (gas: 164256) +RSPXykCurveMissingEnumerableETHTest:test_swapSingleNFTForSpecificNFT() (gas: 187067) +RSPXykCurveMissingEnumerableETHTest:test_swapSingleNFTForToken() (gas: 145713) +RSPXykCurveMissingEnumerableETHTest:test_swapTokenForSingleAnyNFT() (gas: 113276) +RSPXykCurveMissingEnumerableETHTest:test_swapTokenForSingleSpecificNFT() (gas: 124328) +RSPXykCurveMissingEnumerableETHTest:test_swapTokenforAny5NFTs() (gas: 181240) +RSPXykCurveMissingEnumerableETHTest:test_swapTokenforSpecific5NFTs() (gas: 233982) diff --git a/Makefile b/Makefile index 3b9fa64..6b2e56f 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,8 @@ install: update npm solc # deps -update:; forge update +update:; forge update && \ + cd lib/solmate && git checkout v6 && cd - # fix solmate version issue # npm deps for linting etc. npm:; yarn install From 514200d14f99329efbb0bed86bb1dece446ecd16 Mon Sep 17 00:00:00 2001 From: bbist Date: Mon, 7 Nov 2022 21:08:10 +0545 Subject: [PATCH 02/19] handle deployment using forge --- scripts/common.sh | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/scripts/common.sh b/scripts/common.sh index e492a33..d8ce73e 100644 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -53,9 +53,44 @@ cat >"$ADDRESSES_FILE" < deploy ContractName arg1 arg2 arg3` # (or omit the env vars if you have already set them) -deploy() { +_deploy() { NAME=$1 ARGS=${@:2} From 770d291634fc0fe5563137584ab0344fd2390979 Mon Sep 17 00:00:00 2001 From: bbist Date: Mon, 7 Nov 2022 21:08:48 +0545 Subject: [PATCH 03/19] ignore private files --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5def89a..b5b45c8 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,6 @@ out/ .env # Forge -cache/ \ No newline at end of file +cache/ + +password.txt \ No newline at end of file From 6f5bc8fe15c0a40dc7605aebb1c13e768977ec89 Mon Sep 17 00:00:00 2001 From: bbist Date: Mon, 7 Nov 2022 21:12:43 +0545 Subject: [PATCH 04/19] add a custom .env.local for local deployment and testing --- .env.local | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .env.local diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..765c214 --- /dev/null +++ b/.env.local @@ -0,0 +1,10 @@ +export ETH_RPC_URL=http://127.0.0.1:8545 +export ETH_FROM=[YOUR_ADDRESS_IN_KEYSTORE] +export ADMIN=[ADDRESS_FOR_ADMIN_ACCESS] +export PROTOCOL_FEE_RECIPIENT=[PROTOCOL_FEE_RECIPIENT_ADDRESS] +export PROTOCOL_FEE_MULTIPLIER=0 +export LEGACY_TX=true +export ETH_GAS_PRICE=1000000000 +export ETH_KEYSTORE=/home/[YOUR_USERNAME]/.ethereum/keystore +export ETH_PASSWORD=password.txt +export ETH_KEYSTORE_FILE=/home/[YOUR_USERNAME]/.ethereum/keystore/UTC--****--[YOUR_WALLET_ADDRESS] From 4c70955b8f0c27a0a2bec3b8667a8ad650c9c0a6 Mon Sep 17 00:00:00 2001 From: bbist Date: Mon, 7 Nov 2022 21:31:50 +0545 Subject: [PATCH 05/19] add a custom readme file for custom deployment --- README_LOCAL.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 README_LOCAL.md diff --git a/README_LOCAL.md b/README_LOCAL.md new file mode 100644 index 0000000..1741412 --- /dev/null +++ b/README_LOCAL.md @@ -0,0 +1,43 @@ +# Installation + +## Requirements + +#### Install Forge +https://github.com/foundry-rs/foundry/blob/master/README.md + +#### Install Nix +https://nixos.org/download.html + +#### Install Dapptools +https://github.com/dapphub/dapptools + + +Once these packages are installed, please copy `.env.local` into `.env`. And set your preferred wallet address and keystores. +``` +export ETH_RPC_URL=http://127.0.0.1:8545 +export ETH_FROM=[YOUR_ADDRESS_IN_KEYSTORE] # wallet address of $ETH_KEYSTORE_FILE specified below +export ADMIN=[ADDRESS_FOR_ADMIN_ACCESS] # wallet address to set as admin, set it to the same value as $ETH_FROM for convenience +export PROTOCOL_FEE_RECIPIENT=[PROTOCOL_FEE_RECIPIENT_ADDRESS] # wallet address to set as protocol fee recipient, set it to the same value as $ETH_FROM for convenience +export PROTOCOL_FEE_MULTIPLIER=0 # set protocol fee to 0 +export LEGACY_TX=true +export ETH_GAS_PRICE=1000000000 +export ETH_KEYSTORE=/home/[YOUR_USERNAME]/.ethereum/keystore # your keystore directory used by ethsign/seth commands, should contain your $ETH_KEYSTORE_FILE +export ETH_PASSWORD=password.txt # passphrase of your $ETH_KEYSTORE_FILE wallet +export ETH_KEYSTORE_FILE=/home/[YOUR_USERNAME]/.ethereum/keystore/UTC--****--[YOUR_WALLET_ADDRESS] +``` + +## Deployment +``` +make +make build +make deploy +``` + +Once deployed, all the addresses are saved in `out/addresses.json` file. + +## Notes: +To import your custom private key string into your keystore, please use the `ethsign` command. +``` +ethsign import +``` +Make sure that you set a passphrase and save the passphrase to a `password.txt` file in the root of this project directory. \ No newline at end of file From 1dc6d6a6ac4817b704aeefa6d00d4f3dd131686f Mon Sep 17 00:00:00 2001 From: bbist Date: Mon, 7 Nov 2022 23:17:35 +0545 Subject: [PATCH 06/19] add deployment instructions --- README_LOCAL.md | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/README_LOCAL.md b/README_LOCAL.md index 1741412..566b055 100644 --- a/README_LOCAL.md +++ b/README_LOCAL.md @@ -1,17 +1,33 @@ # Installation ## Requirements +`make`, `node`, `npm`, `yarn`, `jq` -#### Install Forge +### Install Forge https://github.com/foundry-rs/foundry/blob/master/README.md -#### Install Nix +Requires: `curl` and `git` + +### Install Nix https://nixos.org/download.html -#### Install Dapptools +Requires: `xz-utils` + +Choose single user installation for simplicity. + + +### Install Dapptools https://github.com/dapphub/dapptools +### Preparation +Please make sure your wallet is in you keystore. If you have to import a private key string, use the `ethsign` command. +``` +ethsign import +``` +Make sure that you set a passphrase and save the passphrase to a `password.txt` file in the root of this project directory. + + Once these packages are installed, please copy `.env.local` into `.env`. And set your preferred wallet address and keystores. ``` export ETH_RPC_URL=http://127.0.0.1:8545 @@ -33,11 +49,4 @@ make build make deploy ``` -Once deployed, all the addresses are saved in `out/addresses.json` file. - -## Notes: -To import your custom private key string into your keystore, please use the `ethsign` command. -``` -ethsign import -``` -Make sure that you set a passphrase and save the passphrase to a `password.txt` file in the root of this project directory. \ No newline at end of file +Once deployed, all the addresses are saved in `out/addresses.json` file. \ No newline at end of file From fdf9cfb8dad60c31e9aeaaa0f64fddffce12cecd Mon Sep 17 00:00:00 2001 From: bbist Date: Tue, 8 Nov 2022 01:13:47 +0545 Subject: [PATCH 07/19] add script to deploy erc20, erc721, and fake router --- Makefile | 1 + scripts/deploy_extra.sh | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100755 scripts/deploy_extra.sh diff --git a/Makefile b/Makefile index 6b2e56f..14973b1 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,7 @@ test-deploy :; ./scripts/test-deploy.sh # Deployment helpers deploy :; @./scripts/deploy.sh +deploy_extra :; @./scripts/deploy_extra.sh # mainnet deploy-mainnet: export ETH_RPC_URL = $(call network,mainnet) diff --git a/scripts/deploy_extra.sh b/scripts/deploy_extra.sh new file mode 100755 index 0000000..95805d4 --- /dev/null +++ b/scripts/deploy_extra.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +set -eo pipefail + +OUT_DIR=${OUT_DIR:-$PWD/out} +export CONTRACTS_FILE="$OUT_DIR/addresses.json" +export ADDRESSES_FILE="$OUT_DIR/addresses_extra.json" + +# import the deployment helpers +. $(dirname $0)/common.sh + +export LSSVMPairFactoryAddr="${LSSVMPairFactoryAddr:-$(jq -r .LSSVMPairFactory $CONTRACTS_FILE)}" + +# Deploy Router (but not whitelist it in Factory) +LSSVMRouterFakeAddr=$(deploy LSSVMRouter $LSSVMPairFactoryAddr) +log "LSSVMRouterFake deployed at:" $LSSVMRouterFakeAddr + +# Deploy test tokens +Test20Addr=$(deploy Test20) +log "Test20 deployed at:" $Test20Addr + +send $Test20Addr "mint(address,uint256)" $ETH_FROM 1000000000000000000000000 # 100M +log "100M T20 ($Test20Addr) minted for $ETH_FROM" + +Test721Addr=$(deploy Test721) +log "Test721 deployed at:" $Test721Addr + +for i in $(seq 0 49); do + send $Test721Addr "mint(address,uint256)" $ETH_FROM "$i" +done + +Test721EnumerableAddr=$(deploy Test721Enumerable) +log "Test721Enumerable deployed at:" $Test721EnumerableAddr + +for i in $(seq 0 49); do + send $Test721EnumerableAddr "mint(address,uint256)" $ETH_FROM "$i" +done \ No newline at end of file From ccf48573230fa3ed08bb7a672af370d4a2653f36 Mon Sep 17 00:00:00 2001 From: bbist Date: Tue, 8 Nov 2022 01:15:47 +0545 Subject: [PATCH 08/19] add swapAllowed method in factory to prevent swaps from unauthorized routers + needed git --no-verify during commit to skip failing tests --- src/ILSSVMPairFactoryLike.sol | 2 ++ src/LSSVMPair.sol | 28 +++++++++++++++++++++++--- src/LSSVMPairFactory.sol | 37 ++++++++++++++++++++++++++--------- 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/src/ILSSVMPairFactoryLike.sol b/src/ILSSVMPairFactoryLike.sol index 7d459d1..01b8ce9 100644 --- a/src/ILSSVMPairFactoryLike.sol +++ b/src/ILSSVMPairFactoryLike.sol @@ -17,6 +17,8 @@ interface ILSSVMPairFactoryLike { function callAllowed(address target) external view returns (bool); + function swapAllowed(address caller) external view returns (bool); + function routerStatus(LSSVMRouter router) external view diff --git a/src/LSSVMPair.sol b/src/LSSVMPair.sol index b53ae11..737f6df 100644 --- a/src/LSSVMPair.sol +++ b/src/LSSVMPair.sol @@ -108,6 +108,14 @@ abstract contract LSSVMPair is spotPrice = _spotPrice; } + modifier swapAllowed() { + require( + ILSSVMPairFactoryLike(factory()).swapAllowed(msg.sender), + "swap not allowed" + ); + _; + } + /** * External state-changing functions */ @@ -132,7 +140,14 @@ abstract contract LSSVMPair is address nftRecipient, bool isRouter, address routerCaller - ) external payable virtual nonReentrant returns (uint256 inputAmount) { + ) + external + payable + virtual + nonReentrant + swapAllowed + returns (uint256 inputAmount) + { // Store locally to remove extra calls ILSSVMPairFactoryLike _factory = factory(); ICurve _bondingCurve = bondingCurve(); @@ -196,7 +211,14 @@ abstract contract LSSVMPair is address nftRecipient, bool isRouter, address routerCaller - ) external payable virtual nonReentrant returns (uint256 inputAmount) { + ) + external + payable + virtual + nonReentrant + swapAllowed + returns (uint256 inputAmount) + { // Store locally to remove extra calls ILSSVMPairFactoryLike _factory = factory(); ICurve _bondingCurve = bondingCurve(); @@ -254,7 +276,7 @@ abstract contract LSSVMPair is address payable tokenRecipient, bool isRouter, address routerCaller - ) external virtual nonReentrant returns (uint256 outputAmount) { + ) external virtual nonReentrant swapAllowed returns (uint256 outputAmount) { // Store locally to remove extra calls ILSSVMPairFactoryLike _factory = factory(); ICurve _bondingCurve = bondingCurve(); diff --git a/src/LSSVMPairFactory.sol b/src/LSSVMPairFactory.sol index 41f53a4..1073efa 100644 --- a/src/LSSVMPairFactory.sol +++ b/src/LSSVMPairFactory.sol @@ -112,14 +112,19 @@ contract LSSVMPairFactory is Ownable, ILSSVMPairFactoryLike { bondingCurveAllowed[_bondingCurve], "Bonding curve not whitelisted" ); - + // Check to see if the NFT supports Enumerable to determine which template to use address template; - try IERC165(address(_nft)).supportsInterface(INTERFACE_ID_ERC721_ENUMERABLE) returns (bool isEnumerable) { - template = isEnumerable ? address(enumerableETHTemplate) - : address(missingEnumerableETHTemplate); + try + IERC165(address(_nft)).supportsInterface( + INTERFACE_ID_ERC721_ENUMERABLE + ) + returns (bool isEnumerable) { + template = isEnumerable + ? address(enumerableETHTemplate) + : address(missingEnumerableETHTemplate); } catch { - template = address(missingEnumerableETHTemplate); + template = address(missingEnumerableETHTemplate); } pair = LSSVMPairETH( @@ -185,11 +190,16 @@ contract LSSVMPairFactory is Ownable, ILSSVMPairFactoryLike { // Check to see if the NFT supports Enumerable to determine which template to use address template; - try IERC165(address(params.nft)).supportsInterface(INTERFACE_ID_ERC721_ENUMERABLE) returns (bool isEnumerable) { - template = isEnumerable ? address(enumerableERC20Template) - : address(missingEnumerableERC20Template); + try + IERC165(address(params.nft)).supportsInterface( + INTERFACE_ID_ERC721_ENUMERABLE + ) + returns (bool isEnumerable) { + template = isEnumerable + ? address(enumerableERC20Template) + : address(missingEnumerableERC20Template); } catch { - template = address(missingEnumerableERC20Template); + template = address(missingEnumerableERC20Template); } pair = LSSVMPairERC20( @@ -218,6 +228,15 @@ contract LSSVMPairFactory is Ownable, ILSSVMPairFactoryLike { emit NewPair(address(pair)); } + /** + @notice Checks if swap is allows for given caller. Used by LLSVMPair to only serve allowed callers + @param caller The address of swap function caller + @return True if the address is allows to execute swaps in LSSVMPair contract, false otherwise + */ + function swapAllowed(address caller) external view override returns (bool) { + return routerStatus[LSSVMRouter(payable(caller))].allowed; + } + /** @notice Checks if an address is a LSSVMPair. Uses the fact that the pairs are EIP-1167 minimal proxies. @param potentialPair The address to check From 4182423db8e04f3135dfbca669cf06db4388b762 Mon Sep 17 00:00:00 2001 From: bbist Date: Tue, 8 Nov 2022 01:54:15 +0545 Subject: [PATCH 09/19] deploy_extra for erc20, erc721, and erc721enumerable + batch minting --- README_LOCAL.md | 10 +++++++++- scripts/deploy_extra.sh | 20 +++++++++++--------- src/mocks/Test721BatchMint.sol | 13 +++++++++++++ src/mocks/Test721EnumerableBatchMint.sol | 13 +++++++++++++ 4 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 src/mocks/Test721BatchMint.sol create mode 100644 src/mocks/Test721EnumerableBatchMint.sol diff --git a/README_LOCAL.md b/README_LOCAL.md index 566b055..fde9ef8 100644 --- a/README_LOCAL.md +++ b/README_LOCAL.md @@ -43,10 +43,18 @@ export ETH_KEYSTORE_FILE=/home/[YOUR_USERNAME]/.ethereum/keystore/UTC--****--[YO ``` ## Deployment + +### Contracts ``` make make build make deploy ``` -Once deployed, all the addresses are saved in `out/addresses.json` file. \ No newline at end of file +Once deployed, all the addresses are saved in `out/addresses.json` file. + +### Fake Router and Test tokens (ERC20, ERC721, ERC721Enumerable) +``` +make deploy_extra +``` +Once deployed, all token and router addresses are saved in `out/addresses_extra.json` file. This should be executed after contracts deployment above. \ No newline at end of file diff --git a/scripts/deploy_extra.sh b/scripts/deploy_extra.sh index 95805d4..85cdad6 100755 --- a/scripts/deploy_extra.sh +++ b/scripts/deploy_extra.sh @@ -15,23 +15,25 @@ export LSSVMPairFactoryAddr="${LSSVMPairFactoryAddr:-$(jq -r .LSSVMPairFactory $ LSSVMRouterFakeAddr=$(deploy LSSVMRouter $LSSVMPairFactoryAddr) log "LSSVMRouterFake deployed at:" $LSSVMRouterFakeAddr -# Deploy test tokens +# Deploy tokens + +# ERC20 Test20Addr=$(deploy Test20) log "Test20 deployed at:" $Test20Addr send $Test20Addr "mint(address,uint256)" $ETH_FROM 1000000000000000000000000 # 100M log "100M T20 ($Test20Addr) minted for $ETH_FROM" -Test721Addr=$(deploy Test721) +# Test721BatchMint +Test721Addr=$(deploy Test721BatchMint) log "Test721 deployed at:" $Test721Addr -for i in $(seq 0 49); do - send $Test721Addr "mint(address,uint256)" $ETH_FROM "$i" -done +send $Test721Addr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 99)]" + -Test721EnumerableAddr=$(deploy Test721Enumerable) +# Test721EnumerableBatchMint +Test721EnumerableAddr=$(deploy Test721EnumerableBatchMint) log "Test721Enumerable deployed at:" $Test721EnumerableAddr -for i in $(seq 0 49); do - send $Test721EnumerableAddr "mint(address,uint256)" $ETH_FROM "$i" -done \ No newline at end of file +send $Test721EnumerableAddr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 49)]" +send $Test721EnumerableAddr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 50 99)]" diff --git a/src/mocks/Test721BatchMint.sol b/src/mocks/Test721BatchMint.sol new file mode 100644 index 0000000..62cc14e --- /dev/null +++ b/src/mocks/Test721BatchMint.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +pragma solidity ^0.8.0; +import "./Test721.sol"; + +contract Test721BatchMint is Test721 { + constructor() Test721() {} + + function batchMint(address to, uint256[] calldata ids) public { + for (uint256 i = 0; i < ids.length; i++) { + _mint(to, ids[i]); + } + } +} diff --git a/src/mocks/Test721EnumerableBatchMint.sol b/src/mocks/Test721EnumerableBatchMint.sol new file mode 100644 index 0000000..c72ffc6 --- /dev/null +++ b/src/mocks/Test721EnumerableBatchMint.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +pragma solidity ^0.8.0; +import "./Test721Enumerable.sol"; + +contract Test721EnumerableBatchMint is Test721Enumerable { + constructor() Test721Enumerable() {} + + function batchMint(address to, uint256[] calldata ids) public { + for (uint256 i = 0; i < ids.length; i++) { + _mint(to, ids[i]); + } + } +} From f22e972807ea489768117b64f38e54f62e2f6dbb Mon Sep 17 00:00:00 2001 From: bbist Date: Wed, 9 Nov 2022 18:40:16 +0545 Subject: [PATCH 10/19] add royalty override to be applied to test ERC721 tokens --- src/mocks/RoyaltyOverride.sol | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/mocks/RoyaltyOverride.sol diff --git a/src/mocks/RoyaltyOverride.sol b/src/mocks/RoyaltyOverride.sol new file mode 100644 index 0000000..e92cce3 --- /dev/null +++ b/src/mocks/RoyaltyOverride.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +pragma solidity ^0.8.0; +import {FixedPointMathLib} from "solmate/utils/FixedPointMathLib.sol"; +import {IERC2981} from "@openzeppelin/contracts/interfaces/IERC2981.sol"; +import "./Test721.sol"; + +abstract contract RoyaltyOverride is IERC2981 { + using FixedPointMathLib for uint256; + + enum FeeType { + FLAT, + PERCENT + } + + address public royaltyRecipient; + FeeType public feeType; + uint256 public value; + + constructor( + address _royaltyRecipient, + FeeType _feeType, + uint256 _value + ) { + royaltyRecipient = _royaltyRecipient; + feeType = _feeType; + value = _value; + } + + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override + returns (bool) + { + return interfaceId == type(IERC2981).interfaceId; + } + + /** + * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of + * exchange. The royalty amount is denominated and should be paid in that same unit of exchange. + */ + function royaltyInfo(uint256 tokenId, uint256 salePrice) + external + view + override + returns (address receiver, uint256 royaltyAmount) + { + if (feeType == FeeType.FLAT) { + require(salePrice > value, "salePrice below royaltyAmount"); + return (royaltyRecipient, value); + } else if (feeType == FeeType.PERCENT) { + royaltyAmount = salePrice.fmul(value, FixedPointMathLib.WAD); + require(salePrice > royaltyAmount, "salePrice below royaltyAmount"); + return (royaltyRecipient, royaltyAmount); + } + return (address(0), 0); + } +} From a06e1a595be6980ba5ca8ea093fd62ea383b3318 Mon Sep 17 00:00:00 2001 From: bbist Date: Wed, 9 Nov 2022 18:40:46 +0545 Subject: [PATCH 11/19] apply royalty override to test ERC721 tokens --- src/mocks/Test721BatchMint.sol | 13 --------- src/mocks/Test721BatchMintWithRoyalty.sol | 29 +++++++++++++++++++ src/mocks/Test721EnumerableBatchMint.sol | 13 --------- .../Test721EnumerableBatchMintWithRoyalty.sol | 28 ++++++++++++++++++ 4 files changed, 57 insertions(+), 26 deletions(-) delete mode 100644 src/mocks/Test721BatchMint.sol create mode 100644 src/mocks/Test721BatchMintWithRoyalty.sol delete mode 100644 src/mocks/Test721EnumerableBatchMint.sol create mode 100644 src/mocks/Test721EnumerableBatchMintWithRoyalty.sol diff --git a/src/mocks/Test721BatchMint.sol b/src/mocks/Test721BatchMint.sol deleted file mode 100644 index 62cc14e..0000000 --- a/src/mocks/Test721BatchMint.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later -pragma solidity ^0.8.0; -import "./Test721.sol"; - -contract Test721BatchMint is Test721 { - constructor() Test721() {} - - function batchMint(address to, uint256[] calldata ids) public { - for (uint256 i = 0; i < ids.length; i++) { - _mint(to, ids[i]); - } - } -} diff --git a/src/mocks/Test721BatchMintWithRoyalty.sol b/src/mocks/Test721BatchMintWithRoyalty.sol new file mode 100644 index 0000000..2826c75 --- /dev/null +++ b/src/mocks/Test721BatchMintWithRoyalty.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +pragma solidity ^0.8.0; +import "./Test721.sol"; +import "./RoyaltyOverride.sol"; + +contract Test721BatchMintWithRoyalty is Test721, RoyaltyOverride { + + constructor(address recipient, FeeType feeType, uint256 value) + Test721() + RoyaltyOverride(recipient, feeType, value) + { } + + function batchMint(address to, uint256[] calldata ids) public { + for (uint256 i = 0; i < ids.length; i++) { + _mint(to, ids[i]); + } + } + + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override (ERC721, RoyaltyOverride) + returns (bool) + { + return super.supportsInterface(interfaceId); + } + +} diff --git a/src/mocks/Test721EnumerableBatchMint.sol b/src/mocks/Test721EnumerableBatchMint.sol deleted file mode 100644 index c72ffc6..0000000 --- a/src/mocks/Test721EnumerableBatchMint.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later -pragma solidity ^0.8.0; -import "./Test721Enumerable.sol"; - -contract Test721EnumerableBatchMint is Test721Enumerable { - constructor() Test721Enumerable() {} - - function batchMint(address to, uint256[] calldata ids) public { - for (uint256 i = 0; i < ids.length; i++) { - _mint(to, ids[i]); - } - } -} diff --git a/src/mocks/Test721EnumerableBatchMintWithRoyalty.sol b/src/mocks/Test721EnumerableBatchMintWithRoyalty.sol new file mode 100644 index 0000000..0a548aa --- /dev/null +++ b/src/mocks/Test721EnumerableBatchMintWithRoyalty.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +pragma solidity ^0.8.0; +import "./Test721Enumerable.sol"; +import "./RoyaltyOverride.sol"; + +contract Test721EnumerableBatchMintWithRoyalty is Test721Enumerable, RoyaltyOverride { + + constructor(address recipient, FeeType feeType, uint256 value) + Test721Enumerable() + RoyaltyOverride(recipient, feeType, value) + { } + + function batchMint(address to, uint256[] calldata ids) public { + for (uint256 i = 0; i < ids.length; i++) { + _mint(to, ids[i]); + } + } + + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override (ERC721Enumerable, RoyaltyOverride) + returns (bool) + { + return super.supportsInterface(interfaceId); + } +} From 267cecdcb94f564e9b4cafa5c33371c1231bfb02 Mon Sep 17 00:00:00 2001 From: bbist Date: Wed, 9 Nov 2022 18:41:26 +0545 Subject: [PATCH 12/19] deploy royalty router and whitelist it --- scripts/deploy_extra.sh | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/deploy_extra.sh b/scripts/deploy_extra.sh index 85cdad6..afbe3f1 100755 --- a/scripts/deploy_extra.sh +++ b/scripts/deploy_extra.sh @@ -9,12 +9,9 @@ export ADDRESSES_FILE="$OUT_DIR/addresses_extra.json" # import the deployment helpers . $(dirname $0)/common.sh +export LSSVMRouterAddr="${LSSVMRouterAddr:-$(jq -r .LSSVMRouter $CONTRACTS_FILE)}" export LSSVMPairFactoryAddr="${LSSVMPairFactoryAddr:-$(jq -r .LSSVMPairFactory $CONTRACTS_FILE)}" -# Deploy Router (but not whitelist it in Factory) -LSSVMRouterFakeAddr=$(deploy LSSVMRouter $LSSVMPairFactoryAddr) -log "LSSVMRouterFake deployed at:" $LSSVMRouterFakeAddr - # Deploy tokens # ERC20 @@ -24,16 +21,22 @@ log "Test20 deployed at:" $Test20Addr send $Test20Addr "mint(address,uint256)" $ETH_FROM 1000000000000000000000000 # 100M log "100M T20 ($Test20Addr) minted for $ETH_FROM" -# Test721BatchMint -Test721Addr=$(deploy Test721BatchMint) +# Test721BatchMintWithRoyalty +Test721Addr=$(deploy Test721BatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_fROM} 0 100000000000000) # flat, 0.0001 ETH log "Test721 deployed at:" $Test721Addr send $Test721Addr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 99)]" - -# Test721EnumerableBatchMint -Test721EnumerableAddr=$(deploy Test721EnumerableBatchMint) +# Test721EnumerableBatchMintWithRoyalty +Test721EnumerableAddr=$(deploy Test721EnumerableBatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_fROM} 1 10000000000000000) # percent, 0.01 * salePrice ETH log "Test721Enumerable deployed at:" $Test721EnumerableAddr -send $Test721EnumerableAddr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 49)]" -send $Test721EnumerableAddr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 50 99)]" +send $Test721EnumerableAddr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 99)]" + +# Deploy routerWithRoyalties +LSSVMRouterWithRoyaltiesAddr=$(deploy LSSVMRouterWithRoyalties $LSSVMPairFactoryAddr) +log "LSSVMRouterWithRoyalties deployed at:" $LSSVMRouterWithRoyaltiesAddr + +# Whitelist routerWithRoyalties in factory +send $LSSVMPairFactoryAddr "setRouterAllowed(address,bool)" $LSSVMRouterWithRoyaltiesAddr true +log "Whitelisted routerWithRoyalties in factory" \ No newline at end of file From 9ed8f1f907885fb44e49451fcf09036b77ca2ef7 Mon Sep 17 00:00:00 2001 From: bbist Date: Wed, 9 Nov 2022 18:46:38 +0545 Subject: [PATCH 13/19] update readme to show a local anvil node deployment instuction that is forked from mainnet --- README_LOCAL.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README_LOCAL.md b/README_LOCAL.md index fde9ef8..3d0f389 100644 --- a/README_LOCAL.md +++ b/README_LOCAL.md @@ -44,6 +44,18 @@ export ETH_KEYSTORE_FILE=/home/[YOUR_USERNAME]/.ethereum/keystore/UTC--****--[YO ## Deployment +### Local RPC Node + +We recommend you to use `anvil` that comes with foundry during forge installation. Create a fork of mainnet and deploy a local node. + +```bash +anvil \ + --fork-url https://rpc.ankr.com/eth \ + --chain-id 31337 \ + --block-time 3 \ + --block-base-fee-per-gas 1000000000 +``` + ### Contracts ``` make From 2338368caa95f2978582278e80253b74e2d49cf6 Mon Sep 17 00:00:00 2001 From: Bishal Bist Date: Thu, 10 Nov 2022 10:57:44 +0545 Subject: [PATCH 14/19] fix incorrect env var name --- scripts/deploy_extra.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/deploy_extra.sh b/scripts/deploy_extra.sh index afbe3f1..98c1f89 100755 --- a/scripts/deploy_extra.sh +++ b/scripts/deploy_extra.sh @@ -9,7 +9,6 @@ export ADDRESSES_FILE="$OUT_DIR/addresses_extra.json" # import the deployment helpers . $(dirname $0)/common.sh -export LSSVMRouterAddr="${LSSVMRouterAddr:-$(jq -r .LSSVMRouter $CONTRACTS_FILE)}" export LSSVMPairFactoryAddr="${LSSVMPairFactoryAddr:-$(jq -r .LSSVMPairFactory $CONTRACTS_FILE)}" # Deploy tokens @@ -22,13 +21,13 @@ send $Test20Addr "mint(address,uint256)" $ETH_FROM 1000000000000000000000000 # 1 log "100M T20 ($Test20Addr) minted for $ETH_FROM" # Test721BatchMintWithRoyalty -Test721Addr=$(deploy Test721BatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_fROM} 0 100000000000000) # flat, 0.0001 ETH +Test721Addr=$(deploy Test721BatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_FROM} 0 100000000000000) # flat, 0.0001 ETH log "Test721 deployed at:" $Test721Addr send $Test721Addr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 99)]" # Test721EnumerableBatchMintWithRoyalty -Test721EnumerableAddr=$(deploy Test721EnumerableBatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_fROM} 1 10000000000000000) # percent, 0.01 * salePrice ETH +Test721EnumerableAddr=$(deploy Test721EnumerableBatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_FROM} 1 10000000000000000) # percent, 0.01 * salePrice ETH log "Test721Enumerable deployed at:" $Test721EnumerableAddr send $Test721EnumerableAddr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 99)]" From 9707b7da263297aca265be62b5e8ea69559168d6 Mon Sep 17 00:00:00 2001 From: Bishal Bist Date: Thu, 10 Nov 2022 10:58:17 +0545 Subject: [PATCH 15/19] add royalty recipient address --- .env.local | 1 + 1 file changed, 1 insertion(+) diff --git a/.env.local b/.env.local index 765c214..eb63964 100644 --- a/.env.local +++ b/.env.local @@ -8,3 +8,4 @@ export ETH_GAS_PRICE=1000000000 export ETH_KEYSTORE=/home/[YOUR_USERNAME]/.ethereum/keystore export ETH_PASSWORD=password.txt export ETH_KEYSTORE_FILE=/home/[YOUR_USERNAME]/.ethereum/keystore/UTC--****--[YOUR_WALLET_ADDRESS] +export ROYALTY_RECIPIENT=[YOUR_ROYALTY_RECIPIENT] \ No newline at end of file From 75f27627aa6b59c6a008a1a4d22a49c1b500bd17 Mon Sep 17 00:00:00 2001 From: Bishal Bist Date: Thu, 10 Nov 2022 11:02:08 +0545 Subject: [PATCH 16/19] update docs to move anvil deployment to appropriate section --- README_LOCAL.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/README_LOCAL.md b/README_LOCAL.md index 3d0f389..a98f0a7 100644 --- a/README_LOCAL.md +++ b/README_LOCAL.md @@ -21,6 +21,19 @@ https://github.com/dapphub/dapptools ### Preparation +### Local RPC Node + +We recommend you to use `anvil` that comes with foundry during forge installation. Create a fork of mainnet and deploy a local node. + +```bash +anvil \ + --fork-url https://rpc.ankr.com/eth \ + --chain-id 31337 \ + --block-time 3 \ + --block-base-fee-per-gas 1000000000 +``` +It will list default wallets that has balances. You can import one of them into your keystore and use it as a deployer to deploy contracts. + Please make sure your wallet is in you keystore. If you have to import a private key string, use the `ethsign` command. ``` ethsign import @@ -40,22 +53,11 @@ export ETH_GAS_PRICE=1000000000 export ETH_KEYSTORE=/home/[YOUR_USERNAME]/.ethereum/keystore # your keystore directory used by ethsign/seth commands, should contain your $ETH_KEYSTORE_FILE export ETH_PASSWORD=password.txt # passphrase of your $ETH_KEYSTORE_FILE wallet export ETH_KEYSTORE_FILE=/home/[YOUR_USERNAME]/.ethereum/keystore/UTC--****--[YOUR_WALLET_ADDRESS] +export ROYALTY_RECIPIENT=[YOUR_ROYALTY_RECIPIENT_ADDRESS] # Royalty recipient for Test NFTs ``` ## Deployment -### Local RPC Node - -We recommend you to use `anvil` that comes with foundry during forge installation. Create a fork of mainnet and deploy a local node. - -```bash -anvil \ - --fork-url https://rpc.ankr.com/eth \ - --chain-id 31337 \ - --block-time 3 \ - --block-base-fee-per-gas 1000000000 -``` - ### Contracts ``` make From b1901fc4d4343d8731120f5fe9520d5863815443 Mon Sep 17 00:00:00 2001 From: bbist Date: Thu, 17 Nov 2022 12:22:07 +0545 Subject: [PATCH 17/19] make royalty address configurable --- scripts/deploy_extra.sh | 16 +++++++++++++--- src/LSSVMRouterWithRoyalties.sol | 17 +++++++++++++++-- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/scripts/deploy_extra.sh b/scripts/deploy_extra.sh index 98c1f89..15954e2 100755 --- a/scripts/deploy_extra.sh +++ b/scripts/deploy_extra.sh @@ -9,6 +9,7 @@ export ADDRESSES_FILE="$OUT_DIR/addresses_extra.json" # import the deployment helpers . $(dirname $0)/common.sh +export LSSVMRouterAddr="${LSSVMRouterAddr:-$(jq -r .LSSVMRouter $CONTRACTS_FILE)}" export LSSVMPairFactoryAddr="${LSSVMPairFactoryAddr:-$(jq -r .LSSVMPairFactory $CONTRACTS_FILE)}" # Deploy tokens @@ -21,13 +22,13 @@ send $Test20Addr "mint(address,uint256)" $ETH_FROM 1000000000000000000000000 # 1 log "100M T20 ($Test20Addr) minted for $ETH_FROM" # Test721BatchMintWithRoyalty -Test721Addr=$(deploy Test721BatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_FROM} 0 100000000000000) # flat, 0.0001 ETH +Test721Addr=$(deploy Test721BatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_fROM} 0 100000000000000) # flat, 0.0001 ETH log "Test721 deployed at:" $Test721Addr send $Test721Addr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 99)]" # Test721EnumerableBatchMintWithRoyalty -Test721EnumerableAddr=$(deploy Test721EnumerableBatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_FROM} 1 10000000000000000) # percent, 0.01 * salePrice ETH +Test721EnumerableAddr=$(deploy Test721EnumerableBatchMintWithRoyalty ${ROYALTY_RECIPIENT:-$ETH_fROM} 1 10000000000000000) # percent, 0.01 * salePrice ETH log "Test721Enumerable deployed at:" $Test721EnumerableAddr send $Test721EnumerableAddr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s ',' 0 99)]" @@ -36,6 +37,15 @@ send $Test721EnumerableAddr "batchMint(address,uint256[])" $ETH_FROM "[$(seq -s LSSVMRouterWithRoyaltiesAddr=$(deploy LSSVMRouterWithRoyalties $LSSVMPairFactoryAddr) log "LSSVMRouterWithRoyalties deployed at:" $LSSVMRouterWithRoyaltiesAddr +# Initialize royaltyRegistry address +send $LSSVMRouterWithRoyaltiesAddr "initializeRoyaltyRegistry(address)" ${ROYALTY_REGISTRY:-0x0000000000000000000000000000000000000000} +ROYALTY_REGISTRY="0x$(seth --rpc-url $ETH_RPC_URL call $LSSVMRouterWithRoyaltiesAddr "ROYALTY_REGISTRY()" | tail -c 41)" +log "LSSVMRoyaltyWithRoyalties initialized with address $ROYALTY_REGISTRY" + +# save royalty registry +saveContract RoyaltyRegistry "$ROYALTY_REGISTRY" + # Whitelist routerWithRoyalties in factory send $LSSVMPairFactoryAddr "setRouterAllowed(address,bool)" $LSSVMRouterWithRoyaltiesAddr true -log "Whitelisted routerWithRoyalties in factory" \ No newline at end of file +log "Whitelisted routerWithRoyalties in factory" + diff --git a/src/LSSVMRouterWithRoyalties.sol b/src/LSSVMRouterWithRoyalties.sol index dfa6e1d..019a7b0 100644 --- a/src/LSSVMRouterWithRoyalties.sol +++ b/src/LSSVMRouterWithRoyalties.sol @@ -36,8 +36,9 @@ contract LSSVMRouterWithRoyalties is LSSVMRouter { uint256 royaltyAmount ); - IRoyaltyRegistry public constant ROYALTY_REGISTRY = - IRoyaltyRegistry(0xaD2184FB5DBcfC05d8f056542fB25b04fa32A95D); + // IRoyaltyRegistry public constant ROYALTY_REGISTRY = + // IRoyaltyRegistry(0xaD2184FB5DBcfC05d8f056542fB25b04fa32A95D); + IRoyaltyRegistry public ROYALTY_REGISTRY = IRoyaltyRegistry(address(0)); uint256 public immutable FETCH_TOKEN_ID; @@ -47,6 +48,18 @@ contract LSSVMRouterWithRoyalties is LSSVMRouter { FETCH_TOKEN_ID = uint256(keccak256(abi.encode(address(this)))); } + function initializeRoyaltyRegistry(address _royaltyRegistry) external { + if (address(ROYALTY_REGISTRY) == address(0)) { + if (_royaltyRegistry == address(0)) { + ROYALTY_REGISTRY = IRoyaltyRegistry( + 0xaD2184FB5DBcfC05d8f056542fB25b04fa32A95D // mainnet + ); + } else { + ROYALTY_REGISTRY = IRoyaltyRegistry(_royaltyRegistry); + } + } + } + function supportsRoyalty(address collection) external view returns (bool) { // get royalty lookup address from the shared royalty registry address lookupAddress = ROYALTY_REGISTRY.getRoyaltyLookupAddress( From 82941925cf5209b6901798574749b3661d05e50c Mon Sep 17 00:00:00 2001 From: bbist Date: Wed, 7 Dec 2022 17:19:30 +0545 Subject: [PATCH 18/19] remove unused prb-math lib ro fix compilation error --- .gitmodules | 3 --- lib/prb-math | 1 - 2 files changed, 4 deletions(-) delete mode 160000 lib/prb-math diff --git a/.gitmodules b/.gitmodules index ef577dd..f453e86 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,9 +8,6 @@ [submodule "lib/openzeppelin-contracts-upgradeable"] path = lib/openzeppelin-contracts-upgradeable url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable.git -[submodule "lib/prb-math"] - path = lib/prb-math - url = https://github.com/hifi-finance/prb-math.git [submodule "lib/solmate"] path = lib/solmate url = https://github.com/rari-capital/solmate diff --git a/lib/prb-math b/lib/prb-math deleted file mode 160000 index 16b3e95..0000000 --- a/lib/prb-math +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 16b3e95b5f1b8ae5b308302262766abadea30b11 From 9bfa9bba34b57e724adbf3145e747a582ade8250 Mon Sep 17 00:00:00 2001 From: bisbist Date: Mon, 19 Dec 2022 11:07:14 +0545 Subject: [PATCH 19/19] added depositERC20 function to handle ERC20 deposit events --- src/LSSVMPairERC20.sol | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/LSSVMPairERC20.sol b/src/LSSVMPairERC20.sol index 2ac5501..e5ae6aa 100644 --- a/src/LSSVMPairERC20.sol +++ b/src/LSSVMPairERC20.sol @@ -157,4 +157,13 @@ abstract contract LSSVMPairERC20 is LSSVMPair { emit TokenWithdrawal(amount); } } + + function depositERC20(ERC20 a, uint256 amount) external { + a.safeTransferFrom(msg.sender, address(this), amount); + + if (a == token()) { + // emit event since it is the pair token + emit TokenDeposit(amount); + } + } }