@pendle/core-v2 0.2.3 → 0.4.0

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.
Files changed (87) hide show
  1. package/contracts/SuperComposableYield/ISuperComposableYield.sol +15 -5
  2. package/contracts/SuperComposableYield/implementations/RewardManager.sol +2 -2
  3. package/contracts/SuperComposableYield/implementations/SCYBase.sol +23 -3
  4. package/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol +4 -7
  5. package/contracts/core/PendleMarket.sol +24 -22
  6. package/contracts/core/PendleMarketFactory.sol +7 -6
  7. package/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol +1 -1
  8. package/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol +2 -7
  9. package/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol +2 -7
  10. package/contracts/core/PendleYieldContractFactory.sol +12 -7
  11. package/contracts/core/PendleYieldToken.sol +93 -55
  12. package/contracts/core/router/PendleRouterCoreUpg.sol +35 -21
  13. package/contracts/core/router/PendleRouterProxy.sol +12 -6
  14. package/contracts/core/router/PendleRouterStaticUpg.sol +43 -18
  15. package/contracts/core/router/PendleRouterYTUpg.sol +47 -13
  16. package/contracts/core/router/base/PendleRouterOTBaseUpg.sol +22 -32
  17. package/contracts/core/router/base/PendleRouterSCYAndForgeBaseUpg.sol +4 -4
  18. package/contracts/core/router/base/PendleRouterYTBaseUpg.sol +62 -43
  19. package/contracts/interfaces/IPMarket.sol +4 -2
  20. package/contracts/interfaces/{IPPermissionsV2.sol → IPPermissionsV2Upg.sol} +1 -1
  21. package/contracts/interfaces/IPRouterCore.sol +24 -21
  22. package/contracts/interfaces/IPRouterStatic.sol +10 -1
  23. package/contracts/interfaces/IPRouterYT.sol +16 -4
  24. package/contracts/interfaces/IPYieldContractFactory.sol +4 -0
  25. package/contracts/interfaces/IPYieldToken.sol +2 -4
  26. package/contracts/libraries/SCYIndex.sol +3 -3
  27. package/contracts/libraries/math/LogExpMath.sol +1 -90
  28. package/contracts/libraries/math/MarketApproxLib.sol +336 -94
  29. package/contracts/libraries/math/MarketMathAux.sol +101 -0
  30. package/contracts/libraries/math/MarketMathCore.sol +423 -0
  31. package/contracts/libraries/math/Math.sol +144 -0
  32. package/contracts/{core/misc → periphery}/PendleJoeSwapHelperUpg.sol +2 -2
  33. package/contracts/periphery/{PermissionsV2.sol → PermissionsV2Upg.sol} +2 -2
  34. package/package.json +1 -1
  35. package/typechain-types/IPMarket.ts +22 -11
  36. package/typechain-types/IPRouterCore.ts +68 -58
  37. package/typechain-types/IPRouterStatic.ts +52 -0
  38. package/typechain-types/IPRouterYT.ts +96 -12
  39. package/typechain-types/IPYieldContractFactory.ts +32 -0
  40. package/typechain-types/IPYieldToken.ts +14 -48
  41. package/typechain-types/IPermissionsV2Upg.ts +87 -0
  42. package/typechain-types/ISuperComposableYield.ts +98 -11
  43. package/typechain-types/OwnableUpgradeable.ts +165 -0
  44. package/typechain-types/PendleAaveV3SCY.ts +98 -11
  45. package/typechain-types/PendleBenQiErc20SCY.ts +98 -11
  46. package/typechain-types/PendleBtrflyScy.ts +98 -11
  47. package/typechain-types/PendleMarket.ts +22 -11
  48. package/typechain-types/PendleRouterCoreUpg.ts +66 -48
  49. package/typechain-types/PendleRouterProxy.ts +15 -118
  50. package/typechain-types/PendleRouterStaticUpg.ts +92 -0
  51. package/typechain-types/PendleRouterYTUpg.ts +96 -12
  52. package/typechain-types/PendleYearnVaultScy.ts +98 -11
  53. package/typechain-types/PendleYieldContractFactory.ts +40 -113
  54. package/typechain-types/PendleYieldToken.ts +106 -7
  55. package/typechain-types/PermissionsV2Upg.ts +87 -0
  56. package/typechain-types/SCYBase.ts +98 -11
  57. package/typechain-types/SCYBaseWithRewards.ts +98 -11
  58. package/typechain-types/factories/IPMarket__factory.ts +8 -2
  59. package/typechain-types/factories/IPRouterCore__factory.ts +38 -23
  60. package/typechain-types/factories/IPRouterStatic__factory.ts +29 -0
  61. package/typechain-types/factories/IPRouterYT__factory.ts +65 -6
  62. package/typechain-types/factories/IPYieldContractFactory__factory.ts +38 -0
  63. package/typechain-types/factories/IPYieldToken__factory.ts +1 -20
  64. package/typechain-types/factories/IPermissionsV2Upg__factory.ts +39 -0
  65. package/typechain-types/factories/ISuperComposableYield__factory.ts +65 -2
  66. package/typechain-types/factories/OwnableUpgradeable__factory.ts +78 -0
  67. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +66 -3
  68. package/typechain-types/factories/PendleBenQiErc20SCY__factory.ts +66 -3
  69. package/typechain-types/factories/PendleBtrflyScy__factory.ts +66 -3
  70. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  71. package/typechain-types/factories/PendleMarket__factory.ts +9 -3
  72. package/typechain-types/factories/PendleRouterCoreUpg__factory.ts +26 -11
  73. package/typechain-types/factories/PendleRouterProxy__factory.ts +14 -67
  74. package/typechain-types/factories/PendleRouterStaticUpg__factory.ts +63 -17
  75. package/typechain-types/factories/PendleRouterYTUpg__factory.ts +66 -7
  76. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +66 -3
  77. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +39 -54
  78. package/typechain-types/factories/PendleYieldToken__factory.ts +53 -2
  79. package/typechain-types/factories/PermissionsV2Upg__factory.ts +39 -0
  80. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +65 -2
  81. package/typechain-types/factories/SCYBase__factory.ts +65 -2
  82. package/typechain-types/hardhat.d.ts +26 -53
  83. package/typechain-types/index.ts +8 -14
  84. package/contracts/core/misc/BoringOwnable.sol +0 -62
  85. package/contracts/core/misc/BoringOwnableUpg.sol +0 -64
  86. package/contracts/libraries/math/FixedPoint.sol +0 -205
  87. package/contracts/libraries/math/MarketMathLib.sol +0 -614
@@ -33,28 +33,14 @@ const _abi = [
33
33
  name: "_treasury",
34
34
  type: "address",
35
35
  },
36
- ],
37
- stateMutability: "nonpayable",
38
- type: "constructor",
39
- },
40
- {
41
- anonymous: false,
42
- inputs: [
43
- {
44
- indexed: true,
45
- internalType: "address",
46
- name: "previousOwner",
47
- type: "address",
48
- },
49
36
  {
50
- indexed: true,
51
37
  internalType: "address",
52
- name: "newOwner",
38
+ name: "_governanceManager",
53
39
  type: "address",
54
40
  },
55
41
  ],
56
- name: "OwnershipTransferred",
57
- type: "event",
42
+ stateMutability: "nonpayable",
43
+ type: "constructor",
58
44
  },
