@pendle/core-v2 5.4.2-beta-okx → 5.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionAddRemoveLiqV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionMiscV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionStorageEvents.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapPTV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.json +2 -2
- package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +2 -2
- package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.json +2 -2
- package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.json +2 -2
- package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.json +2 -2
- package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
- package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +2 -2
- package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.json +2 -2
- package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.json +2 -2
- package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json +40 -0
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IKyberScalingHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +55 -2
- package/contracts/router/swap-aggregator/IPSwapAggregator.sol +2 -0
- package/contracts/router/swap-aggregator/PendleSwap.sol +6 -211
- package/deployments/1-core.json +1 -1
- package/deployments/10-core.json +6 -6
- package/deployments/42161-core.json +6 -6
- package/deployments/5000-core.json +6 -6
- package/deployments/56-core.json +6 -6
- package/deployments/8453-core.json +6 -6
- package/package.json +1 -1
- package/typechain-types/IPSwapAggregator.ts +39 -0
- package/typechain-types/PendleSwap.ts +60 -0
- package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +1 -1
- package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMiscV3__factory.ts +1 -1
- package/typechain-types/factories/ActionSimple__factory.ts +1 -1
- package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionStorageV4__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPTV3__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapYTV3__factory.ts +1 -1
- package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
- package/typechain-types/factories/IPSwapAggregator__factory.ts +40 -0
- package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
- package/typechain-types/factories/PendleRouterV4__factory.ts +1 -1
- package/typechain-types/factories/PendleSwap__factory.ts +54 -1
- package/typechain-types/factories/Reflector__factory.ts +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOKXDexRouter.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOKXDexRouter.json +0 -407
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"contractName": "MarketApproxPtOutLibOnchain",
|
|
4
4
|
"sourceName": "contracts/router/math/MarketApproxLibOnchain.sol",
|
|
5
5
|
"abi": [],
|
|
6
|
-
"bytecode": "
|
|
7
|
-
"deployedBytecode": "
|
|
6
|
+
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122082ee6b4c3753b1f796c20ab9994d40665233feb79be0c6d333a60f27f176317164736f6c63430008170033",
|
|
7
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122082ee6b4c3753b1f796c20ab9994d40665233feb79be0c6d333a60f27f176317164736f6c63430008170033",
|
|
8
8
|
"linkReferences": {},
|
|
9
9
|
"deployedLinkReferences": {}
|
|
10
10
|
}
|
package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.json
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"contractName": "MarketApproxPtInLibV2",
|
|
4
4
|
"sourceName": "contracts/router/math/MarketApproxLibV2.sol",
|
|
5
5
|
"abi": [],
|
|
6
|
-
"bytecode": "
|
|
7
|
-
"deployedBytecode": "
|
|
6
|
+
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022b0fd7528bcb973f5e4454e1375749c61aa1376d386690bb586658c14314efc64736f6c63430008170033",
|
|
7
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022b0fd7528bcb973f5e4454e1375749c61aa1376d386690bb586658c14314efc64736f6c63430008170033",
|
|
8
8
|
"linkReferences": {},
|
|
9
9
|
"deployedLinkReferences": {}
|
|
10
10
|
}
|
package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.json
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"contractName": "MarketApproxPtOutLibV2",
|
|
4
4
|
"sourceName": "contracts/router/math/MarketApproxLibV2.sol",
|
|
5
5
|
"abi": [],
|
|
6
|
-
"bytecode": "
|
|
7
|
-
"deployedBytecode": "
|
|
6
|
+
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c09a9863c1f93abbdd5aeb68e23495b6b3bb15750089ef1ca4fd03c62ef1b6164736f6c63430008170033",
|
|
7
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c09a9863c1f93abbdd5aeb68e23495b6b3bb15750089ef1ca4fd03c62ef1b6164736f6c63430008170033",
|
|
8
8
|
"linkReferences": {},
|
|
9
9
|
"deployedLinkReferences": {}
|
|
10
10
|
}
|
package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json
CHANGED
|
@@ -72,6 +72,46 @@
|
|
|
72
72
|
"outputs": [],
|
|
73
73
|
"stateMutability": "payable",
|
|
74
74
|
"type": "function"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"inputs": [
|
|
78
|
+
{
|
|
79
|
+
"internalType": "address[]",
|
|
80
|
+
"name": "tokensIn",
|
|
81
|
+
"type": "address[]"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"components": [
|
|
85
|
+
{
|
|
86
|
+
"internalType": "enum SwapType",
|
|
87
|
+
"name": "swapType",
|
|
88
|
+
"type": "uint8"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"internalType": "address",
|
|
92
|
+
"name": "extRouter",
|
|
93
|
+
"type": "address"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"internalType": "bytes",
|
|
97
|
+
"name": "extCalldata",
|
|
98
|
+
"type": "bytes"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"internalType": "bool",
|
|
102
|
+
"name": "needScale",
|
|
103
|
+
"type": "bool"
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"internalType": "struct SwapData",
|
|
107
|
+
"name": "swapData",
|
|
108
|
+
"type": "tuple"
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"name": "swapMultiOdos",
|
|
112
|
+
"outputs": [],
|
|
113
|
+
"stateMutability": "payable",
|
|
114
|
+
"type": "function"
|
|
75
115
|
}
|
|
76
116
|
],
|
|
77
117
|
"bytecode": "0x",
|
|
@@ -28,6 +28,19 @@
|
|
|
28
28
|
"name": "SwapSingle",
|
|
29
29
|
"type": "event"
|
|
30
30
|
},
|
|
31
|
+
{
|
|
32
|
+
"inputs": [],
|
|
33
|
+
"name": "KYBER_SCALING_HELPER",
|
|
34
|
+
"outputs": [
|
|
35
|
+
{
|
|
36
|
+
"internalType": "address",
|
|
37
|
+
"name": "",
|
|
38
|
+
"type": "address"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"stateMutability": "view",
|
|
42
|
+
"type": "function"
|
|
43
|
+
},
|
|
31
44
|
{
|
|
32
45
|
"inputs": [
|
|
33
46
|
{
|
|
@@ -73,13 +86,53 @@
|
|
|
73
86
|
"stateMutability": "payable",
|
|
74
87
|
"type": "function"
|
|
75
88
|
},
|
|
89
|
+
{
|
|
90
|
+
"inputs": [
|
|
91
|
+
{
|
|
92
|
+
"internalType": "address[]",
|
|
93
|
+
"name": "tokensIn",
|
|
94
|
+
"type": "address[]"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"components": [
|
|
98
|
+
{
|
|
99
|
+
"internalType": "enum SwapType",
|
|
100
|
+
"name": "swapType",
|
|
101
|
+
"type": "uint8"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"internalType": "address",
|
|
105
|
+
"name": "extRouter",
|
|
106
|
+
"type": "address"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"internalType": "bytes",
|
|
110
|
+
"name": "extCalldata",
|
|
111
|
+
"type": "bytes"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"internalType": "bool",
|
|
115
|
+
"name": "needScale",
|
|
116
|
+
"type": "bool"
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"internalType": "struct SwapData",
|
|
120
|
+
"name": "data",
|
|
121
|
+
"type": "tuple"
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"name": "swapMultiOdos",
|
|
125
|
+
"outputs": [],
|
|
126
|
+
"stateMutability": "payable",
|
|
127
|
+
"type": "function"
|
|
128
|
+
},
|
|
76
129
|
{
|
|
77
130
|
"stateMutability": "payable",
|
|
78
131
|
"type": "receive"
|
|
79
132
|
}
|
|
80
133
|
],
|
|
81
|
-
"bytecode": "0x608060405234801561001057600080fd5b50611eae806100206000396000f3fe6080604052600436106100225760003560e01c80632bdb823c1461002e57600080fd5b3661002957005b600080fd5b61004161003c366004610d39565b610043565b005b61004d8382610167565b6101066100606080830160608401610db1565b6100ab576100716040830183610dce565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100ce92505050565b6100ce6100bb6020840184610e1b565b6100c86040850185610dce565b866101b5565b6001600160a01b038516156100e45760006100e6565b835b6100f66040850160208601610e3c565b6001600160a01b0316919061030e565b506001600160a01b03831661011e6020830183610e1b565b600a81111561012f5761012f610e59565b6040518481527f1d8c50a59805451ff93bb2e438559a86b75386bcac2a591d3181d79e7e8346fd9060200160405180910390a3505050565b60046101766020830183610e1b565b600a81111561018757610187610e59565b036101a15761019d8261019861033e565b61045d565b5050565b61019d826101986040840160208501610e3c565b6060600185600a8111156101cb576101cb610e59565b036102af5760405163726d379760e11b8152600090732f577a41bec1be1152aeea12e73b7391d15f655d9063e4da6f2e9061020e90889088908890600401610e6f565b600060405180830381865afa15801561022b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102539190810190610fa6565b92509050806102a95760405162461bcd60e51b815260206004820181905260248201527f50656e646c65537761703a204b79626572207363616c696e67206661696c656460448201526064015b60405180910390fd5b50610306565b600285600a8111156102c3576102c3610e59565b036102da576102d38484846104ee565b9050610306565b600485600a8111156102ee576102ee610e59565b036102fe576102d3848484610602565b610306611037565b949350505050565b6060610334848484604051806060016040528060298152602001611e506029913961093f565b90505b9392505050565b60004660010361036157507340aa958dd87fc8305b97f2ba922cddca374bcd7f90565b46600a0361038257507368d6b739d2020067d1e2f713b999da97e4d5481290565b466038036103a35750732c34a2fb1d0b4f55de51e1d0bdefaddce6b7cdd690565b4661a4b1036103c557507370cbb871e8f30fc8ce23609e9e0ea87b6b222f5890565b46612105036103e757507357df6092665eb6058de53939612413ff4b09114e90565b466113880361040957507357df6092665eb6058de53939612413ff4b09114e90565b60405162461bcd60e51b815260206004820152602360248201527f50656e646c65537761703a204f4b5820436861696e206e6f7420737570706f726044820152621d195960ea1b60648201526084016102a0565b604051636eb1769f60e11b81523060048201526001600160a01b038281166024830152600019919084169063dd62ed3e90604401602060405180830381865afa1580156104ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d2919061105a565b101561019d5761019d6001600160a01b03831682600019610a1a565b606060006104ff6004828688611073565b6105089161109d565b905036600061051a866004818a611073565b90925090506001600160e01b03198316630ed8d73960e21b1461053f5761053f611037565b600080808061055085870187611132565b9350935093509350836020015189856080015161056d9190611218565b610577919061123d565b6080850152602084015160a0850151610591908b90611218565b61059b919061123d565b60a08501526020840189905260405187906105c090869086908690869060240161128b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529750505050505050509392505050565b606060006106136004828688611073565b61061c9161109d565b905036600061062e866004818a611073565b909250905063f2a0f1c560e01b6001600160e01b03198416016106d957600080808061065c858701876113a6565b93509350935093508289836106719190611218565b61067b919061123d565b91508892508684848484604051602401610698949392919061143b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915297506103379650505050505050565b63fc4781a160e01b6001600160e01b031984160161079a5760008080808080610704878901896118a9565b95509550955095509550955083604001518b85606001516107259190611218565b61072f919061123d565b606085015260408085018c905251899061075790889088908890889088908890602401611c03565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152995061033798505050505050505050565b637beb3a5360e11b6001600160e01b0319841601610846576000808080806107c486880188611c70565b94509450945094509450838a846107db9190611218565b6107e5919061123d565b9250899350878585858585604051602401610804959493929190611cdc565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529850610337975050505050505050565b6319e3841760e21b6001600160e01b031984160161086f57600080808061065c858701876113a6565b6347f3d0f760e01b6001600160e01b03198416016108e85760008080808061089986880188611d0f565b9450945094509450945083604001518a85606001516108b89190611218565b6108c2919061123d565b606085015260408085018b90525188906108049087908790879087908790602401611da7565b60405162461bcd60e51b815260206004820152602660248201527f50656e646c65537761703a204f4b582073656c6563746f72206e6f74207375706044820152651c1bdc9d195960d21b60648201526084016102a0565b6060824710156109a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102a0565b600080866001600160a01b031685876040516109bc9190611e03565b60006040518083038185875af1925050503d80600081146109f9576040519150601f19603f3d011682016040523d82523d6000602084013e6109fe565b606091505b5091509150610a0f87838387610ad4565b979650505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610a6b8482610b4b565b610ace57604080516001600160a01b038516602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610ac4908590610bef565b610ace8482610bef565b50505050565b60608315610b41578251600003610b3a57610aee85610cc9565b610b3a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102a0565b5081610306565b6103068383610cd8565b6000806000846001600160a01b031684604051610b689190611e03565b6000604051808303816000865af19150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150818015610bd4575080511580610bd4575080806020019051810190610bd49190611e1f565b8015610be45750610be485610cc9565b925050505b92915050565b6000610c44826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610d029092919063ffffffff16565b9050805160001480610c65575080806020019051810190610c659190611e1f565b610cc45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102a0565b505050565b6001600160a01b03163b151590565b815115610ce85781518083602001fd5b8060405162461bcd60e51b81526004016102a09190611e3c565b6060610334848460008561093f565b6001600160a01b0381168114610d2657600080fd5b50565b8035610d3481610d11565b919050565b600080600060608486031215610d4e57600080fd5b8335610d5981610d11565b92506020840135915060408401356001600160401b03811115610d7b57600080fd5b840160808187031215610d8d57600080fd5b809150509250925092565b8015158114610d2657600080fd5b8035610d3481610d98565b600060208284031215610dc357600080fd5b813561033781610d98565b6000808335601e19843603018112610de557600080fd5b8301803591506001600160401b03821115610dff57600080fd5b602001915036819003821315610e1457600080fd5b9250929050565b600060208284031215610e2d57600080fd5b8135600b811061033757600080fd5b600060208284031215610e4e57600080fd5b813561033781610d11565b634e487b7160e01b600052602160045260246000fd5b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610ee057610ee0610ea8565b60405290565b60405160a081016001600160401b0381118282101715610ee057610ee0610ea8565b60405161014081016001600160401b0381118282101715610ee057610ee0610ea8565b604051601f8201601f191681016001600160401b0381118282101715610f5357610f53610ea8565b604052919050565b60006001600160401b03821115610f7457610f74610ea8565b50601f01601f191660200190565b60005b83811015610f9d578181015183820152602001610f85565b50506000910152565b60008060408385031215610fb957600080fd5b8251610fc481610d98565b60208401519092506001600160401b03811115610fe057600080fd5b8301601f81018513610ff157600080fd5b8051611004610fff82610f5b565b610f2b565b81815286602083850101111561101957600080fd5b61102a826020830160208601610f82565b8093505050509250929050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03169052565b60006020828403121561106c57600080fd5b5051919050565b6000808585111561108357600080fd5b8386111561109057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110c55780818660040360031b1b83161692505b505092915050565b600082601f8301126110de57600080fd5b81356110ec610fff82610f5b565b81815284602083860101111561110157600080fd5b816020850160208301376000918101602001919091529392505050565b803563ffffffff81168114610d3457600080fd5b60008060008084860361014081121561114a57600080fd5b60e081121561115857600080fd5b50611161610ebe565b853561116c81610d11565b815260208681013590820152604086013561118681610d11565b6040820152606086013561119981610d11565b806060830152506080860135608082015260a086013560a082015260c08601356111c281610d11565b60c0820152935060e08501356001600160401b038111156111e257600080fd5b6111ee878288016110cd565b9350506111fe6101008601610d29565b915061120d610120860161111e565b905092959194509250565b8082028115828204841417610be957634e487b7160e01b600052601160045260246000fd5b60008261125a57634e487b7160e01b600052601260045260246000fd5b500490565b60008151808452611277816020860160208601610f82565b601f01601f19169290920160200192915050565b600061014060018060a01b03808851168452602088015160208501528060408901511660408501528060608901511660608501526080880151608085015260a088015160a08501528060c08901511660c0850152508060e08401526112f28184018761125f565b91505061130361010083018561104d565b63ffffffff831661012083015295945050505050565b60006001600160401b0382111561133257611332610ea8565b5060051b60200190565b600082601f83011261134d57600080fd5b8135602061135d610fff83611319565b8083825260208201915060208460051b87010193508684111561137f57600080fd5b602086015b8481101561139b5780358352918301918301611384565b509695505050505050565b600080600080608085870312156113bc57600080fd5b84359350602085013592506040850135915060608501356001600160401b038111156113e757600080fd5b6113f38782880161133c565b91505092959194509250565b60008151808452602080850194506020840160005b8381101561143057815187529582019590820190600101611414565b509495945050505050565b84815283602082015282604082015260806060820152600061146060808301846113ff565b9695505050505050565b600060a0828403121561147c57600080fd5b611484610ee6565b905081358152602082013561149881610d11565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b600082601f8301126114d457600080fd5b813560206114e4610fff83611319565b8083825260208201915060208460051b87010193508684111561150657600080fd5b602086015b8481101561139b57803561151e81610d11565b835291830191830161150b565b600082601f83011261153c57600080fd5b8135602061154c610fff83611319565b82815260059290921b8401810191818101908684111561156b57600080fd5b8286015b8481101561139b5780356001600160401b0381111561158e5760008081fd5b61159c8986838b01016110cd565b84525091830191830161156f565b600082601f8301126115bb57600080fd5b6115c8610fff8335611319565b82358082526020808301929160051b8501018510156115e657600080fd5b602084015b6020853560051b860101811015611764576001600160401b03813581101561161257600080fd5b8135860187603f82011261162557600080fd5b611635610fff6020830135611319565b602082810135808352908201919060051b83016040018a81111561165857600080fd5b604084015b8181101561174d57858135111561167357600080fd5b8035850160a0818e03603f1901121561168b57600080fd5b611693610ee6565b87604083013511156116a457600080fd5b6116b68e6040808501358501016114c3565b815287606083013511156116c957600080fd5b6116dc8e604060608501358501016114c3565b602082015287608083013511156116f257600080fd5b6117058e6040608085013585010161133c565b60408201528760a0830135111561171b57600080fd5b61172e8e604060a085013585010161152b565b606082015260c09190910135608082015284526020938401930161165d565b5050865250506020938401939190910190506115eb565b50949350505050565b600082601f83011261177e57600080fd5b8135602061178e610fff83611319565b82815260059290921b840181019181810190868411156117ad57600080fd5b8286015b8481101561139b5780356001600160401b03808211156117d15760008081fd5b90880190610140828b03601f19018113156117ec5760008081fd5b6117f4610f08565b8784013581526040611807818601610d29565b898301526060611818818701610d29565b828401526080915061182b828701610d29565b818401525060a0808601358284015260c0915081860135818401525060e08086013582840152610100915081860135818401525061012061186d818701610da6565b8383015292850135928484111561188657600091508182fd5b6118948e8b868901016110cd565b908301525086525050509183019183016117b1565b60008060008060008061014087890312156118c357600080fd5b8635955060208701356118d581610d11565b94506118e4886040890161146a565b935060e08701356001600160401b038082111561190057600080fd5b61190c8a838b0161133c565b945061010089013591508082111561192357600080fd5b61192f8a838b016115aa565b935061012089013591508082111561194657600080fd5b5061195389828a0161176d565b9150509295509295509295565b805182526020808201516001600160a01b0316908301526040808201519083015260608082015190830152608090810151910152565b60008151808452602080850194506020840160005b838110156114305781516001600160a01b0316875295820195908201906001016119ab565b600082825180855260208501945060208160051b8301016020850160005b83811015611b1857601f1985840381018952825180518086526020918201918087019190600582901b88010160005b82811015611af857858983030184528451805160a08452611a4160a0850182611996565b905060208201518482036020860152611a5a8282611996565b91505060408201518482036040860152611a7482826113ff565b9150506060820151848203606086015281815180845260208401915060208160051b85010160208401935060005b82811015611ad1578c868303018452611abc82865161125f565b60209586019594909401939150600101611aa2565b50608095860151979095019690965250505060209586019594909401939150600101611a1d565b5080975050505050506020820191506020880197506001810190506119ee565b50909695505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015611bf657601f1986840301895281516101408151855285820151611b6b8787018261104d565b50604080830151611b7e8288018261104d565b5050606080830151611b928288018261104d565b50506080828101519086015260a0808301519086015260c0808301519086015260e080830151908601526101008083015115159086015261012091820151918501819052611be28186018361125f565b9a86019a9450505090830190600101611b41565b5090979650505050505050565b8681526001600160a01b03861660208201526000610140611c276040840188611960565b8060e0840152611c39818401876113ff565b9050828103610100840152611c4e81866119d0565b9050828103610120840152611c638185611b24565b9998505050505050505050565b600080600080600060a08688031215611c8857600080fd5b8535945060208601359350604086013592506060860135611ca881610d11565b915060808601356001600160401b03811115611cc357600080fd5b611ccf8882890161133c565b9150509295509295909350565b85815284602082015283604082015260018060a01b038316606082015260a060808201526000610a0f60a08301846113ff565b60008060008060006101208688031215611d2857600080fd5b85359450611d39876020880161146a565b935060c08601356001600160401b0380821115611d5557600080fd5b611d6189838a0161133c565b945060e0880135915080821115611d7757600080fd5b611d8389838a016115aa565b9350610100880135915080821115611d9a57600080fd5b50611ccf8882890161176d565b6000610120878352611dbc6020840188611960565b8060c0840152611dce818401876113ff565b905082810360e0840152611de281866119d0565b9050828103610100840152611df78185611b24565b98975050505050505050565b60008251611e15818460208701610f82565b9190910192915050565b600060208284031215611e3157600080fd5b815161033781610d98565b602081526000610337602083018461125f56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a26469706673582212201ee5128edaa2b8806bf8c51fcc78b9078ba879436d0ab0c097b34aad7bf5be7d64736f6c63430008170033",
|
|
82
|
-
"deployedBytecode": "0x6080604052600436106100225760003560e01c80632bdb823c1461002e57600080fd5b3661002957005b600080fd5b61004161003c366004610d39565b610043565b005b61004d8382610167565b6101066100606080830160608401610db1565b6100ab576100716040830183610dce565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100ce92505050565b6100ce6100bb6020840184610e1b565b6100c86040850185610dce565b866101b5565b6001600160a01b038516156100e45760006100e6565b835b6100f66040850160208601610e3c565b6001600160a01b0316919061030e565b506001600160a01b03831661011e6020830183610e1b565b600a81111561012f5761012f610e59565b6040518481527f1d8c50a59805451ff93bb2e438559a86b75386bcac2a591d3181d79e7e8346fd9060200160405180910390a3505050565b60046101766020830183610e1b565b600a81111561018757610187610e59565b036101a15761019d8261019861033e565b61045d565b5050565b61019d826101986040840160208501610e3c565b6060600185600a8111156101cb576101cb610e59565b036102af5760405163726d379760e11b8152600090732f577a41bec1be1152aeea12e73b7391d15f655d9063e4da6f2e9061020e90889088908890600401610e6f565b600060405180830381865afa15801561022b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102539190810190610fa6565b92509050806102a95760405162461bcd60e51b815260206004820181905260248201527f50656e646c65537761703a204b79626572207363616c696e67206661696c656460448201526064015b60405180910390fd5b50610306565b600285600a8111156102c3576102c3610e59565b036102da576102d38484846104ee565b9050610306565b600485600a8111156102ee576102ee610e59565b036102fe576102d3848484610602565b610306611037565b949350505050565b6060610334848484604051806060016040528060298152602001611e506029913961093f565b90505b9392505050565b60004660010361036157507340aa958dd87fc8305b97f2ba922cddca374bcd7f90565b46600a0361038257507368d6b739d2020067d1e2f713b999da97e4d5481290565b466038036103a35750732c34a2fb1d0b4f55de51e1d0bdefaddce6b7cdd690565b4661a4b1036103c557507370cbb871e8f30fc8ce23609e9e0ea87b6b222f5890565b46612105036103e757507357df6092665eb6058de53939612413ff4b09114e90565b466113880361040957507357df6092665eb6058de53939612413ff4b09114e90565b60405162461bcd60e51b815260206004820152602360248201527f50656e646c65537761703a204f4b5820436861696e206e6f7420737570706f726044820152621d195960ea1b60648201526084016102a0565b604051636eb1769f60e11b81523060048201526001600160a01b038281166024830152600019919084169063dd62ed3e90604401602060405180830381865afa1580156104ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d2919061105a565b101561019d5761019d6001600160a01b03831682600019610a1a565b606060006104ff6004828688611073565b6105089161109d565b905036600061051a866004818a611073565b90925090506001600160e01b03198316630ed8d73960e21b1461053f5761053f611037565b600080808061055085870187611132565b9350935093509350836020015189856080015161056d9190611218565b610577919061123d565b6080850152602084015160a0850151610591908b90611218565b61059b919061123d565b60a08501526020840189905260405187906105c090869086908690869060240161128b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529750505050505050509392505050565b606060006106136004828688611073565b61061c9161109d565b905036600061062e866004818a611073565b909250905063f2a0f1c560e01b6001600160e01b03198416016106d957600080808061065c858701876113a6565b93509350935093508289836106719190611218565b61067b919061123d565b91508892508684848484604051602401610698949392919061143b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915297506103379650505050505050565b63fc4781a160e01b6001600160e01b031984160161079a5760008080808080610704878901896118a9565b95509550955095509550955083604001518b85606001516107259190611218565b61072f919061123d565b606085015260408085018c905251899061075790889088908890889088908890602401611c03565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152995061033798505050505050505050565b637beb3a5360e11b6001600160e01b0319841601610846576000808080806107c486880188611c70565b94509450945094509450838a846107db9190611218565b6107e5919061123d565b9250899350878585858585604051602401610804959493929190611cdc565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529850610337975050505050505050565b6319e3841760e21b6001600160e01b031984160161086f57600080808061065c858701876113a6565b6347f3d0f760e01b6001600160e01b03198416016108e85760008080808061089986880188611d0f565b9450945094509450945083604001518a85606001516108b89190611218565b6108c2919061123d565b606085015260408085018b90525188906108049087908790879087908790602401611da7565b60405162461bcd60e51b815260206004820152602660248201527f50656e646c65537761703a204f4b582073656c6563746f72206e6f74207375706044820152651c1bdc9d195960d21b60648201526084016102a0565b6060824710156109a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102a0565b600080866001600160a01b031685876040516109bc9190611e03565b60006040518083038185875af1925050503d80600081146109f9576040519150601f19603f3d011682016040523d82523d6000602084013e6109fe565b606091505b5091509150610a0f87838387610ad4565b979650505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610a6b8482610b4b565b610ace57604080516001600160a01b038516602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610ac4908590610bef565b610ace8482610bef565b50505050565b60608315610b41578251600003610b3a57610aee85610cc9565b610b3a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102a0565b5081610306565b6103068383610cd8565b6000806000846001600160a01b031684604051610b689190611e03565b6000604051808303816000865af19150503d8060008114610ba5576040519150601f19603f3d011682016040523d82523d6000602084013e610baa565b606091505b5091509150818015610bd4575080511580610bd4575080806020019051810190610bd49190611e1f565b8015610be45750610be485610cc9565b925050505b92915050565b6000610c44826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610d029092919063ffffffff16565b9050805160001480610c65575080806020019051810190610c659190611e1f565b610cc45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102a0565b505050565b6001600160a01b03163b151590565b815115610ce85781518083602001fd5b8060405162461bcd60e51b81526004016102a09190611e3c565b6060610334848460008561093f565b6001600160a01b0381168114610d2657600080fd5b50565b8035610d3481610d11565b919050565b600080600060608486031215610d4e57600080fd5b8335610d5981610d11565b92506020840135915060408401356001600160401b03811115610d7b57600080fd5b840160808187031215610d8d57600080fd5b809150509250925092565b8015158114610d2657600080fd5b8035610d3481610d98565b600060208284031215610dc357600080fd5b813561033781610d98565b6000808335601e19843603018112610de557600080fd5b8301803591506001600160401b03821115610dff57600080fd5b602001915036819003821315610e1457600080fd5b9250929050565b600060208284031215610e2d57600080fd5b8135600b811061033757600080fd5b600060208284031215610e4e57600080fd5b813561033781610d11565b634e487b7160e01b600052602160045260246000fd5b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610ee057610ee0610ea8565b60405290565b60405160a081016001600160401b0381118282101715610ee057610ee0610ea8565b60405161014081016001600160401b0381118282101715610ee057610ee0610ea8565b604051601f8201601f191681016001600160401b0381118282101715610f5357610f53610ea8565b604052919050565b60006001600160401b03821115610f7457610f74610ea8565b50601f01601f191660200190565b60005b83811015610f9d578181015183820152602001610f85565b50506000910152565b60008060408385031215610fb957600080fd5b8251610fc481610d98565b60208401519092506001600160401b03811115610fe057600080fd5b8301601f81018513610ff157600080fd5b8051611004610fff82610f5b565b610f2b565b81815286602083850101111561101957600080fd5b61102a826020830160208601610f82565b8093505050509250929050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03169052565b60006020828403121561106c57600080fd5b5051919050565b6000808585111561108357600080fd5b8386111561109057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110c55780818660040360031b1b83161692505b505092915050565b600082601f8301126110de57600080fd5b81356110ec610fff82610f5b565b81815284602083860101111561110157600080fd5b816020850160208301376000918101602001919091529392505050565b803563ffffffff81168114610d3457600080fd5b60008060008084860361014081121561114a57600080fd5b60e081121561115857600080fd5b50611161610ebe565b853561116c81610d11565b815260208681013590820152604086013561118681610d11565b6040820152606086013561119981610d11565b806060830152506080860135608082015260a086013560a082015260c08601356111c281610d11565b60c0820152935060e08501356001600160401b038111156111e257600080fd5b6111ee878288016110cd565b9350506111fe6101008601610d29565b915061120d610120860161111e565b905092959194509250565b8082028115828204841417610be957634e487b7160e01b600052601160045260246000fd5b60008261125a57634e487b7160e01b600052601260045260246000fd5b500490565b60008151808452611277816020860160208601610f82565b601f01601f19169290920160200192915050565b600061014060018060a01b03808851168452602088015160208501528060408901511660408501528060608901511660608501526080880151608085015260a088015160a08501528060c08901511660c0850152508060e08401526112f28184018761125f565b91505061130361010083018561104d565b63ffffffff831661012083015295945050505050565b60006001600160401b0382111561133257611332610ea8565b5060051b60200190565b600082601f83011261134d57600080fd5b8135602061135d610fff83611319565b8083825260208201915060208460051b87010193508684111561137f57600080fd5b602086015b8481101561139b5780358352918301918301611384565b509695505050505050565b600080600080608085870312156113bc57600080fd5b84359350602085013592506040850135915060608501356001600160401b038111156113e757600080fd5b6113f38782880161133c565b91505092959194509250565b60008151808452602080850194506020840160005b8381101561143057815187529582019590820190600101611414565b509495945050505050565b84815283602082015282604082015260806060820152600061146060808301846113ff565b9695505050505050565b600060a0828403121561147c57600080fd5b611484610ee6565b905081358152602082013561149881610d11565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b600082601f8301126114d457600080fd5b813560206114e4610fff83611319565b8083825260208201915060208460051b87010193508684111561150657600080fd5b602086015b8481101561139b57803561151e81610d11565b835291830191830161150b565b600082601f83011261153c57600080fd5b8135602061154c610fff83611319565b82815260059290921b8401810191818101908684111561156b57600080fd5b8286015b8481101561139b5780356001600160401b0381111561158e5760008081fd5b61159c8986838b01016110cd565b84525091830191830161156f565b600082601f8301126115bb57600080fd5b6115c8610fff8335611319565b82358082526020808301929160051b8501018510156115e657600080fd5b602084015b6020853560051b860101811015611764576001600160401b03813581101561161257600080fd5b8135860187603f82011261162557600080fd5b611635610fff6020830135611319565b602082810135808352908201919060051b83016040018a81111561165857600080fd5b604084015b8181101561174d57858135111561167357600080fd5b8035850160a0818e03603f1901121561168b57600080fd5b611693610ee6565b87604083013511156116a457600080fd5b6116b68e6040808501358501016114c3565b815287606083013511156116c957600080fd5b6116dc8e604060608501358501016114c3565b602082015287608083013511156116f257600080fd5b6117058e6040608085013585010161133c565b60408201528760a0830135111561171b57600080fd5b61172e8e604060a085013585010161152b565b606082015260c09190910135608082015284526020938401930161165d565b5050865250506020938401939190910190506115eb565b50949350505050565b600082601f83011261177e57600080fd5b8135602061178e610fff83611319565b82815260059290921b840181019181810190868411156117ad57600080fd5b8286015b8481101561139b5780356001600160401b03808211156117d15760008081fd5b90880190610140828b03601f19018113156117ec5760008081fd5b6117f4610f08565b8784013581526040611807818601610d29565b898301526060611818818701610d29565b828401526080915061182b828701610d29565b818401525060a0808601358284015260c0915081860135818401525060e08086013582840152610100915081860135818401525061012061186d818701610da6565b8383015292850135928484111561188657600091508182fd5b6118948e8b868901016110cd565b908301525086525050509183019183016117b1565b60008060008060008061014087890312156118c357600080fd5b8635955060208701356118d581610d11565b94506118e4886040890161146a565b935060e08701356001600160401b038082111561190057600080fd5b61190c8a838b0161133c565b945061010089013591508082111561192357600080fd5b61192f8a838b016115aa565b935061012089013591508082111561194657600080fd5b5061195389828a0161176d565b9150509295509295509295565b805182526020808201516001600160a01b0316908301526040808201519083015260608082015190830152608090810151910152565b60008151808452602080850194506020840160005b838110156114305781516001600160a01b0316875295820195908201906001016119ab565b600082825180855260208501945060208160051b8301016020850160005b83811015611b1857601f1985840381018952825180518086526020918201918087019190600582901b88010160005b82811015611af857858983030184528451805160a08452611a4160a0850182611996565b905060208201518482036020860152611a5a8282611996565b91505060408201518482036040860152611a7482826113ff565b9150506060820151848203606086015281815180845260208401915060208160051b85010160208401935060005b82811015611ad1578c868303018452611abc82865161125f565b60209586019594909401939150600101611aa2565b50608095860151979095019690965250505060209586019594909401939150600101611a1d565b5080975050505050506020820191506020880197506001810190506119ee565b50909695505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015611bf657601f1986840301895281516101408151855285820151611b6b8787018261104d565b50604080830151611b7e8288018261104d565b5050606080830151611b928288018261104d565b50506080828101519086015260a0808301519086015260c0808301519086015260e080830151908601526101008083015115159086015261012091820151918501819052611be28186018361125f565b9a86019a9450505090830190600101611b41565b5090979650505050505050565b8681526001600160a01b03861660208201526000610140611c276040840188611960565b8060e0840152611c39818401876113ff565b9050828103610100840152611c4e81866119d0565b9050828103610120840152611c638185611b24565b9998505050505050505050565b600080600080600060a08688031215611c8857600080fd5b8535945060208601359350604086013592506060860135611ca881610d11565b915060808601356001600160401b03811115611cc357600080fd5b611ccf8882890161133c565b9150509295509295909350565b85815284602082015283604082015260018060a01b038316606082015260a060808201526000610a0f60a08301846113ff565b60008060008060006101208688031215611d2857600080fd5b85359450611d39876020880161146a565b935060c08601356001600160401b0380821115611d5557600080fd5b611d6189838a0161133c565b945060e0880135915080821115611d7757600080fd5b611d8389838a016115aa565b9350610100880135915080821115611d9a57600080fd5b50611ccf8882890161176d565b6000610120878352611dbc6020840188611960565b8060c0840152611dce818401876113ff565b905082810360e0840152611de281866119d0565b9050828103610100840152611df78185611b24565b98975050505050505050565b60008251611e15818460208701610f82565b9190910192915050565b600060208284031215611e3157600080fd5b815161033781610d98565b602081526000610337602083018461125f56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a26469706673582212201ee5128edaa2b8806bf8c51fcc78b9078ba879436d0ab0c097b34aad7bf5be7d64736f6c63430008170033",
|
|
134
|
+
"bytecode": "0x60a0604052732f577a41bec1be1152aeea12e73b7391d15f655d60805234801561002857600080fd5b50608051610fb161004a60003960008181607e01526103930152610fb16000f3fe6080604052600436106100385760003560e01c80632bdb823c14610044578063359be188146100595780638930af571461006c57600080fd5b3661003f57005b600080fd5b610057610052366004610895565b6100bc565b005b6100576100673660046108ed565b6101ef565b34801561007857600080fd5b506100a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100d5836100d06040840160208501610979565b61029a565b61018e6100e860808301606084016109ab565b610133576100f960408301836109c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015692505050565b6101566101436020840184610a15565b61015060408501856109c8565b8661035e565b6001600160a01b0385161561016c57600061016e565b835b61017e6040850160208601610979565b6001600160a01b031691906104a8565b506001600160a01b0383166101a66020830183610a15565b600a8111156101b7576101b7610a36565b6040518481527f1d8c50a59805451ff93bb2e438559a86b75386bcac2a591d3181d79e7e8346fd9060200160405180910390a3505050565b60005b8281101561023c5761023484848381811061020f5761020f610a4c565b90506020020160208101906102249190610979565b6100d06040850160208601610979565b6001016101f2565b5061029461024d60408301836109c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525034925061017e9150506040850160208601610979565b50505050565b6001600160a01b0382166102ac575050565b6102be60026001600160601b03610a78565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b9190610a9e565b101561035a5761034d828260006104ce565b61035a82826000196104ce565b5050565b6060600185600a81111561037457610374610a36565b0361046d5760405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906103cc90889088908890600401610ab7565b600060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104119190810190610ba9565b92509050806104675760405162461bcd60e51b815260206004820181905260248201527f50656e646c65537761703a204b79626572207363616c696e67206661696c656460448201526064015b60405180910390fd5b506104a0565b600285600a81111561048157610481610a36565b03610498576104918484846105d8565b90506104a0565b6104a0610c3a565b949350505050565b60606104a0848484604051806060016040528060298152602001610f53602991396106ec565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915160009283929087169161052a9190610c50565b6000604051808303816000865af19150503d8060008114610567576040519150601f19603f3d011682016040523d82523d6000602084013e61056c565b606091505b50915091508180156105965750805115806105965750808060200190518101906105969190610c6c565b6105d15760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b604482015260640161045e565b5050505050565b606060006105e96004828688610c89565b6105f291610cb3565b9050366000610604866004818a610c89565b90925090506001600160e01b03198316630ed8d73960e21b1461062957610629610c3a565b600080808061063a85870187610d58565b935093509350935083602001518985608001516106579190610e3e565b6106619190610e69565b6080850152602084015160a085015161067b908b90610e3e565b6106859190610e69565b60a08501526020840189905260405187906106aa908690869086908690602401610ea9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529750505050505050509392505050565b60608247101561074d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161045e565b600080866001600160a01b031685876040516107699190610c50565b60006040518083038185875af1925050503d80600081146107a6576040519150601f19603f3d011682016040523d82523d6000602084013e6107ab565b606091505b50915091506107bc878383876107c7565b979650505050505050565b6060831561083657825160000361082f576001600160a01b0385163b61082f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045e565b50816104a0565b6104a0838381511561084b5781518083602001fd5b8060405162461bcd60e51b815260040161045e9190610f3f565b6001600160a01b038116811461087a57600080fd5b50565b60006080828403121561088f57600080fd5b50919050565b6000806000606084860312156108aa57600080fd5b83356108b581610865565b92506020840135915060408401356001600160401b038111156108d757600080fd5b6108e38682870161087d565b9150509250925092565b60008060006040848603121561090257600080fd5b83356001600160401b038082111561091957600080fd5b818601915086601f83011261092d57600080fd5b81358181111561093c57600080fd5b8760208260051b850101111561095157600080fd5b60209283019550935090850135908082111561096c57600080fd5b506108e38682870161087d565b60006020828403121561098b57600080fd5b813561099681610865565b9392505050565b801515811461087a57600080fd5b6000602082840312156109bd57600080fd5b81356109968161099d565b6000808335601e198436030181126109df57600080fd5b8301803591506001600160401b038211156109f957600080fd5b602001915036819003821315610a0e57600080fd5b9250929050565b600060208284031215610a2757600080fd5b8135600b811061099657600080fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60006001600160601b0383811680610a9257610a92610a62565b92169190910492915050565b600060208284031215610ab057600080fd5b5051919050565b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610b2857610b28610af0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610b5657610b56610af0565b604052919050565b60006001600160401b03821115610b7757610b77610af0565b50601f01601f191660200190565b60005b83811015610ba0578181015183820152602001610b88565b50506000910152565b60008060408385031215610bbc57600080fd5b8251610bc78161099d565b60208401519092506001600160401b03811115610be357600080fd5b8301601f81018513610bf457600080fd5b8051610c07610c0282610b5e565b610b2e565b818152866020838501011115610c1c57600080fd5b610c2d826020830160208601610b85565b8093505050509250929050565b634e487b7160e01b600052600160045260246000fd5b60008251610c62818460208701610b85565b9190910192915050565b600060208284031215610c7e57600080fd5b81516109968161099d565b60008085851115610c9957600080fd5b83861115610ca657600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015610cdb5780818660040360031b1b83161692505b505092915050565b600082601f830112610cf457600080fd5b8135610d02610c0282610b5e565b818152846020838601011115610d1757600080fd5b816020850160208301376000918101602001919091529392505050565b8035610d3f81610865565b919050565b803563ffffffff81168114610d3f57600080fd5b600080600080848603610140811215610d7057600080fd5b60e0811215610d7e57600080fd5b50610d87610b06565b8535610d9281610865565b8152602086810135908201526040860135610dac81610865565b60408201526060860135610dbf81610865565b806060830152506080860135608082015260a086013560a082015260c0860135610de881610865565b60c0820152935060e08501356001600160401b03811115610e0857600080fd5b610e1487828801610ce3565b935050610e246101008601610d34565b9150610e336101208601610d44565b905092959194509250565b8082028115828204841417610e6357634e487b7160e01b600052601160045260246000fd5b92915050565b600082610e7857610e78610a62565b500490565b60008151808452610e95816020860160208601610b85565b601f01601f19169290920160200192915050565b600061014060018060a01b03808851168452602088015160208501528060408901511660408501528060608901511660608501526080880151608085015260a088015160a08501528060c08901511660c0850152508060e0840152610f1081840187610e7d565b915050610f296101008301856001600160a01b03169052565b63ffffffff831661012083015295945050505050565b6020815260006109966020830184610e7d56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220fc93563c01604b5ea2952b8818a1695317ea61dbda41e43183be0ca6758fe67464736f6c63430008170033",
|
|
135
|
+
"deployedBytecode": "0x6080604052600436106100385760003560e01c80632bdb823c14610044578063359be188146100595780638930af571461006c57600080fd5b3661003f57005b600080fd5b610057610052366004610895565b6100bc565b005b6100576100673660046108ed565b6101ef565b34801561007857600080fd5b506100a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100d5836100d06040840160208501610979565b61029a565b61018e6100e860808301606084016109ab565b610133576100f960408301836109c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015692505050565b6101566101436020840184610a15565b61015060408501856109c8565b8661035e565b6001600160a01b0385161561016c57600061016e565b835b61017e6040850160208601610979565b6001600160a01b031691906104a8565b506001600160a01b0383166101a66020830183610a15565b600a8111156101b7576101b7610a36565b6040518481527f1d8c50a59805451ff93bb2e438559a86b75386bcac2a591d3181d79e7e8346fd9060200160405180910390a3505050565b60005b8281101561023c5761023484848381811061020f5761020f610a4c565b90506020020160208101906102249190610979565b6100d06040850160208601610979565b6001016101f2565b5061029461024d60408301836109c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525034925061017e9150506040850160208601610979565b50505050565b6001600160a01b0382166102ac575050565b6102be60026001600160601b03610a78565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b9190610a9e565b101561035a5761034d828260006104ce565b61035a82826000196104ce565b5050565b6060600185600a81111561037457610374610a36565b0361046d5760405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906103cc90889088908890600401610ab7565b600060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104119190810190610ba9565b92509050806104675760405162461bcd60e51b815260206004820181905260248201527f50656e646c65537761703a204b79626572207363616c696e67206661696c656460448201526064015b60405180910390fd5b506104a0565b600285600a81111561048157610481610a36565b03610498576104918484846105d8565b90506104a0565b6104a0610c3a565b949350505050565b60606104a0848484604051806060016040528060298152602001610f53602991396106ec565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915160009283929087169161052a9190610c50565b6000604051808303816000865af19150503d8060008114610567576040519150601f19603f3d011682016040523d82523d6000602084013e61056c565b606091505b50915091508180156105965750805115806105965750808060200190518101906105969190610c6c565b6105d15760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b604482015260640161045e565b5050505050565b606060006105e96004828688610c89565b6105f291610cb3565b9050366000610604866004818a610c89565b90925090506001600160e01b03198316630ed8d73960e21b1461062957610629610c3a565b600080808061063a85870187610d58565b935093509350935083602001518985608001516106579190610e3e565b6106619190610e69565b6080850152602084015160a085015161067b908b90610e3e565b6106859190610e69565b60a08501526020840189905260405187906106aa908690869086908690602401610ea9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529750505050505050509392505050565b60608247101561074d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161045e565b600080866001600160a01b031685876040516107699190610c50565b60006040518083038185875af1925050503d80600081146107a6576040519150601f19603f3d011682016040523d82523d6000602084013e6107ab565b606091505b50915091506107bc878383876107c7565b979650505050505050565b6060831561083657825160000361082f576001600160a01b0385163b61082f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045e565b50816104a0565b6104a0838381511561084b5781518083602001fd5b8060405162461bcd60e51b815260040161045e9190610f3f565b6001600160a01b038116811461087a57600080fd5b50565b60006080828403121561088f57600080fd5b50919050565b6000806000606084860312156108aa57600080fd5b83356108b581610865565b92506020840135915060408401356001600160401b038111156108d757600080fd5b6108e38682870161087d565b9150509250925092565b60008060006040848603121561090257600080fd5b83356001600160401b038082111561091957600080fd5b818601915086601f83011261092d57600080fd5b81358181111561093c57600080fd5b8760208260051b850101111561095157600080fd5b60209283019550935090850135908082111561096c57600080fd5b506108e38682870161087d565b60006020828403121561098b57600080fd5b813561099681610865565b9392505050565b801515811461087a57600080fd5b6000602082840312156109bd57600080fd5b81356109968161099d565b6000808335601e198436030181126109df57600080fd5b8301803591506001600160401b038211156109f957600080fd5b602001915036819003821315610a0e57600080fd5b9250929050565b600060208284031215610a2757600080fd5b8135600b811061099657600080fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60006001600160601b0383811680610a9257610a92610a62565b92169190910492915050565b600060208284031215610ab057600080fd5b5051919050565b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610b2857610b28610af0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610b5657610b56610af0565b604052919050565b60006001600160401b03821115610b7757610b77610af0565b50601f01601f191660200190565b60005b83811015610ba0578181015183820152602001610b88565b50506000910152565b60008060408385031215610bbc57600080fd5b8251610bc78161099d565b60208401519092506001600160401b03811115610be357600080fd5b8301601f81018513610bf457600080fd5b8051610c07610c0282610b5e565b610b2e565b818152866020838501011115610c1c57600080fd5b610c2d826020830160208601610b85565b8093505050509250929050565b634e487b7160e01b600052600160045260246000fd5b60008251610c62818460208701610b85565b9190910192915050565b600060208284031215610c7e57600080fd5b81516109968161099d565b60008085851115610c9957600080fd5b83861115610ca657600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015610cdb5780818660040360031b1b83161692505b505092915050565b600082601f830112610cf457600080fd5b8135610d02610c0282610b5e565b818152846020838601011115610d1757600080fd5b816020850160208301376000918101602001919091529392505050565b8035610d3f81610865565b919050565b803563ffffffff81168114610d3f57600080fd5b600080600080848603610140811215610d7057600080fd5b60e0811215610d7e57600080fd5b50610d87610b06565b8535610d9281610865565b8152602086810135908201526040860135610dac81610865565b60408201526060860135610dbf81610865565b806060830152506080860135608082015260a086013560a082015260c0860135610de881610865565b60c0820152935060e08501356001600160401b03811115610e0857600080fd5b610e1487828801610ce3565b935050610e246101008601610d34565b9150610e336101208601610d44565b905092959194509250565b8082028115828204841417610e6357634e487b7160e01b600052601160045260246000fd5b92915050565b600082610e7857610e78610a62565b500490565b60008151808452610e95816020860160208601610b85565b601f01601f19169290920160200192915050565b600061014060018060a01b03808851168452602088015160208501528060408901511660408501528060608901511660608501526080880151608085015260a088015160a08501528060c08901511660c0850152508060e0840152610f1081840187610e7d565b915050610f296101008301856001600160a01b03169052565b63ffffffff831661012083015295945050505050565b6020815260006109966020830184610e7d56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220fc93563c01604b5ea2952b8818a1695317ea61dbda41e43183be0ca6758fe67464736f6c63430008170033",
|
|
83
136
|
"linkReferences": {},
|
|
84
137
|
"deployedLinkReferences": {}
|
|
85
138
|
}
|
|
@@ -34,4 +34,6 @@ interface IPSwapAggregator {
|
|
|
34
34
|
event SwapSingle(SwapType indexed swapType, address indexed tokenIn, uint256 amountIn);
|
|
35
35
|
|
|
36
36
|
function swap(address tokenIn, uint256 amountIn, SwapData calldata swapData) external payable;
|
|
37
|
+
|
|
38
|
+
function swapMultiOdos(address[] calldata tokensIn, SwapData calldata swapData) external payable;
|
|
37
39
|
}
|
|
@@ -3,16 +3,14 @@ pragma solidity ^0.8.17;
|
|
|
3
3
|
|
|
4
4
|
import "../../core/libraries/TokenHelper.sol";
|
|
5
5
|
import "./IPSwapAggregator.sol";
|
|
6
|
-
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
7
6
|
|
|
8
7
|
contract PendleSwap is IPSwapAggregator, TokenHelper {
|
|
9
8
|
using Address for address;
|
|
10
|
-
using SafeERC20 for IERC20;
|
|
11
9
|
|
|
12
|
-
address
|
|
10
|
+
address public immutable KYBER_SCALING_HELPER = 0x2f577A41BeC1BE1152AeEA12e73b7391d15f655D;
|
|
13
11
|
|
|
14
12
|
function swap(address tokenIn, uint256 amountIn, SwapData calldata data) external payable {
|
|
15
|
-
|
|
13
|
+
_safeApproveInf(tokenIn, data.extRouter);
|
|
16
14
|
data.extRouter.functionCallWithValue(
|
|
17
15
|
data.needScale ? _getScaledInputData(data.swapType, data.extCalldata, amountIn) : data.extCalldata,
|
|
18
16
|
tokenIn == NATIVE ? amountIn : 0
|
|
@@ -21,18 +19,11 @@ contract PendleSwap is IPSwapAggregator, TokenHelper {
|
|
|
21
19
|
emit SwapSingle(data.swapType, tokenIn, amountIn);
|
|
22
20
|
}
|
|
23
21
|
|
|
24
|
-
function
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} else {
|
|
28
|
-
_safeApproveInfV2(token, data.extRouter);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function _safeApproveInfV2(address token, address spender) internal {
|
|
33
|
-
if (IERC20(token).allowance(address(this), spender) < type(uint256).max) {
|
|
34
|
-
IERC20(token).forceApprove(spender, type(uint256).max);
|
|
22
|
+
function swapMultiOdos(address[] calldata tokensIn, SwapData calldata data) external payable {
|
|
23
|
+
for (uint256 i = 0; i < tokensIn.length; ++i) {
|
|
24
|
+
_safeApproveInf(tokensIn[i], data.extRouter);
|
|
35
25
|
}
|
|
26
|
+
data.extRouter.functionCallWithValue(data.extCalldata, msg.value);
|
|
36
27
|
}
|
|
37
28
|
|
|
38
29
|
function _getScaledInputData(
|
|
@@ -50,8 +41,6 @@ contract PendleSwap is IPSwapAggregator, TokenHelper {
|
|
|
50
41
|
require(isSuccess, "PendleSwap: Kyber scaling failed");
|
|
51
42
|
} else if (swapType == SwapType.ODOS) {
|
|
52
43
|
scaledCallData = _odosScaling(rawCallData, amountIn);
|
|
53
|
-
} else if (swapType == SwapType.OKX) {
|
|
54
|
-
scaledCallData = _okxScaling(rawCallData, amountIn);
|
|
55
44
|
} else {
|
|
56
45
|
assert(false);
|
|
57
46
|
}
|
|
@@ -79,115 +68,6 @@ contract PendleSwap is IPSwapAggregator, TokenHelper {
|
|
|
79
68
|
return abi.encodeWithSelector(selector, tokenInfo, pathDefinition, executor, referralCode);
|
|
80
69
|
}
|
|
81
70
|
|
|
82
|
-
function _okx_getTokenApprove() internal view returns (address) {
|
|
83
|
-
if (block.chainid == 1) {
|
|
84
|
-
return 0x40aA958dd87FC8305b97f2BA922CDdCa374bcD7f;
|
|
85
|
-
}
|
|
86
|
-
if (block.chainid == 10) {
|
|
87
|
-
return 0x68D6B739D2020067D1e2F713b999dA97E4d54812;
|
|
88
|
-
}
|
|
89
|
-
if (block.chainid == 56) {
|
|
90
|
-
return 0x2c34A2Fb1d0b4f55de51E1d0bDEfaDDce6b7cDD6;
|
|
91
|
-
}
|
|
92
|
-
if (block.chainid == 42161) {
|
|
93
|
-
return 0x70cBb871E8f30Fc8Ce23609E9E0Ea87B6b222F58;
|
|
94
|
-
}
|
|
95
|
-
if (block.chainid == 8453) {
|
|
96
|
-
return 0x57df6092665eb6058DE53939612413ff4B09114E;
|
|
97
|
-
}
|
|
98
|
-
if (block.chainid == 5000) {
|
|
99
|
-
return 0x57df6092665eb6058DE53939612413ff4B09114E;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
revert("PendleSwap: OKX Chain not supported");
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function _okxScaling(
|
|
106
|
-
bytes calldata rawCallData,
|
|
107
|
-
uint256 actualAmount
|
|
108
|
-
) internal pure returns (bytes memory scaledCallData) {
|
|
109
|
-
bytes4 selector = bytes4(rawCallData[:4]);
|
|
110
|
-
bytes calldata dataToDecode = rawCallData[4:];
|
|
111
|
-
|
|
112
|
-
if (selector == IOKXDexRouter.uniswapV3SwapTo.selector) {
|
|
113
|
-
(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] memory pools) = abi.decode(
|
|
114
|
-
dataToDecode,
|
|
115
|
-
(uint256, uint256, uint256, uint256[])
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
minReturn = (minReturn * actualAmount) / amount;
|
|
119
|
-
amount = actualAmount;
|
|
120
|
-
|
|
121
|
-
return abi.encodeWithSelector(selector, receiver, amount, minReturn, pools);
|
|
122
|
-
} else if (selector == IOKXDexRouter.smartSwapTo.selector) {
|
|
123
|
-
(
|
|
124
|
-
uint256 orderId,
|
|
125
|
-
address receiver,
|
|
126
|
-
IOKXDexRouter.BaseRequest memory baseRequest,
|
|
127
|
-
uint256[] memory batchesAmount,
|
|
128
|
-
IOKXDexRouter.RouterPath[][] memory batches,
|
|
129
|
-
IOKXDexRouter.PMMSwapRequest[] memory extraData
|
|
130
|
-
) = abi.decode(
|
|
131
|
-
dataToDecode,
|
|
132
|
-
(
|
|
133
|
-
uint256,
|
|
134
|
-
address,
|
|
135
|
-
IOKXDexRouter.BaseRequest,
|
|
136
|
-
uint256[],
|
|
137
|
-
IOKXDexRouter.RouterPath[][],
|
|
138
|
-
IOKXDexRouter.PMMSwapRequest[]
|
|
139
|
-
)
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
baseRequest.minReturnAmount = (baseRequest.minReturnAmount * actualAmount) / baseRequest.fromTokenAmount;
|
|
143
|
-
baseRequest.fromTokenAmount = actualAmount;
|
|
144
|
-
|
|
145
|
-
return abi.encodeWithSelector(selector, orderId, receiver, baseRequest, batchesAmount, batches, extraData);
|
|
146
|
-
} else if (selector == IOKXDexRouter.unxswapTo.selector) {
|
|
147
|
-
(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] memory pools) = abi
|
|
148
|
-
.decode(dataToDecode, (uint256, uint256, uint256, address, bytes32[]));
|
|
149
|
-
|
|
150
|
-
minReturn = (minReturn * actualAmount) / amount;
|
|
151
|
-
amount = actualAmount;
|
|
152
|
-
|
|
153
|
-
return abi.encodeWithSelector(selector, srcToken, amount, minReturn, receiver, pools);
|
|
154
|
-
} else if (selector == IOKXDexRouter.unxswapByOrderId.selector) {
|
|
155
|
-
(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] memory pools) = abi.decode(
|
|
156
|
-
dataToDecode,
|
|
157
|
-
(uint256, uint256, uint256, bytes32[])
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
minReturn = (minReturn * actualAmount) / amount;
|
|
161
|
-
amount = actualAmount;
|
|
162
|
-
|
|
163
|
-
return abi.encodeWithSelector(selector, srcToken, amount, minReturn, pools);
|
|
164
|
-
} else if (selector == IOKXDexRouter.smartSwapByOrderId.selector) {
|
|
165
|
-
(
|
|
166
|
-
uint256 orderId,
|
|
167
|
-
IOKXDexRouter.BaseRequest memory baseRequest,
|
|
168
|
-
uint256[] memory batchesAmount,
|
|
169
|
-
IOKXDexRouter.RouterPath[][] memory batches,
|
|
170
|
-
IOKXDexRouter.PMMSwapRequest[] memory extraData
|
|
171
|
-
) = abi.decode(
|
|
172
|
-
dataToDecode,
|
|
173
|
-
(
|
|
174
|
-
uint256,
|
|
175
|
-
IOKXDexRouter.BaseRequest,
|
|
176
|
-
uint256[],
|
|
177
|
-
IOKXDexRouter.RouterPath[][],
|
|
178
|
-
IOKXDexRouter.PMMSwapRequest[]
|
|
179
|
-
)
|
|
180
|
-
);
|
|
181
|
-
|
|
182
|
-
baseRequest.minReturnAmount = (baseRequest.minReturnAmount * actualAmount) / baseRequest.fromTokenAmount;
|
|
183
|
-
baseRequest.fromTokenAmount = actualAmount;
|
|
184
|
-
|
|
185
|
-
return abi.encodeWithSelector(selector, orderId, baseRequest, batchesAmount, batches, extraData);
|
|
186
|
-
} else {
|
|
187
|
-
revert("PendleSwap: OKX selector not supported");
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
71
|
receive() external payable {}
|
|
192
72
|
}
|
|
193
73
|
|
|
@@ -216,88 +96,3 @@ interface IOdosRouterV2 {
|
|
|
216
96
|
uint32 referralCode
|
|
217
97
|
) external payable returns (uint256 amountOut);
|
|
218
98
|
}
|
|
219
|
-
|
|
220
|
-
interface IOKXDexRouter {
|
|
221
|
-
struct BaseRequest {
|
|
222
|
-
uint256 fromToken;
|
|
223
|
-
address toToken;
|
|
224
|
-
uint256 fromTokenAmount;
|
|
225
|
-
uint256 minReturnAmount;
|
|
226
|
-
uint256 deadLine;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
struct RouterPath {
|
|
230
|
-
address[] mixAdapters;
|
|
231
|
-
address[] assetTo;
|
|
232
|
-
uint256[] rawData;
|
|
233
|
-
bytes[] extraData;
|
|
234
|
-
uint256 fromToken;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
struct PMMSwapRequest {
|
|
238
|
-
uint256 pathIndex;
|
|
239
|
-
address payer;
|
|
240
|
-
address fromToken;
|
|
241
|
-
address toToken;
|
|
242
|
-
uint256 fromTokenAmountMax;
|
|
243
|
-
uint256 toTokenAmountMax;
|
|
244
|
-
uint256 salt;
|
|
245
|
-
uint256 deadLine;
|
|
246
|
-
bool isPushOrder;
|
|
247
|
-
bytes extension;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// // address marketMaker;
|
|
251
|
-
// // uint256 subIndex;
|
|
252
|
-
// // bytes signature;
|
|
253
|
-
// // uint256 source; 1byte type + 1byte bool(reverse) + 0...0 + 20 bytes address
|
|
254
|
-
|
|
255
|
-
// function smartSwapByInvest(
|
|
256
|
-
// BaseRequest calldata baseRequest,
|
|
257
|
-
// uint256[] calldata batchesAmount,
|
|
258
|
-
// RouterPath[][] calldata batches,
|
|
259
|
-
// PMMSwapRequest[] calldata extraData,
|
|
260
|
-
// address to
|
|
261
|
-
// ) external payable;
|
|
262
|
-
|
|
263
|
-
function uniswapV3SwapTo(
|
|
264
|
-
uint256 receiver,
|
|
265
|
-
uint256 amount,
|
|
266
|
-
uint256 minReturn,
|
|
267
|
-
uint256[] calldata pools
|
|
268
|
-
) external payable returns (uint256 returnAmount);
|
|
269
|
-
|
|
270
|
-
function smartSwapTo(
|
|
271
|
-
uint256 orderId,
|
|
272
|
-
address receiver,
|
|
273
|
-
BaseRequest calldata baseRequest,
|
|
274
|
-
uint256[] calldata batchesAmount,
|
|
275
|
-
RouterPath[][] calldata batches,
|
|
276
|
-
PMMSwapRequest[] calldata extraData
|
|
277
|
-
) external payable;
|
|
278
|
-
|
|
279
|
-
function unxswapTo(
|
|
280
|
-
uint256 srcToken,
|
|
281
|
-
uint256 amount,
|
|
282
|
-
uint256 minReturn,
|
|
283
|
-
address receiver,
|
|
284
|
-
// solhint-disable-next-line no-unused-vars
|
|
285
|
-
bytes32[] calldata pools
|
|
286
|
-
) external payable returns (uint256 returnAmount);
|
|
287
|
-
|
|
288
|
-
function unxswapByOrderId(
|
|
289
|
-
uint256 srcToken,
|
|
290
|
-
uint256 amount,
|
|
291
|
-
uint256 minReturn,
|
|
292
|
-
// solhint-disable-next-line no-unused-vars
|
|
293
|
-
bytes32[] calldata pools
|
|
294
|
-
) external payable returns (uint256 returnAmount);
|
|
295
|
-
|
|
296
|
-
function smartSwapByOrderId(
|
|
297
|
-
uint256 orderId,
|
|
298
|
-
BaseRequest calldata baseRequest,
|
|
299
|
-
uint256[] calldata batchesAmount,
|
|
300
|
-
RouterPath[][] calldata batches,
|
|
301
|
-
PMMSwapRequest[] calldata extraData
|
|
302
|
-
) external payable returns (uint256 returnAmount);
|
|
303
|
-
}
|
package/deployments/1-core.json
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
32
32
|
},
|
|
33
33
|
"routerStatic": "0x263833d47eA3fA4a30f269323aba6a107f9eB14C",
|
|
34
|
-
"pendleSwap": "
|
|
34
|
+
"pendleSwap": "0x7aE5C4Cf5CddFbda870a80D021997d8A04f4Ff11",
|
|
35
35
|
"pyYtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2",
|
|
36
36
|
"yieldContractFactoryV3": "0xdF3601014686674e53d1Fa52F7602525483F9122",
|
|
37
37
|
"marketFactoryV3": "0x1A6fCc85557BC4fB7B534ed835a03EF056552D52",
|
package/deployments/10-core.json
CHANGED
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
"marketFactory": "0x17F100fB4bE2707675c6439468d38249DD993d58",
|
|
22
22
|
"router": "0x888888888889758F76e7103c6CbF23ABbF58F946",
|
|
23
23
|
"routerFacets": {
|
|
24
|
-
"ActionAddRemoveLiqV3": "
|
|
25
|
-
"ActionSwapPTV3": "
|
|
26
|
-
"ActionSwapYTV3": "
|
|
27
|
-
"ActionMiscV3": "
|
|
28
|
-
"ActionSimple": "
|
|
24
|
+
"ActionAddRemoveLiqV3": "0x663C21103915B68e9dA797CfdF3cAb01a037D5Ff",
|
|
25
|
+
"ActionSwapPTV3": "0xd8D200d9A713A1c71cF1e7F694B14E5F1D948b15",
|
|
26
|
+
"ActionSwapYTV3": "0x4a03Ce0a268951d04E187B1CF48075eE69266e27",
|
|
27
|
+
"ActionMiscV3": "0x373Dba2055Ad40cb4815148bC47cd1DC16e92E44",
|
|
28
|
+
"ActionSimple": "0x852e59252c94716F0df19B52b36512f6C9297a96",
|
|
29
29
|
"ActionCallbackV3": "0x997FBC511a8Ad11F84a400feACD66E2A3fa805d2",
|
|
30
30
|
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
31
31
|
},
|
|
32
32
|
"routerStatic": "0x704478Dd72FD7F9B83d1F1e0fc18C14B54F034d0",
|
|
33
|
-
"pendleSwap": "
|
|
33
|
+
"pendleSwap": "0x7aE5C4Cf5CddFbda870a80D021997d8A04f4Ff11",
|
|
34
34
|
"pyYtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2",
|
|
35
35
|
"yieldContractFactoryV3": "0xfa6B22FC4c3Ad88B68c16b3061a16b1714F6Bd57",
|
|
36
36
|
"marketFactoryV3": "0x4A2B38b9cBd83c86F261a4d64c243795D4d44aBC",
|
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
"marketFactory": "0xf5a7De2D276dbda3EEf1b62A9E718EFf4d29dDC8",
|
|
22
22
|
"router": "0x888888888889758F76e7103c6CbF23ABbF58F946",
|
|
23
23
|
"routerFacets": {
|
|
24
|
-
"ActionAddRemoveLiqV3": "
|
|
25
|
-
"ActionSwapPTV3": "
|
|
26
|
-
"ActionSwapYTV3": "
|
|
27
|
-
"ActionMiscV3": "
|
|
28
|
-
"ActionSimple": "
|
|
24
|
+
"ActionAddRemoveLiqV3": "0x663C21103915B68e9dA797CfdF3cAb01a037D5Ff",
|
|
25
|
+
"ActionSwapPTV3": "0xd8D200d9A713A1c71cF1e7F694B14E5F1D948b15",
|
|
26
|
+
"ActionSwapYTV3": "0x4a03Ce0a268951d04E187B1CF48075eE69266e27",
|
|
27
|
+
"ActionMiscV3": "0x373Dba2055Ad40cb4815148bC47cd1DC16e92E44",
|
|
28
|
+
"ActionSimple": "0x852e59252c94716F0df19B52b36512f6C9297a96",
|
|
29
29
|
"ActionCallbackV3": "0x997FBC511a8Ad11F84a400feACD66E2A3fa805d2",
|
|
30
30
|
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
31
31
|
},
|
|
32
32
|
"routerStatic": "0xAdB09F65bd90d19e3148D9ccb693F3161C6DB3E8",
|
|
33
|
-
"pendleSwap": "
|
|
33
|
+
"pendleSwap": "0x7aE5C4Cf5CddFbda870a80D021997d8A04f4Ff11",
|
|
34
34
|
"pyYtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2",
|
|
35
35
|
"yieldContractFactoryV3": "0xEb38531db128EcA928aea1B1CE9E5609B15ba146",
|
|
36
36
|
"marketFactoryV3": "0x2FCb47B58350cD377f94d3821e7373Df60bD9Ced",
|