59
45
  {
60
46
  inputs: [],
@@ -82,13 +68,6 @@ const _abi = [
82
68
  stateMutability: "view",
83
69
  type: "function",
84
70
  },
85
- {
86
- inputs: [],
87
- name: "claimOwnership",
88
- outputs: [],
89
- stateMutability: "nonpayable",
90
- type: "function",
91
- },
92
71
  {
93
72
  inputs: [
94
73
  {
@@ -179,6 +158,19 @@ const _abi = [
179
158
  stateMutability: "view",
180
159
  type: "function",
181
160
  },
161
+ {
162
+ inputs: [],
163
+ name: "governanceManager",
164
+ outputs: [
165
+ {
166
+ internalType: "address",
167
+ name: "",
168
+ type: "address",
169
+ },
170
+ ],
171
+ stateMutability: "view",
172
+ type: "function",
173
+ },
182
174
  {
183
175
  inputs: [],
184
176
  name: "interestFeeRate",
@@ -193,28 +185,40 @@ const _abi = [
193
185
  type: "function",
194
186
  },
195
187
  {
196
- inputs: [],
197
- name: "owner",
198
- outputs: [
188
+ inputs: [
199
189
  {
200
190
  internalType: "address",
201
191
  name: "",
202
192
  type: "address",
203
193
  },
204
194
  ],
195
+ name: "isOT",
196
+ outputs: [
197
+ {
198
+ internalType: "bool",
199
+ name: "",
200
+ type: "bool",
201
+ },
202
+ ],
205
203
  stateMutability: "view",
206
204
  type: "function",
207
205
  },
208
206
  {
209
- inputs: [],
210
- name: "pendingOwner",
211
- outputs: [
207
+ inputs: [
212
208
  {
213
209
  internalType: "address",
214
210
  name: "",
215
211
  type: "address",
216
212
  },
217
213
  ],
214
+ name: "isYT",
215
+ outputs: [
216
+ {
217
+ internalType: "bool",
218
+ name: "",
219
+ type: "bool",
220
+ },
221
+ ],
218
222
  stateMutability: "view",
219
223
  type: "function",
220
224
  },
@@ -257,29 +261,6 @@ const _abi = [
257
261
  stateMutability: "nonpayable",
258
262
  type: "function",
259
263
  },
260
- {
261
- inputs: [
262
- {
263
- internalType: "address",
264
- name: "newOwner",
265
- type: "address",
266
- },
267
- {
268
- internalType: "bool",
269
- name: "direct",
270
- type: "bool",
271
- },
272
- {
273
- internalType: "bool",
274
- name: "renounce",
275
- type: "bool",
276
- },
277
- ],
278
- name: "transferOwnership",
279
- outputs: [],
280
- stateMutability: "nonpayable",
281
- type: "function",
282
- },
283
264
  {
284
265
  inputs: [],
285
266
  name: "treasury",
@@ -296,7 +277,7 @@ const _abi = [
296
277
  ];
297
278
 
298
279
  const _bytecode =
299
- "0x608060405234801561001057600080fd5b5060405161550038038061550083398101604081905261002f9161006a565b60008054336001600160a01b031991821617909155600293909355600391909155600480549092166001600160a01b039091161790556100b0565b60008060006060848603121561007f57600080fd5b83516020850151604086015191945092506001600160a01b03811681146100a557600080fd5b809150509250925092565b615441806100bf6000396000f3fe60806040523480156200001157600080fd5b5060043610620000d65760003560e01c8063078dfbe714620000db57806313d54e7a14620000f45780632469b116146200012e5780634e71e0c8146200017457806361d027b3146200017e5780637497395814620001925780637d379a4814620001a95780638c9f796214620001c05780638da5cb5b14620001f7578063950f5727146200020b578063be0f2fb11462000243578063dd86fea11462000265578063e30c3978146200027e578063e9e5f3cf1462000292578063f0f44260146200029c575b600080fd5b620000f2620000ec366004620012d4565b620002b3565b005b620001166040518060400160405280600281526020016113d560f21b81525081565b6040516200012591906200137f565b60405180910390f35b620001656200013f3660046200139b565b60056020908152600092835260408084209091529082529020546001600160a01b031681565b604051620001259190620013c8565b620000f2620003c1565b60045462000165906001600160a01b031681565b620000f2620001a3366004620013dc565b6200046f565b620000f2620001ba366004620013dc565b620004a1565b62000165620001d13660046200139b565b60066020908152600092835260408084209091529082529020546001600160a01b031681565b60005462000165906001600160a01b031681565b620002226200021c3660046200139b565b620004d3565b604080516001600160a01b0393841681529290911660208301520162000125565b6200011660405180604001604052806002815260200161165560f21b81525081565b6200026f60035481565b60405190815260200162000125565b60015462000165906001600160a01b031681565b6200026f60025481565b620000f2620002ad366004620013f6565b62000a6f565b6000546001600160a01b03163314620002e95760405162461bcd60e51b8152600401620002e09062001414565b60405180910390fd5b81156200039f576001600160a01b038316151580620003055750805b6200034b5760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401620002e0565b600080546040516001600160a01b0380871693921691600080516020620053ec83398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6001546001600160a01b03163381146200041e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401620002e0565b600080546040516001600160a01b0380851693921691600080516020620053ec83398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b031633146200049c5760405162461bcd60e51b8152600401620002e09062001414565b600255565b6000546001600160a01b03163314620004ce5760405162461bcd60e51b8152600401620002e09062001414565b600355565b60008060025483620004e691906200145f565b15620005335760405162461bcd60e51b815260206004820152601b60248201527a36bab9ba1031329036bab63a34b836329037b3103234bb34b9b7b960291b6044820152606401620002e0565b6001600160a01b0384811660009081526005602090815260408083208784529091529020541615620005955760405162461bcd60e51b815260206004820152600a60248201526913d517d1561254d5115160b21b6044820152606401620002e0565b60008490506000816001600160a01b031663c2d416016040518163ffffffff1660e01b815260040160206040518083038186803b158015620005d657600080fd5b505afa158015620005eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000611919062001476565b905085620006d8836001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156200065257600080fd5b505afa15801562000667573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620006919190810190620014b1565b87604051806040016040528060018152602001600160fd1b8152506040518060400160405280600281526020016113d560f21b81525062000abe909392919063ffffffff16565b6200079c846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200071657600080fd5b505afa1580156200072b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007559190810190620014b1565b88604051806040016040528060018152602001602d60f81b8152506040518060400160405280600281526020016113d560f21b81525062000abe909392919063ffffffff16565b8388604051620007ac906200128a565b620007bc95949392919062001569565b604051809103906000f080158015620007d9573d6000803e3d6000fd5b5093508584620008a2846001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156200081c57600080fd5b505afa15801562000831573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085b9190810190620014b1565b88604051806040016040528060018152602001600160fd1b81525060405180604001604052806002815260200161165560f21b81525062000abe909392919063ffffffff16565b62000966856001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620008e057600080fd5b505afa158015620008f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200091f9190810190620014b1565b89604051806040016040528060018152602001602d60f81b81525060405180604001604052806002815260200161165560f21b81525062000abe909392919063ffffffff16565b8489604051620009769062001298565b6200098796959493929190620015bb565b604051809103906000f080158015620009a4573d6000803e3d6000fd5b5060405163189acdbd60e31b81529093506001600160a01b0385169063c4d66de890620009d6908690600401620013c8565b600060405180830381600087803b158015620009f157600080fd5b505af115801562000a06573d6000803e3d6000fd5b505050506001600160a01b039586166000818152600560209081526040808320898452825280832080546001600160a01b03199081168a8d1617909155938352600682528083209883529790529590952080549095169583169590951790935590939092509050565b6000546001600160a01b0316331462000a9c5760405162461bcd60e51b8152600401620002e09062001414565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60608482858462000acf8762000afe565b60405160200162000ae595949392919062001616565b6040516020818303038152906040529050949350505050565b6060600062000b0d8362000b7c565b9050600062000b23826040015160ff1662000d31565b9050600062000b328362000e68565b9050600062000b49846000015161ffff1662000d31565b905082828260405160200162000b62939291906200168b565b604051602081830303815290604052945050505050919050565b6040805160608101825260008082526020820181905291810182905290808062000ba68562000ff2565b61ffff16845262000bb96107b26200110b565b845162000bca9061ffff166200110b565b62000bd69190620016ea565b915062000be8826301e2850062001704565b62000bf4908462001726565b9250816107b2856000015162000c0b919062001741565b61ffff1662000c1b9190620016ea565b62000c2b906301e1338062001704565b62000c37908462001726565b92506000600191505b600c8260ff161162000cb65762000c5c82866000015162001162565b62000c6e9060ff166201518062001704565b90508562000c7d858362001726565b111562000c935760ff8216602086015262000cb6565b62000c9f818562001726565b93508162000cad8162001767565b92505062000c40565b600191505b62000ccf8560200151866000015162001162565b60ff168260ff161162000d28578562000cec856201518062001726565b111562000d025760ff8216604086015262000d28565b62000d11620151808562001726565b93508162000d1f8162001767565b92505062000cbb565b50505050919050565b60608162000d565750506040805180820190915260018152600360fc1b602082015290565b8160005b811562000d86578062000d6d816200178a565b915062000d7e9050600a83620017a8565b915062000d5a565b6000816001600160401b0381111562000da35762000da36200149b565b6040519080825280601f01601f19166020018201604052801562000dce576020820181803683370190505b509050600062000de0600184620016ea565b90505b851562000e5f5762000df7600a876200145f565b62000e0490603062001726565b60f81b82828151811062000e1c5762000e1c620017bf565b60200101906001600160f81b031916908160001a905350801562000e4a578062000e4681620017d5565b9150505b62000e57600a87620017a8565b955062000de3565b50949350505050565b604080516101c08101825260036101808201818152622520a760e91b6101a0840152825282518084018452818152622322a160e91b60208281019190915280840191909152835180850185528281526226a0a960e91b8183015283850152835180850185528281526220a82960e91b8183015260608481019190915284518086018652838152624d415960e81b8184015260808501528451808601865283815262252aa760e91b8184015260a0850152845180860186528381526212955360ea1b8184015260c0850152845180860186528381526241554760e81b8184015260e0850152845180860186528381526205345560ec1b81840152610100850152845180860186528381526213d0d560ea1b8184015261012085015284518086018652838152622727ab60e91b8184015261014085015284518086019095529184526244454360e81b8482015261016083019390935291830151819062000fd090600190620017ef565b60ff16600c811062000fe65762000fe6620017bf565b60200201519392505050565b6000808080620010076301e1338086620017a8565b62001015906107b262001726565b9150620010246107b26200110b565b620010338361ffff166200110b565b6200103f9190620016ea565b905062001051816301e2850062001704565b6200105d908462001726565b9250806200106e6107b28462001741565b61ffff166200107e9190620016ea565b6200108e906301e1338062001704565b6200109a908462001726565b92505b848311156200110357620010bd620010b760018462001741565b6200123a565b15620010db57620010d36301e2850084620016ea565b9250620010ee565b620010eb6301e1338084620016ea565b92505b620010fb60018362001741565b91506200109d565b509392505050565b60006200111a600183620016ea565b91506200112a61019083620017a8565b62001137606484620017a8565b62001144600485620017a8565b620011509190620016ea565b6200115c919062001726565b92915050565b60008260ff16600114806200117a57508260ff166003145b806200118957508260ff166005145b806200119857508260ff166007145b80620011a757508260ff166008145b80620011b657508260ff16600a145b80620011c557508260ff16600c145b15620011d45750601f6200115c565b8260ff1660041480620011ea57508260ff166006145b80620011f957508260ff166009145b806200120857508260ff16600b145b15620012175750601e6200115c565b62001222826200123a565b15620012315750601d6200115c565b50601c92915050565b60006200124960048362001815565b61ffff161580156200126a57506200126360648362001815565b61ffff1615155b806200115c57506200127f6101908362001815565b61ffff161592915050565b611134806200183a83390190565b612a7e806200296e83390190565b80356001600160a01b0381168114620012be57600080fd5b919050565b80358015158114620012be57600080fd5b600080600060608486031215620012ea57600080fd5b620012f584620012a6565b92506200130560208501620012c3565b91506200131560408501620012c3565b90509250925092565b60005b838110156200133b57818101518382015260200162001321565b838111156200134b576000848401525b50505050565b600081518084526200136b8160208601602086016200131e565b601f01601f19169290920160200192915050565b60208152600062001394602083018462001351565b9392505050565b60008060408385031215620013af57600080fd5b620013ba83620012a6565b946020939093013593505050565b6001600160a01b0391909116815260200190565b600060208284031215620013ef57600080fd5b5035919050565b6000602082840312156200140957600080fd5b6200139482620012a6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601260045260246000fd5b60008262001471576200147162001449565b500690565b6000602082840312156200148957600080fd5b815160ff811681146200139457600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215620014c457600080fd5b81516001600160401b0380821115620014dc57600080fd5b818401915084601f830112620014f157600080fd5b8151818111156200150657620015066200149b565b604051601f8201601f19908116603f011681019083821181831017156200153157620015316200149b565b816040528281528760208487010111156200154b57600080fd5b6200155e8360208301602088016200131e565b979650505050505050565b6001600160a01b038616815260a0602082018190526000906200158f9083018762001351565b8281036040840152620015a3818762001351565b60ff9590951660608401525050608001529392505050565b6001600160a01b0387811682528616602082015260c060408201819052600090620015e99083018762001351565b8281036060840152620015fd818762001351565b60ff959095166080840152505060a00152949350505050565b600086516200162a818460208b016200131e565b86519083019062001640818360208b016200131e565b865191019062001655818360208a016200131e565b85519101906200166a8183602089016200131e565b84519101906200167f8183602088016200131e565b01979650505050505050565b600084516200169f8184602089016200131e565b845190830190620016b58183602089016200131e565b8451910190620016ca8183602088016200131e565b0195945050505050565b634e487b7160e01b600052601160045260246000fd5b600082821015620016ff57620016ff620016d4565b500390565b6000816000190483118215151615620017215762001721620016d4565b500290565b600082198211156200173c576200173c620016d4565b500190565b600061ffff838116908316818110156200175f576200175f620016d4565b039392505050565b600060ff821660ff811415620017815762001781620016d4565b60010192915050565b6000600019821415620017a157620017a1620016d4565b5060010190565b600082620017ba57620017ba62001449565b500490565b634e487b7160e01b600052603260045260246000fd5b600081620017e757620017e7620016d4565b506000190190565b600060ff821660ff8416808210156200180c576200180c620016d4565b90039392505050565b600061ffff808416806200182d576200182d62001449565b9216919091069291505056fe6101206040523480156200001257600080fd5b506040516200113438038062001134833981016040819052620000359162000250565b838383838383816003908051906020019062000053929190620000dd565b50805162000069906004906020840190620000dd565b505050428111620000b15760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e052505050506001600160a01b0316610100526200033d565b828054620000eb9062000300565b90600052602060002090601f0160209004810192826200010f57600085556200015a565b82601f106200012a57805160ff19168380011785556200015a565b828001600101855582156200015a579182015b828111156200015a5782518255916020019190600101906200013d565b50620001689291506200016c565b5090565b5b808211156200016857600081556001016200016d565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ab57600080fd5b81516001600160401b0380821115620001c857620001c862000183565b604051601f8301601f19908116603f01168101908282118183101715620001f357620001f362000183565b816040528381526020925086838588010111156200021057600080fd5b600091505b8382101562000234578582018301518183018401529082019062000215565b83821115620002465760008385830101525b9695505050505050565b600080600080600060a086880312156200026957600080fd5b85516001600160a01b03811681146200028157600080fd5b60208701519095506001600160401b03808211156200029f57600080fd5b620002ad89838a0162000199565b95506040880151915080821115620002c457600080fd5b50620002d38882890162000199565b935050606086015160ff81168114620002eb57600080fd5b80925050608086015190509295509295909350565b600181811c908216806200031557607f821691505b602082108114156200033757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610da46200039060003960006101ee0152600081816102aa015261057c01526000818161017e01526102f70152600061031e015260006101ac0152610da46000f3fe608060405234801561001057600080fd5b50600436106100fc5760003560e01c806306fdde0314610101578063095ea7b31461011f57806312a31dcc1461014257806318160ddd1461015757806323b872dd146101695780632f13b60c1461017c578063313ce567146101a557806339509351146101d657806347bfac62146101e957806370a0823114610228578063781c18db1461025157806395d89b4114610264578063a457c2d71461026c578063a9059cbb1461027f578063b64761f914610292578063c45a0155146102a5578063c4d66de8146102cc578063dd62ed3e146102df578063e184c9be146102f2578063f1653f6e14610319575b600080fd5b610109610340565b6040516101169190610b81565b60405180910390f35b61013261012d366004610bf2565b6103d2565b6040519015158152602001610116565b610155610150366004610bf2565b6103ea565b005b6002545b604051908152602001610116565b610132610177366004610c1c565b61042b565b7f0000000000000000000000000000000000000000000000000000000000000000421015610132565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610116565b6101326101e4366004610bf2565b61044f565b6102107f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610116565b61015b610236366004610c58565b6001600160a01b031660009081526020819052604090205490565b600554610210906001600160a01b031681565b61010961048e565b61013261027a366004610bf2565b61049d565b61013261028d366004610bf2565b61052f565b6101556102a0366004610bf2565b61053d565b6102107f000000000000000000000000000000000000000000000000000000000000000081565b6101556102da366004610c58565b610571565b61015b6102ed366004610c7a565b6105fa565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461034f90610cad565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90610cad565b80156103c85780601f1061039d576101008083540402835291602001916103c8565b820191906000526020600020905b8154815290600101906020018083116103ab57829003601f168201915b5050505050905090565b6000336103e0818585610625565b5060019392505050565b6005546001600160a01b0316331461041d5760405162461bcd60e51b815260040161041490610ce8565b60405180910390fd5b610427828261074a565b5050565b600033610439858285610817565b610444858585610891565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906103e09082908690610489908790610d1f565b610625565b60606004805461034f90610cad565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156105225760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610414565b6104448286868403610625565b6000336103e0818585610891565b6005546001600160a01b031633146105675760405162461bcd60e51b815260040161041490610ce8565b6104278282610a4d565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105d85760405162461bcd60e51b815260206004820152600c60248201526b4f4e4c595f464143544f525960a01b6044820152606401610414565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166106875760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610414565b6001600160a01b0382166106e85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610414565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166107a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610414565b80600260008282546107b29190610d1f565b90915550506001600160a01b038216600090815260208190526040812080548392906107df908490610d1f565b90915550506040518181526001600160a01b03831690600090600080516020610d4f8339815191529060200160405180910390a35050565b600061082384846105fa565b9050600019811461088b578181101561087e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610414565b61088b8484848403610625565b50505050565b6001600160a01b0383166108f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610414565b6001600160a01b0382166109575760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610414565b6001600160a01b038316600090815260208190526040902054818110156109cf5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610414565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610a06908490610d1f565b92505081905550826001600160a01b0316846001600160a01b0316600080516020610d4f83398151915284604051610a4091815260200190565b60405180910390a361088b565b6001600160a01b038216610aad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610414565b6001600160a01b03821660009081526020819052604090205481811015610b215760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610414565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610b50908490610d37565b90915550506040518281526000906001600160a01b03851690600080516020610d4f8339815191529060200161073d565b600060208083528351808285015260005b81811015610bae57858101830151858201604001528201610b92565b81811115610bc0576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610bed57600080fd5b919050565b60008060408385031215610c0557600080fd5b610c0e83610bd6565b946020939093013593505050565b600080600060608486031215610c3157600080fd5b610c3a84610bd6565b9250610c4860208501610bd6565b9150604084013590509250925092565b600060208284031215610c6a57600080fd5b610c7382610bd6565b9392505050565b60008060408385031215610c8d57600080fd5b610c9683610bd6565b9150610ca460208401610bd6565b90509250929050565b600181811c90821680610cc157607f821691505b60208210811415610ce257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526007908201526613d3931657d65560ca1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610d3257610d32610d09565b500190565b600082821015610d4957610d49610d09565b50039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206dfbd3dbf4f2d2990ecb59f955386865d92d5c1257323522b7d7c9302386f34f64736f6c634300080900336101406040523480156200001257600080fd5b5060405162002a7e38038062002a7e833981016040819052620000359162000274565b838383838383816003908051906020019062000053929190620000e4565b50805162000069906004906020840190620000e4565b505050428111620000b15760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e052505050506001600160a01b0391821661010052166101205262000365565b828054620000f29062000328565b90600052602060002090601f01602090048101928262000116576000855562000161565b82601f106200013157805160ff191683800117855562000161565b8280016001018555821562000161579182015b828111156200016157825182559160200191906001019062000144565b506200016f92915062000173565b5090565b5b808211156200016f576000815560010162000174565b80516001600160a01b0381168114620001a257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001cf57600080fd5b81516001600160401b0380821115620001ec57620001ec620001a7565b604051601f8301601f19908116603f01168101908282118183101715620002175762000217620001a7565b816040528381526020925086838588010111156200023457600080fd5b600091505b8382101562000258578582018301518183018401529082019062000239565b838211156200026a5760008385830101525b9695505050505050565b60008060008060008060c087890312156200028e57600080fd5b62000299876200018a565b9550620002a9602088016200018a565b60408801519095506001600160401b0380821115620002c757600080fd5b620002d58a838b01620001bd565b95506060890151915080821115620002ec57600080fd5b50620002fb89828a01620001bd565b935050608087015160ff811681146200031357600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200033d57607f821691505b602082108114156200035f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516126606200041e60003960008181610423015281816107bd0152818161089a0152610d34015260008181610265015281816107450152818161091b0152818161097701528181610a1601528181610c1001528181610da801528181611422015281816117b80152611d510152600081816103d40152818161068a0152610ab50152600081816104a601526105c3015260006104cd0152600061021001526126606000f3fe608060405234801561001057600080fd5b50600436106101965760003560e01c806306fdde031461019b578063095ea7b3146101b957806318160ddd146101dc57806323b872dd146101ee5780632f13b60c14610201578063313ce56714610209578063395093511461023a578063443cb7f81461024d57806347bfac62146102605780635cbadbe41461029457806366247a72146102db57806370a08231146102ee5780637695caa21461030157806380a7c9ac1461030b57806388611f351461031e57806395d89b41146103275780639b1e03f01461032f5780639c9fdc3b14610337578063a090ee5014610340578063a457c2d714610348578063a9059cbb1461035b578063aa1fb9701461036e578063b2427a6c14610381578063b90d3d0c146103a8578063c45a0155146103cf578063c4f59f9b146103f6578063c6d6916c1461040b578063c836545a1461041e578063ccb2f5c514610445578063d86e030214610465578063dcda874d1461046e578063dd62ed3e1461048e578063e184c9be146104a1578063f1653f6e146104c8575b600080fd5b6101a36104ef565b6040516101b09190612153565b60405180910390f35b6101cc6101c736600461219b565b610581565b60405190151581526020016101b0565b6002545b6040519081526020016101b0565b6101cc6101fc3660046121c7565b61059b565b6101cc6105c1565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b0565b6101cc61024836600461219b565b6105e8565b6101e061025b366004612208565b610627565b6102877f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b09190612221565b6102c66102a2366004612235565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101b0565b6101e06102e936600461226e565b610648565b6101e06102fc36600461226e565b61077c565b610309610797565b005b6101e061031936600461226e565b6107b8565b6101e0600b5481565b6101a3610950565b6101e061095f565b6101e060085481565b610309610a12565b6101cc61035636600461219b565b610c4b565b6101cc61036936600461219b565b610ced565b6101e061037c366004612235565b610cfb565b6102c661038f36600461226e565b6005602052600090815260409020805460019091015482565b6102c66103b636600461226e565b600c602052600090815260409020805460019091015482565b6102877f000000000000000000000000000000000000000000000000000000000000000081565b6103fe610da4565b6040516101b0919061228b565b61030961041936600461226e565b610e40565b6102877f000000000000000000000000000000000000000000000000000000000000000081565b610458610453366004612235565b610e55565b6040516101b091906122d8565b6101e060075481565b6101e061047c36600461226e565b600a6020526000908152604090205481565b6101e061049c366004612235565b610f1c565b6101e07f000000000000000000000000000000000000000000000000000000000000000081565b6101e07f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546104fe90612310565b80601f016020809104026020016040519081016040528092919081815260200182805461052a90612310565b80156105775780601f1061054c57610100808354040283529160200191610577565b820191906000526020600020905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b60003361058f818585610f47565b60019150505b92915050565b6000336105a985828561106b565b6105b48585856110e5565b60019150505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000042101590565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061058f908290869061062290879061235b565b610f47565b6009818154811061063757600080fd5b600091825260209091200154905081565b6000610653826112ac565b6001600160a01b038083166000908152600c60209081526040808320600101805490849055815163dd86fea160e01b8152915190947f0000000000000000000000000000000000000000000000000000000000000000169263dd86fea19260048082019391829003018186803b1580156106cc57600080fd5b505afa1580156106e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107049190612373565b90506000610712838361138c565b905080600b6000828254610726919061235b565b909155506107369050818461238c565b935061076c6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866113b5565b61077461140b565b505050919050565b6001600160a01b031660009081526020819052604090205490565b60006107a1610da4565b90506107b5816107b060025490565b6114ac565b50565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108079190612221565b60206040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190612373565b90506108616105c1565b61088357610877816108723061077c565b611642565b90506108833082611658565b60405163b64761f960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b64761f9906108d190309085906004016123a3565b600060405180830381600087803b1580156108eb57600080fd5b505af11580156108ff573d6000803e3d6000fd5b5050505061090c816117a0565b91506109426001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684846113b5565b61094a61140b565b50919050565b6060600480546104fe90612310565b60006109696105c1565b15610975575060085490565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190612373565b6008819055919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a6d57600080fd5b505afa158015610a81573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aa99190810190612425565b905060008151905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0c57600080fd5b505afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4491906124b8565b905060005b82811015610bf6576000848281518110610b6557610b656124d5565b6020908102919091018101516001600160a01b0381166000908152600a9092526040909120549091508015610bcb57610bcb8482888681518110610bab57610bab6124d5565b60200260200101516001600160a01b03166113b59092919063ffffffff16565b506001600160a01b03166000908152600a602052604081205580610bee816124eb565b915050610b49565b50600b5415610c4657600b54610c38906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083906113b5565b610c4061140b565b6000600b555b505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610cd55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610ce28286868403610f47565b506001949350505050565b60003361058f8185856110e5565b600080610d066117b3565b9050610d11816118a9565b9150610d1d83836118bc565b6040516304a8c77360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906312a31dcc90610d6b90879086906004016123a3565b600060405180830381600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050505092915050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610dff57600080fd5b505afa158015610e13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e3b9190810190612425565b905090565b6107b581610e4d8361077c565b600254611996565b60606001600160a01b0383163314610ec057826001600160a01b0316826001600160a01b031614610ebb5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2103932b1b2b4bb32b960811b6044820152606401610ccc565b610f05565b6001600160a01b038216610f055760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610ccc565b610f1283610e4d8561077c565b6105ba83836119b7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610fa95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ccc565b6001600160a01b03821661100a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ccc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110778484610f1c565b905060001981146110df57818110156110d25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ccc565b6110df8484848403610f47565b50505050565b6001600160a01b0383166111495760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ccc565b6001600160a01b0382166111ab5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ccc565b6111b6838383611b94565b6001600160a01b0383166000908152602081905260409020548181101561122e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ccc565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061126590849061235b565b92505081905550826001600160a01b0316846001600160a01b031660008051602061260b8339815191528460405161129f91815260200190565b60405180910390a36110df565b6001600160a01b0381166000908152600c6020526040812054906112ce61095f565b9050808214156112dd57505050565b81611302576001600160a01b039092166000908152600c602052604090209190915550565b600061130d8461077c565b9050600061133861131e8486612506565b611328868661238c565b6113329085612506565b90611c2c565b6001600160a01b0386166000908152600c602052604081206001018054929350839290919061136890849061235b565b9091555050506001600160a01b039093166000908152600c60205260409020555050565b6000806113998385612506565b90506113ad670de0b6b3a764000082612525565b949350505050565b610c468363a9059cbb60e01b84846040516024016113d49291906123a3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c63565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611457903090600401612221565b60206040518083038186803b15801561146f57600080fd5b505afa158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a79190612373565b600755565b6114b4611d35565b6114bd82611dd9565b60006114c76105c1565b905060005b83518110156110df5760008482815181106114e9576114e96124d5565b602002602001015190506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016115219190612221565b60206040518083038186803b15801561153957600080fd5b505afa15801561154d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115719190612373565b6001600160a01b0383166000908152600560205260408120600101549192509061159b908361238c565b905084156115d6576001600160a01b0383166000908152600a6020526040812080548392906115cb90849061235b565b909155506116149050565b8515611614576115e68187611c2c565b6001600160a01b0384166000908152600560205260408120805490919061160e90849061235b565b90915550505b506001600160a01b0390911660009081526005602052604090206001015561163b816124eb565b90506114cc565b600081831061165157816105ba565b5090919050565b6001600160a01b0382166116b85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ccc565b6116c482600083611b94565b6001600160a01b038216600090815260208190526040902054818110156117385760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ccc565b6001600160a01b038316600090815260208190526040812083830390556002805484929061176790849061238c565b90915550506040518281526000906001600160a01b0385169060008051602061260b8339815191529060200160405180910390a3505050565b60006105956117ad61095f565b83611e7c565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118029190612221565b60206040518083038186803b15801561181a57600080fd5b505afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118529190612373565b905060075481611862919061238c565b9150600082116118a35760405162461bcd60e51b815260206004820152600c60248201526b524543454956455f5a45524f60a01b6044820152606401610ccc565b60075590565b60006105956118b661095f565b83611e9b565b6001600160a01b0382166119125760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ccc565b61191e60008383611b94565b8060026000828254611930919061235b565b90915550506001600160a01b0382166000908152602081905260408120805483929061195d90849061235b565b90915550506040518181526001600160a01b0383169060009060008051602061260b8339815191529060200160405180910390a35b5050565b60006119a0610da4565b90506119ac81836114ac565b6110df818585611eb0565b606060006119c3610da4565b905080516001600160401b038111156119de576119de6123bc565b604051908082528060200260200182016040528015611a07578160200160208202803683370190505b50915060005b8151811015611b8c576000828281518110611a2a57611a2a6124d5565b6020026020010151905060066000876001600160a01b03166001600160a01b031681526020019081526020016000206000826001600160a01b03166001600160a01b0316815260200190815260200160002060010154848381518110611a9257611a926124d5565b6020908102919091018101919091526001600160a01b0380881660009081526006835260408082209285168252919092528120600101558351849083908110611add57611add6124d5565b602002602001015160056000836001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254611b1c919061238c565b92505081905550838281518110611b3557611b356124d5565b6020026020010151600014611b7b57611b7b85858481518110611b5a57611b5a6124d5565b6020026020010151836001600160a01b03166113b59092919063ffffffff16565b50611b85816124eb565b9050611a0d565b505092915050565b6000611b9e610da4565b9050611bad816107b060025490565b6001600160a01b03841615801590611bce57506001600160a01b0384163014155b15611bef57611bdc846112ac565b611bef8185611bea8761077c565b611eb0565b6001600160a01b03831615801590611c1057506001600160a01b0383163014155b156110df57611c1e836112ac565b6110df8184611bea8661077c565b600082611c3b57506000610595565b6000611c4f670de0b6b3a764000085612506565b9050611c5b8382612525565b915050610595565b6000611cb8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120139092919063ffffffff16565b805190915015610c465780806020019051810190611cd69190612547565b610c465760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ccc565b6040516326a7076d60e21b8152306004820181905260248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639a9c1db490604401600060405180830381600087803b158015611d9d57600080fd5b505af1158015611db1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107b59190810190612569565b60005b81518110156119925760056000838381518110611dfb57611dfb6124d5565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000015460001415611e6c57600160056000848481518110611e4757611e476124d5565b6020908102919091018101516001600160a01b03168252810191909152604001600020555b611e75816124eb565b9050611ddc565b600082611e91670de0b6b3a764000084612506565b6105ba9190612525565b6000670de0b6b3a7640000611e918484612506565b60005b83518110156110df576000848281518110611ed057611ed06124d5565b6020908102919091018101516001600160a01b03808716600090815260068452604080822092841682529184528181205460059094522054909250811415611f19575050612003565b80611f5557506001600160a01b039081166000818152600560209081526040808320549488168352600682528083209383529290522055612003565b6001600160a01b038216600090815260056020526040812054611f7990839061238c565b90506000611f87868361138c565b6001600160a01b038089166000908152600660209081526040808320938916835292905290812060010180549293508392909190611fc690849061235b565b9091555050506001600160a01b03928316600081815260056020908152604080832054968a16835260068252808320938352929052209290925550505b61200c816124eb565b9050611eb3565b60606113ad8484600085856001600160a01b0385163b6120755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ccc565b600080866001600160a01b0316858760405161209191906125ee565b60006040518083038185875af1925050503d80600081146120ce576040519150601f19603f3d011682016040523d82523d6000602084013e6120d3565b606091505b50915091506120e38282866120ee565b979650505050505050565b606083156120fd5750816105ba565b82511561210d5782518084602001fd5b8160405162461bcd60e51b8152600401610ccc9190612153565b60005b8381101561214257818101518382015260200161212a565b838111156110df5750506000910152565b6020815260008251806020840152612172816040850160208701612127565b601f01601f19169190910160400192915050565b6001600160a01b03811681146107b557600080fd5b600080604083850312156121ae57600080fd5b82356121b981612186565b946020939093013593505050565b6000806000606084860312156121dc57600080fd5b83356121e781612186565b925060208401356121f781612186565b929592945050506040919091013590565b60006020828403121561221a57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561224857600080fd5b823561225381612186565b9150602083013561226381612186565b809150509250929050565b60006020828403121561228057600080fd5b81356105ba81612186565b6020808252825182820181905260009190848201906040850190845b818110156122cc5783516001600160a01b0316835292840192918401916001016122a7565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156122cc578351835292840192918401916001016122f4565b600181811c9082168061232457607f821691505b6020821081141561094a57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561236e5761236e612345565b500190565b60006020828403121561238557600080fd5b5051919050565b60008282101561239e5761239e612345565b500390565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156123fa576123fa6123bc565b604052919050565b60006001600160401b0382111561241b5761241b6123bc565b5060051b60200190565b6000602080838503121561243857600080fd5b82516001600160401b0381111561244e57600080fd5b8301601f8101851361245f57600080fd5b805161247261246d82612402565b6123d2565b81815260059190911b8201830190838101908783111561249157600080fd5b928401925b828410156120e35783516124a981612186565b82529284019290840190612496565b6000602082840312156124ca57600080fd5b81516105ba81612186565b634e487b7160e01b600052603260045260246000fd5b60006000198214156124ff576124ff612345565b5060010190565b600081600019048311821515161561252057612520612345565b500290565b60008261254257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561255957600080fd5b815180151581146105ba57600080fd5b6000602080838503121561257c57600080fd5b82516001600160401b0381111561259257600080fd5b8301601f810185136125a357600080fd5b80516125b161246d82612402565b81815260059190911b820183019083810190878311156125d057600080fd5b928401925b828410156120e3578351825292840192908401906125d5565b60008251612600818460208701612127565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d5201ed1d525690ff43ab25feef21e73e94dc509c0d59af2d7b1e0c85abdca2a64736f6c634300080900338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212208c668d932a56c23629853284edb4216d27ef885291f8c2b44233fb65014935e364736f6c63430008090033";
280
+ "0x60a06040523480156200001157600080fd5b50604051620056ef380380620056ef8339810160408190526200003491620000d2565b806001600160a01b0381166200007f5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640160405180910390fd5b6001600160a01b0390811660805260009490945550600191909155600280546001600160a01b031916919092161790556200011d565b80516001600160a01b0381168114620000cd57600080fd5b919050565b60008060008060808587031215620000e957600080fd5b84519350602085015192506200010260408601620000b5565b91506200011260608601620000b5565b905092959194509250565b6080516155af6200014060003960008181610287015261099c01526155af6000f3fe60806040523480156200001157600080fd5b5060043610620000ca5760003560e01c806313d54e7a14620000cf5780632469b116146200010957806335e46e9a146200014f57806361d027b3146200018657806371846aa8146200019a5780637497395814620001c05780637d379a4814620001d95780638c9f796214620001f0578063950f57271462000227578063be0f2fb1146200025f578063d2e6d1c31462000281578063dd86fea114620002a9578063e9e5f3cf14620002c2578063f0f4426014620002cc575b600080fd5b620000f16040518060400160405280600281526020016113d560f21b81525081565b6040516200010091906200127d565b60405180910390f35b620001406200011a366004620012b2565b60036020908152600092835260408084209091529082529020546001600160a01b031681565b604051620001009190620012e1565b6200017562000160366004620012f5565b60056020526000908152604090205460ff1681565b604051901515815260200162000100565b60025462000140906001600160a01b031681565b62000175620001ab366004620012f5565b60066020526000908152604090205460ff1681565b620001d7620001d136600462001315565b620002e3565b005b620001d7620001ea36600462001315565b6200032e565b6200014062000201366004620012b2565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b6200023e62000238366004620012b2565b62000370565b604080516001600160a01b0393841681529290911660208301520162000100565b620000f160405180604001604052806002815260200161165560f21b81525081565b620001407f000000000000000000000000000000000000000000000000000000000000000081565b620002b360015481565b60405190815260200162000100565b620002b360005481565b620001d7620002dd366004620012f5565b62000939565b620002ed62000998565b6001600160a01b0316336001600160a01b031614620003295760405162461bcd60e51b815260040162000320906200132f565b60405180910390fd5b600055565b6200033862000998565b6001600160a01b0316336001600160a01b0316146200036b5760405162461bcd60e51b815260040162000320906200132f565b600155565b600080600054836200038391906200136e565b15620003d05760405162461bcd60e51b815260206004820152601b60248201527a36bab9ba1031329036bab63a34b836329037b3103234bb34b9b7b960291b604482015260640162000320565b6001600160a01b0384811660009081526003602090815260408083208784529091529020541615620004325760405162461bcd60e51b815260206004820152600a60248201526913d517d1561254d5115160b21b604482015260640162000320565b60008490506000816001600160a01b031663c2d416016040518163ffffffff1660e01b815260040160206040518083038186803b1580156200047357600080fd5b505afa15801562000488573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ae919062001385565b90508562000575836001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620004ef57600080fd5b505afa15801562000504573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200052e9190810190620013c0565b87604051806040016040528060018152602001600160fd1b8152506040518060400160405280600281526020016113d560f21b81525062000a34909392919063ffffffff16565b62000639846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620005b357600080fd5b505afa158015620005c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620005f29190810190620013c0565b88604051806040016040528060018152602001602d60f81b8152506040518060400160405280600281526020016113d560f21b81525062000a34909392919063ffffffff16565b8388604051620006499062001200565b6200065995949392919062001478565b604051809103906000f08015801562000676573d6000803e3d6000fd5b50935085846200073f846001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620006b957600080fd5b505afa158015620006ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620006f89190810190620013c0565b88604051806040016040528060018152602001600160fd1b81525060405180604001604052806002815260200161165560f21b81525062000a34909392919063ffffffff16565b62000803856001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200077d57600080fd5b505afa15801562000792573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007bc9190810190620013c0565b89604051806040016040528060018152602001602d60f81b81525060405180604001604052806002815260200161165560f21b81525062000a34909392919063ffffffff16565b848960405162000813906200120e565b6200082496959493929190620014ca565b604051809103906000f08015801562000841573d6000803e3d6000fd5b5060405163189acdbd60e31b81529093506001600160a01b0385169063c4d66de89062000873908690600401620012e1565b600060405180830381600087803b1580156200088e57600080fd5b505af1158015620008a3573d6000803e3d6000fd5b5050506001600160a01b0396871660008181526003602090815260408083208a8452825280832080548c8b166001600160a01b03199182168117909255948452600483528184209a845299825280832080549b89169b9094168b1790935597815260058852818120805460ff19908116600190811790925599825260069098522080549097169095179095555090939092509050565b6200094362000998565b6001600160a01b0316336001600160a01b031614620009765760405162461bcd60e51b815260040162000320906200132f565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b158015620009f457600080fd5b505afa15801562000a09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a2f919062001525565b905090565b60608482858462000a458762000a74565b60405160200162000a5b95949392919062001545565b6040516020818303038152906040529050949350505050565b6060600062000a838362000af2565b9050600062000a99826040015160ff1662000ca7565b9050600062000aa88362000dde565b9050600062000abf846000015161ffff1662000ca7565b905082828260405160200162000ad893929190620015ba565b604051602081830303815290604052945050505050919050565b6040805160608101825260008082526020820181905291810182905290808062000b1c8562000f68565b61ffff16845262000b2f6107b262001081565b845162000b409061ffff1662001081565b62000b4c919062001619565b915062000b5e826301e2850062001633565b62000b6a908462001655565b9250816107b2856000015162000b81919062001670565b61ffff1662000b91919062001619565b62000ba1906301e1338062001633565b62000bad908462001655565b92506000600191505b600c8260ff161162000c2c5762000bd2828660000151620010d8565b62000be49060ff166201518062001633565b90508562000bf3858362001655565b111562000c095760ff8216602086015262000c2c565b62000c15818562001655565b93508162000c238162001696565b92505062000bb6565b600191505b62000c4585602001518660000151620010d8565b60ff168260ff161162000c9e578562000c62856201518062001655565b111562000c785760ff8216604086015262000c9e565b62000c87620151808562001655565b93508162000c958162001696565b92505062000c31565b50505050919050565b60608162000ccc5750506040805180820190915260018152600360fc1b602082015290565b8160005b811562000cfc578062000ce381620016b9565b915062000cf49050600a83620016d7565b915062000cd0565b6000816001600160401b0381111562000d195762000d19620013aa565b6040519080825280601f01601f19166020018201604052801562000d44576020820181803683370190505b509050600062000d5660018462001619565b90505b851562000dd55762000d6d600a876200136e565b62000d7a90603062001655565b60f81b82828151811062000d925762000d92620016ee565b60200101906001600160f81b031916908160001a905350801562000dc0578062000dbc8162001704565b9150505b62000dcd600a87620016d7565b955062000d59565b50949350505050565b604080516101c08101825260036101808201818152622520a760e91b6101a0840152825282518084018452818152622322a160e91b60208281019190915280840191909152835180850185528281526226a0a960e91b8183015283850152835180850185528281526220a82960e91b8183015260608481019190915284518086018652838152624d415960e81b8184015260808501528451808601865283815262252aa760e91b8184015260a0850152845180860186528381526212955360ea1b8184015260c0850152845180860186528381526241554760e81b8184015260e0850152845180860186528381526205345560ec1b81840152610100850152845180860186528381526213d0d560ea1b8184015261012085015284518086018652838152622727ab60e91b8184015261014085015284518086019095529184526244454360e81b8482015261016083019390935291830151819062000f46906001906200171e565b60ff16600c811062000f5c5762000f5c620016ee565b60200201519392505050565b600080808062000f7d6301e1338086620016d7565b62000f8b906107b262001655565b915062000f9a6107b262001081565b62000fa98361ffff1662001081565b62000fb5919062001619565b905062000fc7816301e2850062001633565b62000fd3908462001655565b92508062000fe46107b28462001670565b61ffff1662000ff4919062001619565b62001004906301e1338062001633565b62001010908462001655565b92505b848311156200107957620010336200102d60018462001670565b620011b0565b156200105157620010496301e285008462001619565b925062001064565b620010616301e133808462001619565b92505b6200107160018362001670565b915062001013565b509392505050565b60006200109060018362001619565b9150620010a061019083620016d7565b620010ad606484620016d7565b620010ba600485620016d7565b620010c6919062001619565b620010d2919062001655565b92915050565b60008260ff1660011480620010f057508260ff166003145b80620010ff57508260ff166005145b806200110e57508260ff166007145b806200111d57508260ff166008145b806200112c57508260ff16600a145b806200113b57508260ff16600c145b156200114a5750601f620010d2565b8260ff16600414806200116057508260ff166006145b806200116f57508260ff166009145b806200117e57508260ff16600b145b156200118d5750601e620010d2565b6200119882620011b0565b15620011a75750601d620010d2565b50601c92915050565b6000620011bf60048362001744565b61ffff16158015620011e05750620011d960648362001744565b61ffff1615155b80620010d25750620011f56101908362001744565b61ffff161592915050565b611134806200176983390190565b612cdd806200289d83390190565b60005b83811015620012395781810151838201526020016200121f565b8381111562001249576000848401525b50505050565b60008151808452620012698160208601602086016200121c565b601f01601f19169290920160200192915050565b6020815260006200129260208301846200124f565b9392505050565b6001600160a01b0381168114620012af57600080fd5b50565b60008060408385031215620012c657600080fd5b8235620012d38162001299565b946020939093013593505050565b6001600160a01b0391909116815260200190565b6000602082840312156200130857600080fd5b8135620012928162001299565b6000602082840312156200132857600080fd5b5035919050565b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b60008262001380576200138062001358565b500690565b6000602082840312156200139857600080fd5b815160ff811681146200129257600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215620013d357600080fd5b81516001600160401b0380821115620013eb57600080fd5b818401915084601f8301126200140057600080fd5b815181811115620014155762001415620013aa565b604051601f8201601f19908116603f01168101908382118183101715620014405762001440620013aa565b816040528281528760208487010111156200145a57600080fd5b6200146d8360208301602088016200121c565b979650505050505050565b6001600160a01b038616815260a0602082018190526000906200149e908301876200124f565b8281036040840152620014b281876200124f565b60ff9590951660608401525050608001529392505050565b6001600160a01b0387811682528616602082015260c060408201819052600090620014f8908301876200124f565b82810360608401526200150c81876200124f565b60ff959095166080840152505060a00152949350505050565b6000602082840312156200153857600080fd5b8151620012928162001299565b6000865162001559818460208b016200121c565b8651908301906200156f818360208b016200121c565b865191019062001584818360208a016200121c565b8551910190620015998183602089016200121c565b8451910190620015ae8183602088016200121c565b01979650505050505050565b60008451620015ce8184602089016200121c565b845190830190620015e48183602089016200121c565b8451910190620015f98183602088016200121c565b0195945050505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156200162e576200162e62001603565b500390565b600081600019048311821515161562001650576200165062001603565b500290565b600082198211156200166b576200166b62001603565b500190565b600061ffff838116908316818110156200168e576200168e62001603565b039392505050565b600060ff821660ff811415620016b057620016b062001603565b60010192915050565b6000600019821415620016d057620016d062001603565b5060010190565b600082620016e957620016e962001358565b500490565b634e487b7160e01b600052603260045260246000fd5b60008162001716576200171662001603565b506000190190565b600060ff821660ff8416808210156200173b576200173b62001603565b90039392505050565b600061ffff808416806200175c576200175c62001358565b9216919091069291505056fe6101206040523480156200001257600080fd5b506040516200113438038062001134833981016040819052620000359162000250565b838383838383816003908051906020019062000053929190620000dd565b50805162000069906004906020840190620000dd565b505050428111620000b15760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e052505050506001600160a01b0316610100526200033d565b828054620000eb9062000300565b90600052602060002090601f0160209004810192826200010f57600085556200015a565b82601f106200012a57805160ff19168380011785556200015a565b828001600101855582156200015a579182015b828111156200015a5782518255916020019190600101906200013d565b50620001689291506200016c565b5090565b5b808211156200016857600081556001016200016d565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ab57600080fd5b81516001600160401b0380821115620001c857620001c862000183565b604051601f8301601f19908116603f01168101908282118183101715620001f357620001f362000183565b816040528381526020925086838588010111156200021057600080fd5b600091505b8382101562000234578582018301518183018401529082019062000215565b83821115620002465760008385830101525b9695505050505050565b600080600080600060a086880312156200026957600080fd5b85516001600160a01b03811681146200028157600080fd5b60208701519095506001600160401b03808211156200029f57600080fd5b620002ad89838a0162000199565b95506040880151915080821115620002c457600080fd5b50620002d38882890162000199565b935050606086015160ff81168114620002eb57600080fd5b80925050608086015190509295509295909350565b600181811c908216806200031557607f821691505b602082108114156200033757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610da46200039060003960006101ee0152600081816102aa015261057c01526000818161017e01526102f70152600061031e015260006101ac0152610da46000f3fe608060405234801561001057600080fd5b50600436106100fc5760003560e01c806306fdde0314610101578063095ea7b31461011f57806312a31dcc1461014257806318160ddd1461015757806323b872dd146101695780632f13b60c1461017c578063313ce567146101a557806339509351146101d657806347bfac62146101e957806370a0823114610228578063781c18db1461025157806395d89b4114610264578063a457c2d71461026c578063a9059cbb1461027f578063b64761f914610292578063c45a0155146102a5578063c4d66de8146102cc578063dd62ed3e146102df578063e184c9be146102f2578063f1653f6e14610319575b600080fd5b610109610340565b6040516101169190610b81565b60405180910390f35b61013261012d366004610bf2565b6103d2565b6040519015158152602001610116565b610155610150366004610bf2565b6103ea565b005b6002545b604051908152602001610116565b610132610177366004610c1c565b61042b565b7f0000000000000000000000000000000000000000000000000000000000000000421015610132565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610116565b6101326101e4366004610bf2565b61044f565b6102107f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610116565b61015b610236366004610c58565b6001600160a01b031660009081526020819052604090205490565b600554610210906001600160a01b031681565b61010961048e565b61013261027a366004610bf2565b61049d565b61013261028d366004610bf2565b61052f565b6101556102a0366004610bf2565b61053d565b6102107f000000000000000000000000000000000000000000000000000000000000000081565b6101556102da366004610c58565b610571565b61015b6102ed366004610c7a565b6105fa565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461034f90610cad565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90610cad565b80156103c85780601f1061039d576101008083540402835291602001916103c8565b820191906000526020600020905b8154815290600101906020018083116103ab57829003601f168201915b5050505050905090565b6000336103e0818585610625565b5060019392505050565b6005546001600160a01b0316331461041d5760405162461bcd60e51b815260040161041490610ce8565b60405180910390fd5b610427828261074a565b5050565b600033610439858285610817565b610444858585610891565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906103e09082908690610489908790610d1f565b610625565b60606004805461034f90610cad565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156105225760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610414565b6104448286868403610625565b6000336103e0818585610891565b6005546001600160a01b031633146105675760405162461bcd60e51b815260040161041490610ce8565b6104278282610a4d565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105d85760405162461bcd60e51b815260206004820152600c60248201526b4f4e4c595f464143544f525960a01b6044820152606401610414565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166106875760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610414565b6001600160a01b0382166106e85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610414565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166107a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610414565b80600260008282546107b29190610d1f565b90915550506001600160a01b038216600090815260208190526040812080548392906107df908490610d1f565b90915550506040518181526001600160a01b03831690600090600080516020610d4f8339815191529060200160405180910390a35050565b600061082384846105fa565b9050600019811461088b578181101561087e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610414565b61088b8484848403610625565b50505050565b6001600160a01b0383166108f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610414565b6001600160a01b0382166109575760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610414565b6001600160a01b038316600090815260208190526040902054818110156109cf5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610414565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610a06908490610d1f565b92505081905550826001600160a01b0316846001600160a01b0316600080516020610d4f83398151915284604051610a4091815260200190565b60405180910390a361088b565b6001600160a01b038216610aad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610414565b6001600160a01b03821660009081526020819052604090205481811015610b215760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610414565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610b50908490610d37565b90915550506040518281526000906001600160a01b03851690600080516020610d4f8339815191529060200161073d565b600060208083528351808285015260005b81811015610bae57858101830151858201604001528201610b92565b81811115610bc0576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610bed57600080fd5b919050565b60008060408385031215610c0557600080fd5b610c0e83610bd6565b946020939093013593505050565b600080600060608486031215610c3157600080fd5b610c3a84610bd6565b9250610c4860208501610bd6565b9150604084013590509250925092565b600060208284031215610c6a57600080fd5b610c7382610bd6565b9392505050565b60008060408385031215610c8d57600080fd5b610c9683610bd6565b9150610ca460208401610bd6565b90509250929050565b600181811c90821680610cc157607f821691505b60208210811415610ce257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526007908201526613d3931657d65560ca1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610d3257610d32610d09565b500190565b600082821015610d4957610d49610d09565b50039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206dfbd3dbf4f2d2990ecb59f955386865d92d5c1257323522b7d7c9302386f34f64736f6c634300080900336101406040523480156200001257600080fd5b5060405162002cdd38038062002cdd833981016040819052620000359162000274565b838383838383816003908051906020019062000053929190620000e4565b50805162000069906004906020840190620000e4565b505050428111620000b15760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e052505050506001600160a01b0391821661010052166101205262000365565b828054620000f29062000328565b90600052602060002090601f01602090048101928262000116576000855562000161565b82601f106200013157805160ff191683800117855562000161565b8280016001018555821562000161579182015b828111156200016157825182559160200191906001019062000144565b506200016f92915062000173565b5090565b5b808211156200016f576000815560010162000174565b80516001600160a01b0381168114620001a257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001cf57600080fd5b81516001600160401b0380821115620001ec57620001ec620001a7565b604051601f8301601f19908116603f01168101908282118183101715620002175762000217620001a7565b816040528381526020925086838588010111156200023457600080fd5b600091505b8382101562000258578582018301518183018401529082019062000239565b838211156200026a5760008385830101525b9695505050505050565b60008060008060008060c087890312156200028e57600080fd5b62000299876200018a565b9550620002a9602088016200018a565b60408801519095506001600160401b0380821115620002c757600080fd5b620002d58a838b01620001bd565b95506060890151915080821115620002ec57600080fd5b50620002fb89828a01620001bd565b935050608087015160ff811681146200031357600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200033d57607f821691505b602082108114156200035f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516128aa62000433600039600081816104ab01528181610819015281816108f60152610d600152600081816102860152818161075d01528181610977015281816109d301528181610a8d01528181610c3c01528181610ee601528181610f8f015281816114de01528181611a6601528181611af501528181611d350152611e3301526000818161045c01528181610ae1015261142001526000818161050e0152610629015260006105350152600061023101526128aa6000f3fe608060405234801561001057600080fd5b50600436106101b75760003560e01c806306fdde03146101bc578063095ea7b3146101da57806318160ddd146101fd57806323b872dd1461020f5780632f13b60c14610222578063313ce5671461022a578063395093511461025b578063443cb7f81461026e57806347bfac62146102815780635cbadbe4146102b5578063649a00d6146102fc57806366247a721461030f57806370a08231146103225780637695caa21461033557806379e6ea161461033f57806380a7c9ac1461035f57806388611f351461037257806395d89b411461037b5780639b1e03f0146103835780639c9fdc3b1461038b578063a090ee5014610394578063a457c2d71461039c578063a9059cbb146103af578063aa1fb970146103c2578063afb442e9146103d5578063b2427a6c146103e8578063b90d3d0c1461040f578063bdaba53614610436578063c45a015514610457578063c4f59f9b1461047e578063c6d6916c14610493578063c836545a146104a6578063d86e0302146104cd578063dcda874d146104d6578063dd62ed3e146104f6578063e184c9be14610509578063f1653f6e14610530575b600080fd5b6101c4610557565b6040516101d19190612358565b60405180910390f35b6101ed6101e83660046123a0565b6105e9565b60405190151581526020016101d1565b6002545b6040519081526020016101d1565b6101ed61021d3660046123cc565b610601565b6101ed610627565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101d1565b6101ed6102693660046123a0565b61064e565b61020161027c36600461240d565b61068d565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d19190612426565b6102e76102c336600461243a565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101d1565b61020161030a366004612473565b6106ae565b61020161031d366004612473565b61070d565b610201610330366004612473565b610730565b61033d61074b565b005b61035261034d366004612473565b6107ff565b6040516101d191906124cb565b61020161036d366004612473565b610814565b610201600b5481565b6101c46109ac565b6102016109bb565b61020160085481565b61033d610a6e565b6101ed6103aa3660046123a0565b610c77565b6101ed6103bd3660046123a0565b610d19565b6102016103d036600461243a565b610d27565b61033d6103e3366004612473565b610dd0565b6102e76103f6366004612473565b6005602052600090815260409020805460019091015482565b6102e761041d366004612473565b600c602052600090815260409020805460019091015482565b610449610444366004612473565b610eb0565b6040516101d19291906124de565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b610486610ee2565b6040516101d191906124f7565b61033d6104a1366004612473565b610f7e565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b61020160075481565b6102016104e4366004612473565b600a6020526000908152604090205481565b61020161050436600461243a565b611036565b6102017f000000000000000000000000000000000000000000000000000000000000000081565b6102017f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461056690612544565b80601f016020809104026020016040519081016040528092919081815260200182805461059290612544565b80156105df5780601f106105b4576101008083540402835291602001916105df565b820191906000526020600020905b8154815290600101906020018083116105c257829003601f168201915b5050505050905090565b6000336105f7818585611061565b5060019392505050565b60003361060f858285611185565b61061a8585856111ff565b60019150505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000042101590565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906105f7908290869061068890879061258f565b611061565b6009818154811061069d57600080fd5b600091825260209091200154905081565b6001600160a01b0381166000908152600c6020526040812054806106d55750600092915050565b6001600160a01b0383166000908152600c6020526040902060010154610703826106fe86610730565b6113c6565b610620919061258f565b600061071882610f7e565b61072182610dd0565b61072a826113e5565b92915050565b6001600160a01b031660009081526020819052604090205490565b6000610755610ee2565b90506107fc817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107a79190612426565b60206040518083038186803b1580156107bf57600080fd5b505afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f791906125a7565b611515565b50565b606061080a82610f7e565b61072a82836116ab565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108639190612426565b60206040518083038186803b15801561087b57600080fd5b505afa15801561088f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b391906125a7565b90506108bd610627565b6108df576108d3816108ce30610730565b611888565b90506108df308261189e565b60405163b64761f960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b64761f99061092d90309085906004016125c0565b600060405180830381600087803b15801561094757600080fd5b505af115801561095b573d6000803e3d6000fd5b50505050610968816119e6565b915061099e6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684846119f9565b6109a6611a4f565b50919050565b60606004805461056690612544565b60006109c5610627565b156109d1575060085490565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a2c57600080fd5b505af1158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6491906125a7565b6008819055919050565b6000610a78610ee2565b9050610a82610627565b15610ad757610ad7817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107a79190612426565b60008151905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7091906125d9565b905060005b82811015610c22576000848281518110610b9157610b916125f6565b6020908102919091018101516001600160a01b0381166000908152600a9092526040909120549091508015610bf757610bf78482888681518110610bd757610bd76125f6565b60200260200101516001600160a01b03166119f99092919063ffffffff16565b506001600160a01b03166000908152600a602052604081205580610c1a8161260c565b915050610b75565b50600b5415610c7257600b54610c64906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083906119f9565b610c6c611a4f565b6000600b555b505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610d015760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610d0e8286868403611061565b506001949350505050565b6000336105f78185856111ff565b600080610d32611af0565b9050610d3d81611be6565b9150610d498383611bf9565b6040516304a8c77360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906312a31dcc90610d9790879086906004016125c0565b600060405180830381600087803b158015610db157600080fd5b505af1158015610dc5573d6000803e3d6000fd5b505050505092915050565b6001600160a01b0381166000908152600c602052604081205490610df26109bb565b905080821415610e0157505050565b81610e26576001600160a01b039092166000908152600c602052604090209190915550565b6000610e3184610730565b90506000610e5c610e428486612627565b610e4c8686612646565b610e569085612627565b90611cd3565b6001600160a01b0386166000908152600c6020526040812060010180549293508392909190610e8c90849061258f565b9091555050506001600160a01b039093166000908152600c60205260409020555050565b60006060610ebd83610f7e565b610ec683610dd0565b610ed083846116ab565b9050610edb836113e5565b9150915091565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610f3d57600080fd5b505afa158015610f51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f7991908101906126c6565b905090565b6000610f89826106ae565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610fd99190612426565b60206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102991906125a7565b9050610c72838383611d02565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cf8565b6001600160a01b0382166111245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cf8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111918484611036565b905060001981146111f957818110156111ec5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610cf8565b6111f98484848403611061565b50505050565b6001600160a01b0383166112635760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cf8565b6001600160a01b0382166112c55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cf8565b6112d0838383611d23565b6001600160a01b038316600090815260208190526040902054818110156113485760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cf8565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061137f90849061258f565b92505081905550826001600160a01b0316846001600160a01b0316600080516020612855833981519152846040516113b991815260200190565b60405180910390a36111f9565b6000826113db670de0b6b3a764000084612627565b610620919061276f565b6001600160a01b038082166000908152600c60209081526040808320600101805490849055815163dd86fea160e01b815291519394909385937f00000000000000000000000000000000000000000000000000000000000000009092169263dd86fea1926004808301939192829003018186803b15801561146557600080fd5b505afa158015611479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149d91906125a7565b905060006114ab8383611dfe565b905080600b60008282546114bf919061258f565b909155506114cf90508184612646565b93506115056001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866119f9565b61150d611a4f565b505050919050565b61151d611e1c565b61152682611ebe565b6000611530610627565b905060005b83518110156111f9576000848281518110611552576115526125f6565b602002602001015190506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161158a9190612426565b60206040518083038186803b1580156115a257600080fd5b505afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da91906125a7565b6001600160a01b038316600090815260056020526040812060010154919250906116049083612646565b9050841561163f576001600160a01b0383166000908152600a60205260408120805483929061163490849061258f565b9091555061167d9050565b851561167d5761164f8187611cd3565b6001600160a01b0384166000908152600560205260408120805490919061167790849061258f565b90915550505b506001600160a01b039091166000908152600560205260409020600101556116a48161260c565b9050611535565b606060006116b7610ee2565b905080516001600160401b038111156116d2576116d261265d565b6040519080825280602002602001820160405280156116fb578160200160208202803683370190505b50915060005b815181101561188057600082828151811061171e5761171e6125f6565b6020026020010151905060066000876001600160a01b03166001600160a01b031681526020019081526020016000206000826001600160a01b03166001600160a01b0316815260200190815260200160002060010154848381518110611786576117866125f6565b6020908102919091018101919091526001600160a01b03808816600090815260068352604080822092851682529190925281206001015583518490839081106117d1576117d16125f6565b602002602001015160056000836001600160a01b03166001600160a01b0316815260200190815260200160002060010160008282546118109190612646565b92505081905550838281518110611829576118296125f6565b602002602001015160001461186f5761186f8585848151811061184e5761184e6125f6565b6020026020010151836001600160a01b03166119f99092919063ffffffff16565b506118798161260c565b9050611701565b505092915050565b60008183106118975781610620565b5090919050565b6001600160a01b0382166118fe5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cf8565b61190a82600083611d23565b6001600160a01b0382166000908152602081905260409020548181101561197e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cf8565b6001600160a01b03831660009081526020819052604081208383039055600280548492906119ad908490612646565b90915550506040518281526000906001600160a01b038516906000805160206128558339815191529060200160405180910390a3505050565b600061072a6119f36109bb565b836113c6565b610c728363a9059cbb60e01b8484604051602401611a189291906125c0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f61565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611a9b903090600401612426565b60206040518083038186803b158015611ab357600080fd5b505afa158015611ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aeb91906125a7565b600755565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611b3f9190612426565b60206040518083038186803b158015611b5757600080fd5b505afa158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f91906125a7565b905060075481611b9f9190612646565b915060008211611be05760405162461bcd60e51b815260206004820152600c60248201526b524543454956455f5a45524f60a01b6044820152606401610cf8565b60075590565b600061072a611bf36109bb565b83612033565b6001600160a01b038216611c4f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610cf8565b611c5b60008383611d23565b8060026000828254611c6d919061258f565b90915550506001600160a01b03821660009081526020819052604081208054839290611c9a90849061258f565b90915550506040518181526001600160a01b038316906000906000805160206128558339815191529060200160405180910390a35b5050565b600080611ce8670de0b6b3a764000085612627565b9050828181611cf957611cf9612759565b04949350505050565b6000611d0c610ee2565b9050611d188183611515565b6111f9818585612048565b6000611d2d610ee2565b9050611d7f817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107a79190612426565b6001600160a01b03841615801590611da057506001600160a01b0384163014155b15611dc157611dae84610dd0565b611dc18185611dbc876106ae565b612048565b6001600160a01b03831615801590611de257506001600160a01b0383163014155b156111f957611df083610dd0565b6111f98184611dbc866106ae565b600080611e0b8385612627565b9050670de0b6b3a764000081611cf9565b6040516359436f3b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b286de7690611e68903090600401612426565b600060405180830381600087803b158015611e8257600080fd5b505af1158015611e96573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107fc9190810190612791565b60005b8151811015611ccf5760056000838381518110611ee057611ee06125f6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000015460001415611f5157600160056000848481518110611f2c57611f2c6125f6565b6020908102919091018101516001600160a01b03168252810191909152604001600020555b611f5a8161260c565b9050611ec1565b6000611fb6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121ab9092919063ffffffff16565b805190915015610c725780806020019051810190611fd49190612816565b610c725760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610cf8565b6000670de0b6b3a76400006113db8484612627565b60005b83518110156111f9576000848281518110612068576120686125f6565b6020908102919091018101516001600160a01b038087166000908152600684526040808220928416825291845281812054600590945220549092508114156120b157505061219b565b806120ed57506001600160a01b03908116600081815260056020908152604080832054948816835260068252808320938352929052205561219b565b6001600160a01b038216600090815260056020526040812054612111908390612646565b9050600061211f8683611dfe565b6001600160a01b03808916600090815260066020908152604080832093891683529290529081206001018054929350839290919061215e90849061258f565b9091555050506001600160a01b03928316600081815260056020908152604080832054968a16835260068252808320938352929052209290925550505b6121a48161260c565b905061204b565b60606121ba84846000856121c2565b949350505050565b6060824710156122235760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610cf8565b6001600160a01b0385163b61227a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cf8565b600080866001600160a01b031685876040516122969190612838565b60006040518083038185875af1925050503d80600081146122d3576040519150601f19603f3d011682016040523d82523d6000602084013e6122d8565b606091505b50915091506122e88282866122f3565b979650505050505050565b60608315612302575081610620565b8251156123125782518084602001fd5b8160405162461bcd60e51b8152600401610cf89190612358565b60005b8381101561234757818101518382015260200161232f565b838111156111f95750506000910152565b602081526000825180602084015261237781604085016020870161232c565b601f01601f19169190910160400192915050565b6001600160a01b03811681146107fc57600080fd5b600080604083850312156123b357600080fd5b82356123be8161238b565b946020939093013593505050565b6000806000606084860312156123e157600080fd5b83356123ec8161238b565b925060208401356123fc8161238b565b929592945050506040919091013590565b60006020828403121561241f57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561244d57600080fd5b82356124588161238b565b915060208301356124688161238b565b809150509250929050565b60006020828403121561248557600080fd5b81356106208161238b565b600081518084526020808501945080840160005b838110156124c0578151875295820195908201906001016124a4565b509495945050505050565b6020815260006106206020830184612490565b8281526040602082015260006121ba6040830184612490565b6020808252825182820181905260009190848201906040850190845b818110156125385783516001600160a01b031683529284019291840191600101612513565b50909695505050505050565b600181811c9082168061255857607f821691505b602082108114156109a657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125a2576125a2612579565b500190565b6000602082840312156125b957600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b6000602082840312156125eb57600080fd5b81516106208161238b565b634e487b7160e01b600052603260045260246000fd5b600060001982141561262057612620612579565b5060010190565b600081600019048311821515161561264157612641612579565b500290565b60008282101561265857612658612579565b500390565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561269b5761269b61265d565b604052919050565b60006001600160401b038211156126bc576126bc61265d565b5060051b60200190565b600060208083850312156126d957600080fd5b82516001600160401b038111156126ef57600080fd5b8301601f8101851361270057600080fd5b805161271361270e826126a3565b612673565b81815260059190911b8201830190838101908783111561273257600080fd5b928401925b828410156122e857835161274a8161238b565b82529284019290840190612737565b634e487b7160e01b600052601260045260246000fd5b60008261278c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083850312156127a457600080fd5b82516001600160401b038111156127ba57600080fd5b8301601f810185136127cb57600080fd5b80516127d961270e826126a3565b81815260059190911b820183019083810190878311156127f857600080fd5b928401925b828410156122e8578351825292840192908401906127fd565b60006020828403121561282857600080fd5b8151801515811461062057600080fd5b6000825161284a81846020870161232c565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122020733e7fa8076a10d5092377579c87dbe711d49a16fe7b61f6f73a5aa96d16fb64736f6c63430008090033a2646970667358221220a3219db8c85e74edbb479ac3243d380b477bf268c6ebb77be0c411f2f91c176a64736f6c63430008090033";
300
281
 
301
282
  type PendleYieldContractFactoryConstructorParams =
302
283
  | [signer?: Signer]
@@ -320,12 +301,14 @@ export class PendleYieldContractFactory__factory extends ContractFactory {
320
301
  _expiryDivisor: BigNumberish,
321
302
  _interestFeeRate: BigNumberish,
322
303
  _treasury: string,
304
+ _governanceManager: string,
323
305
  overrides?: Overrides & { from?: string | Promise<string> }
324
306
  ): Promise<PendleYieldContractFactory> {
325
307
  return super.deploy(
326
308
  _expiryDivisor,
327
309
  _interestFeeRate,
328
310
  _treasury,
311
+ _governanceManager,
329
312
  overrides || {}
330
313
  ) as Promise<PendleYieldContractFactory>;
331
314
  }
@@ -333,12 +316,14 @@ export class PendleYieldContractFactory__factory extends ContractFactory {
333
316
  _expiryDivisor: BigNumberish,
334
317
  _interestFeeRate: BigNumberish,
335
318
  _treasury: string,
319
+ _governanceManager: string,
336
320
  overrides?: Overrides & { from?: string | Promise<string> }
337
321
  ): TransactionRequest {
338
322
  return super.getDeployTransaction(
339
323
  _expiryDivisor,
340
324
  _interestFeeRate,
341
325
  _treasury,
326
+ _governanceManager,
342
327
  overrides || {}
343
328
  );
344
329
  }
@@ -282,6 +282,25 @@ const _abi = [
282
282
  stateMutability: "view",
283
283
  type: "function",
284
284
  },
285
+ {
286
+ inputs: [
287
+ {
288
+ internalType: "address",
289
+ name: "user",
290
+ type: "address",
291
+ },
292
+ ],
293
+ name: "getImpliedScyBalance",
294
+ outputs: [
295
+ {
296
+ internalType: "uint256",
297
+ name: "",
298
+ type: "uint256",
299
+ },
300
+ ],
301
+ stateMutability: "view",
302
+ type: "function",
303
+ },
285
304
  {
286
305
  inputs: [],
287
306
  name: "getRewardTokens",
@@ -477,9 +496,28 @@ const _abi = [
477
496
  name: "user",
478
497
  type: "address",
479
498
  },
499
+ ],
500
+ name: "redeemDueInterestAndRewards",
501
+ outputs: [
502
+ {
503
+ internalType: "uint256",
504
+ name: "interestOut",
505
+ type: "uint256",
506
+ },
507
+ {
508
+ internalType: "uint256[]",
509
+ name: "rewardsOut",
510
+ type: "uint256[]",
511
+ },
512
+ ],
513
+ stateMutability: "nonpayable",
514
+ type: "function",
515
+ },
516
+ {
517
+ inputs: [
480
518
  {
481
519
  internalType: "address",
482
- name: "receiver",
520
+ name: "user",
483
521
  type: "address",
484
522
  },
485
523
  ],
@@ -644,6 +682,19 @@ const _abi = [
644
682
  stateMutability: "nonpayable",
645
683
  type: "function",
646
684
  },
685
+ {
686
+ inputs: [
687
+ {
688
+ internalType: "address",
689
+ name: "user",
690
+ type: "address",
691
+ },
692
+ ],
693
+ name: "updateUserInterest",
694
+ outputs: [],
695
+ stateMutability: "nonpayable",
696
+ type: "function",
697
+ },
647
698
  {
648
699
  inputs: [
649
700
  {
@@ -696,7 +747,7 @@ const _abi = [
696
747
  ];
697
748
 
698
749
  const _bytecode =
699
- "0x6101406040523480156200001257600080fd5b5060405162002a7e38038062002a7e833981016040819052620000359162000274565b838383838383816003908051906020019062000053929190620000e4565b50805162000069906004906020840190620000e4565b505050428111620000b15760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e052505050506001600160a01b0391821661010052166101205262000365565b828054620000f29062000328565b90600052602060002090601f01602090048101928262000116576000855562000161565b82601f106200013157805160ff191683800117855562000161565b8280016001018555821562000161579182015b828111156200016157825182559160200191906001019062000144565b506200016f92915062000173565b5090565b5b808211156200016f576000815560010162000174565b80516001600160a01b0381168114620001a257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001cf57600080fd5b81516001600160401b0380821115620001ec57620001ec620001a7565b604051601f8301601f19908116603f01168101908282118183101715620002175762000217620001a7565b816040528381526020925086838588010111156200023457600080fd5b600091505b8382101562000258578582018301518183018401529082019062000239565b838211156200026a5760008385830101525b9695505050505050565b60008060008060008060c087890312156200028e57600080fd5b62000299876200018a565b9550620002a9602088016200018a565b60408801519095506001600160401b0380821115620002c757600080fd5b620002d58a838b01620001bd565b95506060890151915080821115620002ec57600080fd5b50620002fb89828a01620001bd565b935050608087015160ff811681146200031357600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200033d57607f821691505b602082108114156200035f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516126606200041e60003960008181610423015281816107bd0152818161089a0152610d34015260008181610265015281816107450152818161091b0152818161097701528181610a1601528181610c1001528181610da801528181611422015281816117b80152611d510152600081816103d40152818161068a0152610ab50152600081816104a601526105c3015260006104cd0152600061021001526126606000f3fe608060405234801561001057600080fd5b50600436106101965760003560e01c806306fdde031461019b578063095ea7b3146101b957806318160ddd146101dc57806323b872dd146101ee5780632f13b60c14610201578063313ce56714610209578063395093511461023a578063443cb7f81461024d57806347bfac62146102605780635cbadbe41461029457806366247a72146102db57806370a08231146102ee5780637695caa21461030157806380a7c9ac1461030b57806388611f351461031e57806395d89b41146103275780639b1e03f01461032f5780639c9fdc3b14610337578063a090ee5014610340578063a457c2d714610348578063a9059cbb1461035b578063aa1fb9701461036e578063b2427a6c14610381578063b90d3d0c146103a8578063c45a0155146103cf578063c4f59f9b146103f6578063c6d6916c1461040b578063c836545a1461041e578063ccb2f5c514610445578063d86e030214610465578063dcda874d1461046e578063dd62ed3e1461048e578063e184c9be146104a1578063f1653f6e146104c8575b600080fd5b6101a36104ef565b6040516101b09190612153565b60405180910390f35b6101cc6101c736600461219b565b610581565b60405190151581526020016101b0565b6002545b6040519081526020016101b0565b6101cc6101fc3660046121c7565b61059b565b6101cc6105c1565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b0565b6101cc61024836600461219b565b6105e8565b6101e061025b366004612208565b610627565b6102877f000000000000000000000000000000000000000000000000000000000000000081565b6040516101b09190612221565b6102c66102a2366004612235565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101b0565b6101e06102e936600461226e565b610648565b6101e06102fc36600461226e565b61077c565b610309610797565b005b6101e061031936600461226e565b6107b8565b6101e0600b5481565b6101a3610950565b6101e061095f565b6101e060085481565b610309610a12565b6101cc61035636600461219b565b610c4b565b6101cc61036936600461219b565b610ced565b6101e061037c366004612235565b610cfb565b6102c661038f36600461226e565b6005602052600090815260409020805460019091015482565b6102c66103b636600461226e565b600c602052600090815260409020805460019091015482565b6102877f000000000000000000000000000000000000000000000000000000000000000081565b6103fe610da4565b6040516101b0919061228b565b61030961041936600461226e565b610e40565b6102877f000000000000000000000000000000000000000000000000000000000000000081565b610458610453366004612235565b610e55565b6040516101b091906122d8565b6101e060075481565b6101e061047c36600461226e565b600a6020526000908152604090205481565b6101e061049c366004612235565b610f1c565b6101e07f000000000000000000000000000000000000000000000000000000000000000081565b6101e07f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546104fe90612310565b80601f016020809104026020016040519081016040528092919081815260200182805461052a90612310565b80156105775780601f1061054c57610100808354040283529160200191610577565b820191906000526020600020905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b60003361058f818585610f47565b60019150505b92915050565b6000336105a985828561106b565b6105b48585856110e5565b60019150505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000042101590565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061058f908290869061062290879061235b565b610f47565b6009818154811061063757600080fd5b600091825260209091200154905081565b6000610653826112ac565b6001600160a01b038083166000908152600c60209081526040808320600101805490849055815163dd86fea160e01b8152915190947f0000000000000000000000000000000000000000000000000000000000000000169263dd86fea19260048082019391829003018186803b1580156106cc57600080fd5b505afa1580156106e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107049190612373565b90506000610712838361138c565b905080600b6000828254610726919061235b565b909155506107369050818461238c565b935061076c6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866113b5565b61077461140b565b505050919050565b6001600160a01b031660009081526020819052604090205490565b60006107a1610da4565b90506107b5816107b060025490565b6114ac565b50565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108079190612221565b60206040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190612373565b90506108616105c1565b61088357610877816108723061077c565b611642565b90506108833082611658565b60405163b64761f960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b64761f9906108d190309085906004016123a3565b600060405180830381600087803b1580156108eb57600080fd5b505af11580156108ff573d6000803e3d6000fd5b5050505061090c816117a0565b91506109426001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684846113b5565b61094a61140b565b50919050565b6060600480546104fe90612310565b60006109696105c1565b15610975575060085490565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190612373565b6008819055919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a6d57600080fd5b505afa158015610a81573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aa99190810190612425565b905060008151905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0c57600080fd5b505afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4491906124b8565b905060005b82811015610bf6576000848281518110610b6557610b656124d5565b6020908102919091018101516001600160a01b0381166000908152600a9092526040909120549091508015610bcb57610bcb8482888681518110610bab57610bab6124d5565b60200260200101516001600160a01b03166113b59092919063ffffffff16565b506001600160a01b03166000908152600a602052604081205580610bee816124eb565b915050610b49565b50600b5415610c4657600b54610c38906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083906113b5565b610c4061140b565b6000600b555b505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610cd55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610ce28286868403610f47565b506001949350505050565b60003361058f8185856110e5565b600080610d066117b3565b9050610d11816118a9565b9150610d1d83836118bc565b6040516304a8c77360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906312a31dcc90610d6b90879086906004016123a3565b600060405180830381600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050505092915050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610dff57600080fd5b505afa158015610e13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e3b9190810190612425565b905090565b6107b581610e4d8361077c565b600254611996565b60606001600160a01b0383163314610ec057826001600160a01b0316826001600160a01b031614610ebb5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2103932b1b2b4bb32b960811b6044820152606401610ccc565b610f05565b6001600160a01b038216610f055760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610ccc565b610f1283610e4d8561077c565b6105ba83836119b7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610fa95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ccc565b6001600160a01b03821661100a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ccc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110778484610f1c565b905060001981146110df57818110156110d25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ccc565b6110df8484848403610f47565b50505050565b6001600160a01b0383166111495760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ccc565b6001600160a01b0382166111ab5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ccc565b6111b6838383611b94565b6001600160a01b0383166000908152602081905260409020548181101561122e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ccc565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061126590849061235b565b92505081905550826001600160a01b0316846001600160a01b031660008051602061260b8339815191528460405161129f91815260200190565b60405180910390a36110df565b6001600160a01b0381166000908152600c6020526040812054906112ce61095f565b9050808214156112dd57505050565b81611302576001600160a01b039092166000908152600c602052604090209190915550565b600061130d8461077c565b9050600061133861131e8486612506565b611328868661238c565b6113329085612506565b90611c2c565b6001600160a01b0386166000908152600c602052604081206001018054929350839290919061136890849061235b565b9091555050506001600160a01b039093166000908152600c60205260409020555050565b6000806113998385612506565b90506113ad670de0b6b3a764000082612525565b949350505050565b610c468363a9059cbb60e01b84846040516024016113d49291906123a3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c63565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611457903090600401612221565b60206040518083038186803b15801561146f57600080fd5b505afa158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a79190612373565b600755565b6114b4611d35565b6114bd82611dd9565b60006114c76105c1565b905060005b83518110156110df5760008482815181106114e9576114e96124d5565b602002602001015190506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016115219190612221565b60206040518083038186803b15801561153957600080fd5b505afa15801561154d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115719190612373565b6001600160a01b0383166000908152600560205260408120600101549192509061159b908361238c565b905084156115d6576001600160a01b0383166000908152600a6020526040812080548392906115cb90849061235b565b909155506116149050565b8515611614576115e68187611c2c565b6001600160a01b0384166000908152600560205260408120805490919061160e90849061235b565b90915550505b506001600160a01b0390911660009081526005602052604090206001015561163b816124eb565b90506114cc565b600081831061165157816105ba565b5090919050565b6001600160a01b0382166116b85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ccc565b6116c482600083611b94565b6001600160a01b038216600090815260208190526040902054818110156117385760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ccc565b6001600160a01b038316600090815260208190526040812083830390556002805484929061176790849061238c565b90915550506040518281526000906001600160a01b0385169060008051602061260b8339815191529060200160405180910390a3505050565b60006105956117ad61095f565b83611e7c565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118029190612221565b60206040518083038186803b15801561181a57600080fd5b505afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118529190612373565b905060075481611862919061238c565b9150600082116118a35760405162461bcd60e51b815260206004820152600c60248201526b524543454956455f5a45524f60a01b6044820152606401610ccc565b60075590565b60006105956118b661095f565b83611e9b565b6001600160a01b0382166119125760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ccc565b61191e60008383611b94565b8060026000828254611930919061235b565b90915550506001600160a01b0382166000908152602081905260408120805483929061195d90849061235b565b90915550506040518181526001600160a01b0383169060009060008051602061260b8339815191529060200160405180910390a35b5050565b60006119a0610da4565b90506119ac81836114ac565b6110df818585611eb0565b606060006119c3610da4565b905080516001600160401b038111156119de576119de6123bc565b604051908082528060200260200182016040528015611a07578160200160208202803683370190505b50915060005b8151811015611b8c576000828281518110611a2a57611a2a6124d5565b6020026020010151905060066000876001600160a01b03166001600160a01b031681526020019081526020016000206000826001600160a01b03166001600160a01b0316815260200190815260200160002060010154848381518110611a9257611a926124d5565b6020908102919091018101919091526001600160a01b0380881660009081526006835260408082209285168252919092528120600101558351849083908110611add57611add6124d5565b602002602001015160056000836001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254611b1c919061238c565b92505081905550838281518110611b3557611b356124d5565b6020026020010151600014611b7b57611b7b85858481518110611b5a57611b5a6124d5565b6020026020010151836001600160a01b03166113b59092919063ffffffff16565b50611b85816124eb565b9050611a0d565b505092915050565b6000611b9e610da4565b9050611bad816107b060025490565b6001600160a01b03841615801590611bce57506001600160a01b0384163014155b15611bef57611bdc846112ac565b611bef8185611bea8761077c565b611eb0565b6001600160a01b03831615801590611c1057506001600160a01b0383163014155b156110df57611c1e836112ac565b6110df8184611bea8661077c565b600082611c3b57506000610595565b6000611c4f670de0b6b3a764000085612506565b9050611c5b8382612525565b915050610595565b6000611cb8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120139092919063ffffffff16565b805190915015610c465780806020019051810190611cd69190612547565b610c465760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ccc565b6040516326a7076d60e21b8152306004820181905260248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639a9c1db490604401600060405180830381600087803b158015611d9d57600080fd5b505af1158015611db1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107b59190810190612569565b60005b81518110156119925760056000838381518110611dfb57611dfb6124d5565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000015460001415611e6c57600160056000848481518110611e4757611e476124d5565b6020908102919091018101516001600160a01b03168252810191909152604001600020555b611e75816124eb565b9050611ddc565b600082611e91670de0b6b3a764000084612506565b6105ba9190612525565b6000670de0b6b3a7640000611e918484612506565b60005b83518110156110df576000848281518110611ed057611ed06124d5565b6020908102919091018101516001600160a01b03808716600090815260068452604080822092841682529184528181205460059094522054909250811415611f19575050612003565b80611f5557506001600160a01b039081166000818152600560209081526040808320549488168352600682528083209383529290522055612003565b6001600160a01b038216600090815260056020526040812054611f7990839061238c565b90506000611f87868361138c565b6001600160a01b038089166000908152600660209081526040808320938916835292905290812060010180549293508392909190611fc690849061235b565b9091555050506001600160a01b03928316600081815260056020908152604080832054968a16835260068252808320938352929052209290925550505b61200c816124eb565b9050611eb3565b60606113ad8484600085856001600160a01b0385163b6120755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ccc565b600080866001600160a01b0316858760405161209191906125ee565b60006040518083038185875af1925050503d80600081146120ce576040519150601f19603f3d011682016040523d82523d6000602084013e6120d3565b606091505b50915091506120e38282866120ee565b979650505050505050565b606083156120fd5750816105ba565b82511561210d5782518084602001fd5b8160405162461bcd60e51b8152600401610ccc9190612153565b60005b8381101561214257818101518382015260200161212a565b838111156110df5750506000910152565b6020815260008251806020840152612172816040850160208701612127565b601f01601f19169190910160400192915050565b6001600160a01b03811681146107b557600080fd5b600080604083850312156121ae57600080fd5b82356121b981612186565b946020939093013593505050565b6000806000606084860312156121dc57600080fd5b83356121e781612186565b925060208401356121f781612186565b929592945050506040919091013590565b60006020828403121561221a57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561224857600080fd5b823561225381612186565b9150602083013561226381612186565b809150509250929050565b60006020828403121561228057600080fd5b81356105ba81612186565b6020808252825182820181905260009190848201906040850190845b818110156122cc5783516001600160a01b0316835292840192918401916001016122a7565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156122cc578351835292840192918401916001016122f4565b600181811c9082168061232457607f821691505b6020821081141561094a57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561236e5761236e612345565b500190565b60006020828403121561238557600080fd5b5051919050565b60008282101561239e5761239e612345565b500390565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156123fa576123fa6123bc565b604052919050565b60006001600160401b0382111561241b5761241b6123bc565b5060051b60200190565b6000602080838503121561243857600080fd5b82516001600160401b0381111561244e57600080fd5b8301601f8101851361245f57600080fd5b805161247261246d82612402565b6123d2565b81815260059190911b8201830190838101908783111561249157600080fd5b928401925b828410156120e35783516124a981612186565b82529284019290840190612496565b6000602082840312156124ca57600080fd5b81516105ba81612186565b634e487b7160e01b600052603260045260246000fd5b60006000198214156124ff576124ff612345565b5060010190565b600081600019048311821515161561252057612520612345565b500290565b60008261254257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561255957600080fd5b815180151581146105ba57600080fd5b6000602080838503121561257c57600080fd5b82516001600160401b0381111561259257600080fd5b8301601f810185136125a357600080fd5b80516125b161246d82612402565b81815260059190911b820183019083810190878311156125d057600080fd5b928401925b828410156120e3578351825292840192908401906125d5565b60008251612600818460208701612127565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d5201ed1d525690ff43ab25feef21e73e94dc509c0d59af2d7b1e0c85abdca2a64736f6c63430008090033";
750
+ "0x6101406040523480156200001257600080fd5b5060405162002cdd38038062002cdd833981016040819052620000359162000274565b838383838383816003908051906020019062000053929190620000e4565b50805162000069906004906020840190620000e4565b505050428111620000b15760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e052505050506001600160a01b0391821661010052166101205262000365565b828054620000f29062000328565b90600052602060002090601f01602090048101928262000116576000855562000161565b82601f106200013157805160ff191683800117855562000161565b8280016001018555821562000161579182015b828111156200016157825182559160200191906001019062000144565b506200016f92915062000173565b5090565b5b808211156200016f576000815560010162000174565b80516001600160a01b0381168114620001a257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001cf57600080fd5b81516001600160401b0380821115620001ec57620001ec620001a7565b604051601f8301601f19908116603f01168101908282118183101715620002175762000217620001a7565b816040528381526020925086838588010111156200023457600080fd5b600091505b8382101562000258578582018301518183018401529082019062000239565b838211156200026a5760008385830101525b9695505050505050565b60008060008060008060c087890312156200028e57600080fd5b62000299876200018a565b9550620002a9602088016200018a565b60408801519095506001600160401b0380821115620002c757600080fd5b620002d58a838b01620001bd565b95506060890151915080821115620002ec57600080fd5b50620002fb89828a01620001bd565b935050608087015160ff811681146200031357600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200033d57607f821691505b602082108114156200035f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516128aa62000433600039600081816104ab01528181610819015281816108f60152610d600152600081816102860152818161075d01528181610977015281816109d301528181610a8d01528181610c3c01528181610ee601528181610f8f015281816114de01528181611a6601528181611af501528181611d350152611e3301526000818161045c01528181610ae1015261142001526000818161050e0152610629015260006105350152600061023101526128aa6000f3fe608060405234801561001057600080fd5b50600436106101b75760003560e01c806306fdde03146101bc578063095ea7b3146101da57806318160ddd146101fd57806323b872dd1461020f5780632f13b60c14610222578063313ce5671461022a578063395093511461025b578063443cb7f81461026e57806347bfac62146102815780635cbadbe4146102b5578063649a00d6146102fc57806366247a721461030f57806370a08231146103225780637695caa21461033557806379e6ea161461033f57806380a7c9ac1461035f57806388611f351461037257806395d89b411461037b5780639b1e03f0146103835780639c9fdc3b1461038b578063a090ee5014610394578063a457c2d71461039c578063a9059cbb146103af578063aa1fb970146103c2578063afb442e9146103d5578063b2427a6c146103e8578063b90d3d0c1461040f578063bdaba53614610436578063c45a015514610457578063c4f59f9b1461047e578063c6d6916c14610493578063c836545a146104a6578063d86e0302146104cd578063dcda874d146104d6578063dd62ed3e146104f6578063e184c9be14610509578063f1653f6e14610530575b600080fd5b6101c4610557565b6040516101d19190612358565b60405180910390f35b6101ed6101e83660046123a0565b6105e9565b60405190151581526020016101d1565b6002545b6040519081526020016101d1565b6101ed61021d3660046123cc565b610601565b6101ed610627565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101d1565b6101ed6102693660046123a0565b61064e565b61020161027c36600461240d565b61068d565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d19190612426565b6102e76102c336600461243a565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101d1565b61020161030a366004612473565b6106ae565b61020161031d366004612473565b61070d565b610201610330366004612473565b610730565b61033d61074b565b005b61035261034d366004612473565b6107ff565b6040516101d191906124cb565b61020161036d366004612473565b610814565b610201600b5481565b6101c46109ac565b6102016109bb565b61020160085481565b61033d610a6e565b6101ed6103aa3660046123a0565b610c77565b6101ed6103bd3660046123a0565b610d19565b6102016103d036600461243a565b610d27565b61033d6103e3366004612473565b610dd0565b6102e76103f6366004612473565b6005602052600090815260409020805460019091015482565b6102e761041d366004612473565b600c602052600090815260409020805460019091015482565b610449610444366004612473565b610eb0565b6040516101d19291906124de565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b610486610ee2565b6040516101d191906124f7565b61033d6104a1366004612473565b610f7e565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b61020160075481565b6102016104e4366004612473565b600a6020526000908152604090205481565b61020161050436600461243a565b611036565b6102017f000000000000000000000000000000000000000000000000000000000000000081565b6102017f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461056690612544565b80601f016020809104026020016040519081016040528092919081815260200182805461059290612544565b80156105df5780601f106105b4576101008083540402835291602001916105df565b820191906000526020600020905b8154815290600101906020018083116105c257829003601f168201915b5050505050905090565b6000336105f7818585611061565b5060019392505050565b60003361060f858285611185565b61061a8585856111ff565b60019150505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000042101590565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906105f7908290869061068890879061258f565b611061565b6009818154811061069d57600080fd5b600091825260209091200154905081565b6001600160a01b0381166000908152600c6020526040812054806106d55750600092915050565b6001600160a01b0383166000908152600c6020526040902060010154610703826106fe86610730565b6113c6565b610620919061258f565b600061071882610f7e565b61072182610dd0565b61072a826113e5565b92915050565b6001600160a01b031660009081526020819052604090205490565b6000610755610ee2565b90506107fc817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107a79190612426565b60206040518083038186803b1580156107bf57600080fd5b505afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f791906125a7565b611515565b50565b606061080a82610f7e565b61072a82836116ab565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108639190612426565b60206040518083038186803b15801561087b57600080fd5b505afa15801561088f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b391906125a7565b90506108bd610627565b6108df576108d3816108ce30610730565b611888565b90506108df308261189e565b60405163b64761f960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b64761f99061092d90309085906004016125c0565b600060405180830381600087803b15801561094757600080fd5b505af115801561095b573d6000803e3d6000fd5b50505050610968816119e6565b915061099e6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684846119f9565b6109a6611a4f565b50919050565b60606004805461056690612544565b60006109c5610627565b156109d1575060085490565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a2c57600080fd5b505af1158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6491906125a7565b6008819055919050565b6000610a78610ee2565b9050610a82610627565b15610ad757610ad7817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107a79190612426565b60008151905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7091906125d9565b905060005b82811015610c22576000848281518110610b9157610b916125f6565b6020908102919091018101516001600160a01b0381166000908152600a9092526040909120549091508015610bf757610bf78482888681518110610bd757610bd76125f6565b60200260200101516001600160a01b03166119f99092919063ffffffff16565b506001600160a01b03166000908152600a602052604081205580610c1a8161260c565b915050610b75565b50600b5415610c7257600b54610c64906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083906119f9565b610c6c611a4f565b6000600b555b505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610d015760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610d0e8286868403611061565b506001949350505050565b6000336105f78185856111ff565b600080610d32611af0565b9050610d3d81611be6565b9150610d498383611bf9565b6040516304a8c77360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906312a31dcc90610d9790879086906004016125c0565b600060405180830381600087803b158015610db157600080fd5b505af1158015610dc5573d6000803e3d6000fd5b505050505092915050565b6001600160a01b0381166000908152600c602052604081205490610df26109bb565b905080821415610e0157505050565b81610e26576001600160a01b039092166000908152600c602052604090209190915550565b6000610e3184610730565b90506000610e5c610e428486612627565b610e4c8686612646565b610e569085612627565b90611cd3565b6001600160a01b0386166000908152600c6020526040812060010180549293508392909190610e8c90849061258f565b9091555050506001600160a01b039093166000908152600c60205260409020555050565b60006060610ebd83610f7e565b610ec683610dd0565b610ed083846116ab565b9050610edb836113e5565b9150915091565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610f3d57600080fd5b505afa158015610f51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f7991908101906126c6565b905090565b6000610f89826106ae565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610fd99190612426565b60206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102991906125a7565b9050610c72838383611d02565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cf8565b6001600160a01b0382166111245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cf8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111918484611036565b905060001981146111f957818110156111ec5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610cf8565b6111f98484848403611061565b50505050565b6001600160a01b0383166112635760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cf8565b6001600160a01b0382166112c55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cf8565b6112d0838383611d23565b6001600160a01b038316600090815260208190526040902054818110156113485760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cf8565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061137f90849061258f565b92505081905550826001600160a01b0316846001600160a01b0316600080516020612855833981519152846040516113b991815260200190565b60405180910390a36111f9565b6000826113db670de0b6b3a764000084612627565b610620919061276f565b6001600160a01b038082166000908152600c60209081526040808320600101805490849055815163dd86fea160e01b815291519394909385937f00000000000000000000000000000000000000000000000000000000000000009092169263dd86fea1926004808301939192829003018186803b15801561146557600080fd5b505afa158015611479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149d91906125a7565b905060006114ab8383611dfe565b905080600b60008282546114bf919061258f565b909155506114cf90508184612646565b93506115056001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866119f9565b61150d611a4f565b505050919050565b61151d611e1c565b61152682611ebe565b6000611530610627565b905060005b83518110156111f9576000848281518110611552576115526125f6565b602002602001015190506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161158a9190612426565b60206040518083038186803b1580156115a257600080fd5b505afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da91906125a7565b6001600160a01b038316600090815260056020526040812060010154919250906116049083612646565b9050841561163f576001600160a01b0383166000908152600a60205260408120805483929061163490849061258f565b9091555061167d9050565b851561167d5761164f8187611cd3565b6001600160a01b0384166000908152600560205260408120805490919061167790849061258f565b90915550505b506001600160a01b039091166000908152600560205260409020600101556116a48161260c565b9050611535565b606060006116b7610ee2565b905080516001600160401b038111156116d2576116d261265d565b6040519080825280602002602001820160405280156116fb578160200160208202803683370190505b50915060005b815181101561188057600082828151811061171e5761171e6125f6565b6020026020010151905060066000876001600160a01b03166001600160a01b031681526020019081526020016000206000826001600160a01b03166001600160a01b0316815260200190815260200160002060010154848381518110611786576117866125f6565b6020908102919091018101919091526001600160a01b03808816600090815260068352604080822092851682529190925281206001015583518490839081106117d1576117d16125f6565b602002602001015160056000836001600160a01b03166001600160a01b0316815260200190815260200160002060010160008282546118109190612646565b92505081905550838281518110611829576118296125f6565b602002602001015160001461186f5761186f8585848151811061184e5761184e6125f6565b6020026020010151836001600160a01b03166119f99092919063ffffffff16565b506118798161260c565b9050611701565b505092915050565b60008183106118975781610620565b5090919050565b6001600160a01b0382166118fe5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cf8565b61190a82600083611d23565b6001600160a01b0382166000908152602081905260409020548181101561197e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cf8565b6001600160a01b03831660009081526020819052604081208383039055600280548492906119ad908490612646565b90915550506040518281526000906001600160a01b038516906000805160206128558339815191529060200160405180910390a3505050565b600061072a6119f36109bb565b836113c6565b610c728363a9059cbb60e01b8484604051602401611a189291906125c0565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f61565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611a9b903090600401612426565b60206040518083038186803b158015611ab357600080fd5b505afa158015611ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aeb91906125a7565b600755565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611b3f9190612426565b60206040518083038186803b158015611b5757600080fd5b505afa158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f91906125a7565b905060075481611b9f9190612646565b915060008211611be05760405162461bcd60e51b815260206004820152600c60248201526b524543454956455f5a45524f60a01b6044820152606401610cf8565b60075590565b600061072a611bf36109bb565b83612033565b6001600160a01b038216611c4f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610cf8565b611c5b60008383611d23565b8060026000828254611c6d919061258f565b90915550506001600160a01b03821660009081526020819052604081208054839290611c9a90849061258f565b90915550506040518181526001600160a01b038316906000906000805160206128558339815191529060200160405180910390a35b5050565b600080611ce8670de0b6b3a764000085612627565b9050828181611cf957611cf9612759565b04949350505050565b6000611d0c610ee2565b9050611d188183611515565b6111f9818585612048565b6000611d2d610ee2565b9050611d7f817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107a79190612426565b6001600160a01b03841615801590611da057506001600160a01b0384163014155b15611dc157611dae84610dd0565b611dc18185611dbc876106ae565b612048565b6001600160a01b03831615801590611de257506001600160a01b0383163014155b156111f957611df083610dd0565b6111f98184611dbc866106ae565b600080611e0b8385612627565b9050670de0b6b3a764000081611cf9565b6040516359436f3b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b286de7690611e68903090600401612426565b600060405180830381600087803b158015611e8257600080fd5b505af1158015611e96573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107fc9190810190612791565b60005b8151811015611ccf5760056000838381518110611ee057611ee06125f6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000015460001415611f5157600160056000848481518110611f2c57611f2c6125f6565b6020908102919091018101516001600160a01b03168252810191909152604001600020555b611f5a8161260c565b9050611ec1565b6000611fb6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121ab9092919063ffffffff16565b805190915015610c725780806020019051810190611fd49190612816565b610c725760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610cf8565b6000670de0b6b3a76400006113db8484612627565b60005b83518110156111f9576000848281518110612068576120686125f6565b6020908102919091018101516001600160a01b038087166000908152600684526040808220928416825291845281812054600590945220549092508114156120b157505061219b565b806120ed57506001600160a01b03908116600081815260056020908152604080832054948816835260068252808320938352929052205561219b565b6001600160a01b038216600090815260056020526040812054612111908390612646565b9050600061211f8683611dfe565b6001600160a01b03808916600090815260066020908152604080832093891683529290529081206001018054929350839290919061215e90849061258f565b9091555050506001600160a01b03928316600081815260056020908152604080832054968a16835260068252808320938352929052209290925550505b6121a48161260c565b905061204b565b60606121ba84846000856121c2565b949350505050565b6060824710156122235760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610cf8565b6001600160a01b0385163b61227a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cf8565b600080866001600160a01b031685876040516122969190612838565b60006040518083038185875af1925050503d80600081146122d3576040519150601f19603f3d011682016040523d82523d6000602084013e6122d8565b606091505b50915091506122e88282866122f3565b979650505050505050565b60608315612302575081610620565b8251156123125782518084602001fd5b8160405162461bcd60e51b8152600401610cf89190612358565b60005b8381101561234757818101518382015260200161232f565b838111156111f95750506000910152565b602081526000825180602084015261237781604085016020870161232c565b601f01601f19169190910160400192915050565b6001600160a01b03811681146107fc57600080fd5b600080604083850312156123b357600080fd5b82356123be8161238b565b946020939093013593505050565b6000806000606084860312156123e157600080fd5b83356123ec8161238b565b925060208401356123fc8161238b565b929592945050506040919091013590565b60006020828403121561241f57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561244d57600080fd5b82356124588161238b565b915060208301356124688161238b565b809150509250929050565b60006020828403121561248557600080fd5b81356106208161238b565b600081518084526020808501945080840160005b838110156124c0578151875295820195908201906001016124a4565b509495945050505050565b6020815260006106206020830184612490565b8281526040602082015260006121ba6040830184612490565b6020808252825182820181905260009190848201906040850190845b818110156125385783516001600160a01b031683529284019291840191600101612513565b50909695505050505050565b600181811c9082168061255857607f821691505b602082108114156109a657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125a2576125a2612579565b500190565b6000602082840312156125b957600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b6000602082840312156125eb57600080fd5b81516106208161238b565b634e487b7160e01b600052603260045260246000fd5b600060001982141561262057612620612579565b5060010190565b600081600019048311821515161561264157612641612579565b500290565b60008282101561265857612658612579565b500390565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561269b5761269b61265d565b604052919050565b60006001600160401b038211156126bc576126bc61265d565b5060051b60200190565b600060208083850312156126d957600080fd5b82516001600160401b038111156126ef57600080fd5b8301601f8101851361270057600080fd5b805161271361270e826126a3565b612673565b81815260059190911b8201830190838101908783111561273257600080fd5b928401925b828410156122e857835161274a8161238b565b82529284019290840190612737565b634e487b7160e01b600052601260045260246000fd5b60008261278c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083850312156127a457600080fd5b82516001600160401b038111156127ba57600080fd5b8301601f810185136127cb57600080fd5b80516127d961270e826126a3565b81815260059190911b820183019083810190878311156127f857600080fd5b928401925b828410156122e8578351825292840192908401906127fd565b60006020828403121561282857600080fd5b8151801515811461062057600080fd5b6000825161284a81846020870161232c565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122020733e7fa8076a10d5092377579c87dbe711d49a16fe7b61f6f73a5aa96d16fb64736f6c63430008090033";
700
751
 
701
752
  type PendleYieldTokenConstructorParams =
702
753
  | [signer?: Signer]
@@ -0,0 +1,39 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+
5
+ import { Contract, Signer, utils } from "ethers";
6
+ import { Provider } from "@ethersproject/providers";
7
+ import type {
8
+ PermissionsV2Upg,
9
+ PermissionsV2UpgInterface,
10
+ } from "../PermissionsV2Upg";
11
+
12
+ const _abi = [
13
+ {
14
+ inputs: [],
15
+ name: "governanceManager",
16
+ outputs: [
17
+ {
18
+ internalType: "address",
19
+ name: "",
20
+ type: "address",
21
+ },
22
+ ],
23
+ stateMutability: "view",
24
+ type: "function",
25
+ },
26
+ ];
27
+
28
+ export class PermissionsV2Upg__factory {
29
+ static readonly abi = _abi;
30
+ static createInterface(): PermissionsV2UpgInterface {
31
+ return new utils.Interface(_abi) as PermissionsV2UpgInterface;
32
+ }
33
+ static connect(
34
+ address: string,
35
+ signerOrProvider: Signer | Provider
36
+ ): PermissionsV2Upg {
37
+ return new Contract(address, _abi, signerOrProvider) as PermissionsV2Upg;
38
+ }
39
+ }