@stargatefinance/stg-evm-sdk-v2 0.0.11

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 (150) hide show
  1. package/artifacts/src/StargateBase.sol/StargateBase.json +1348 -0
  2. package/artifacts/src/StargateOFT.sol/StargateOFT.json +1374 -0
  3. package/artifacts/src/StargatePool.sol/StargatePool.json +1722 -0
  4. package/artifacts/src/StargatePoolNative.sol/StargatePoolNative.json +1717 -0
  5. package/artifacts/src/feelibs/FeeLibBase.sol/FeeLibBase.json +313 -0
  6. package/artifacts/src/feelibs/FeeLibV1.sol/FeeConfigLib.json +10 -0
  7. package/artifacts/src/feelibs/FeeLibV1.sol/FeeLibV1.json +561 -0
  8. package/artifacts/src/intent/IntentBase.sol/IntentBase.json +231 -0
  9. package/artifacts/src/intent/IntentOFT.sol/IntentOFT.json +247 -0
  10. package/artifacts/src/intent/IntentPool.sol/IntentPool.json +350 -0
  11. package/artifacts/src/intent/IntentPoolNative.sol/IWETH.json +24 -0
  12. package/artifacts/src/intent/IntentPoolNative.sol/IntentPoolNative.json +367 -0
  13. package/artifacts/src/interfaces/IBridgedUSDCMinter.sol/IBridgedUSDCMinter.json +48 -0
  14. package/artifacts/src/interfaces/ICreditMessaging.sol/ICreditMessaging.json +113 -0
  15. package/artifacts/src/interfaces/ICreditMessagingHandler.sol/ICreditMessagingHandler.json +71 -0
  16. package/artifacts/src/interfaces/IERC20Minter.sol/IERC20Minter.json +47 -0
  17. package/artifacts/src/interfaces/IStargate.sol/IStargate.json +661 -0
  18. package/artifacts/src/interfaces/IStargateFeeLib.sol/IStargateFeeLib.json +230 -0
  19. package/artifacts/src/interfaces/IStargatePool.sol/IStargatePool.json +939 -0
  20. package/artifacts/src/interfaces/ITokenMessaging.sol/ITokenMessaging.json +494 -0
  21. package/artifacts/src/interfaces/ITokenMessagingHandler.sol/ITokenMessagingHandler.json +78 -0
  22. package/artifacts/src/interfaces/permit2/IAllowanceTransfer.sol/IAllowanceTransfer.json +495 -0
  23. package/artifacts/src/interfaces/permit2/IEIP712.sol/IEIP712.json +24 -0
  24. package/artifacts/src/interfaces/permit2/IPermit2.sol/IPermit2.json +874 -0
  25. package/artifacts/src/interfaces/permit2/ISignatureTransfer.sol/ISignatureTransfer.json +403 -0
  26. package/artifacts/src/libs/AddressCast.sol/AddressCast.json +10 -0
  27. package/artifacts/src/libs/Bus.sol/BusLib.json +92 -0
  28. package/artifacts/src/libs/CreditMsgCodec.sol/CreditMsgCodec.json +16 -0
  29. package/artifacts/src/libs/MessagingHelper.sol/MessagingHelper.json +10 -0
  30. package/artifacts/src/libs/PassengerCodec.sol/PassengerCodec.json +16 -0
  31. package/artifacts/src/libs/Path.sol/PathLib.json +26 -0
  32. package/artifacts/src/libs/RideBusOptionsLibV1.sol/RideBusOptionsLibV1.json +16 -0
  33. package/artifacts/src/libs/TokenMsgCodec.sol/TokenMsgCodec.json +16 -0
  34. package/artifacts/src/libs/Transfer.sol/Transfer.json +21 -0
  35. package/artifacts/src/libs/Transfer.sol/TransferLib.json +21 -0
  36. package/artifacts/src/messaging/CreditMessaging.sol/CreditMessaging.json +1033 -0
  37. package/artifacts/src/messaging/CreditMessagingOptions.sol/CreditMessagingOptions.json +229 -0
  38. package/artifacts/src/messaging/MessagingBase.sol/MessagingBase.json +701 -0
  39. package/artifacts/src/messaging/TokenMessaging.sol/TokenMessaging.json +1692 -0
  40. package/artifacts/src/messaging/TokenMessagingOptions.sol/TokenMessagingOptions.json +239 -0
  41. package/artifacts/src/mocks/ERC20Token.sol/ERC20Token.json +335 -0
  42. package/artifacts/src/mocks/FeeLibMock.sol/FeeLibMock.json +230 -0
  43. package/artifacts/src/mocks/OFTToken.sol/OFTToken.json +380 -0
  44. package/artifacts/src/mocks/PoolToken.sol/PoolToken.json +406 -0
  45. package/artifacts/src/mocks/USDC.sol/USDC.json +381 -0
  46. package/artifacts/src/mocks/WETH.sol/WETH.json +310 -0
  47. package/artifacts/src/peripheral/Planner.sol/Planner.json +212 -0
  48. package/artifacts/src/peripheral/RebateCampaign.sol/RebateCampaign.json +237 -0
  49. package/artifacts/src/peripheral/Treasurer.sol/Treasurer.json +194 -0
  50. package/artifacts/src/usdc/StargateOFTUSDC.sol/StargateOFTUSDC.json +1374 -0
  51. package/artifacts/src/usdc/StargatePoolUSDC.sol/StargatePoolUSDC.json +1748 -0
  52. package/artifacts/src/utils/LPToken.sol/LPToken.json +496 -0
  53. package/deployments/arbsep-testnet/FeeLibV1ETH.json +466 -0
  54. package/deployments/arbsep-testnet/MessagingETH.json +1356 -0
  55. package/deployments/arbsep-testnet/StargatePoolNative.json +1933 -0
  56. package/deployments/avalanche-testnet/FeeLibV1USDT.json +466 -0
  57. package/deployments/avalanche-testnet/MessagingUSDT.json +1356 -0
  58. package/deployments/avalanche-testnet/StargatePoolUSDT.json +1939 -0
  59. package/deployments/bsc-sandbox-local/CreditMessaging.json +1393 -0
  60. package/deployments/bsc-sandbox-local/FeeLibV1BUSD.json +828 -0
  61. package/deployments/bsc-sandbox-local/FeeLibV1ETH.json +828 -0
  62. package/deployments/bsc-sandbox-local/FeeLibV1LUSD.json +828 -0
  63. package/deployments/bsc-sandbox-local/FeeLibV1USDC.json +828 -0
  64. package/deployments/bsc-sandbox-local/FeeLibV1USDT.json +828 -0
  65. package/deployments/bsc-sandbox-local/IntentOFTBUSD.json +337 -0
  66. package/deployments/bsc-sandbox-local/IntentOFTETH.json +337 -0
  67. package/deployments/bsc-sandbox-local/IntentOFTLUSD.json +337 -0
  68. package/deployments/bsc-sandbox-local/IntentOFTUSDC.json +337 -0
  69. package/deployments/bsc-sandbox-local/IntentOFTUSDT.json +337 -0
  70. package/deployments/bsc-sandbox-local/OFTTokenBUSD.json +571 -0
  71. package/deployments/bsc-sandbox-local/OFTTokenETH.json +571 -0
  72. package/deployments/bsc-sandbox-local/OFTTokenLUSD.json +571 -0
  73. package/deployments/bsc-sandbox-local/OFTTokenUSDC.json +558 -0
  74. package/deployments/bsc-sandbox-local/OFTTokenUSDT.json +571 -0
  75. package/deployments/bsc-sandbox-local/Permit2Mock.json +923 -0
  76. package/deployments/bsc-sandbox-local/StargateOFTBUSD.json +1803 -0
  77. package/deployments/bsc-sandbox-local/StargateOFTETH.json +1803 -0
  78. package/deployments/bsc-sandbox-local/StargateOFTLUSD.json +1803 -0
  79. package/deployments/bsc-sandbox-local/StargateOFTUSDC.json +1792 -0
  80. package/deployments/bsc-sandbox-local/StargateOFTUSDT.json +1803 -0
  81. package/deployments/bsc-sandbox-local/TokenMessaging.json +2166 -0
  82. package/deployments/bsc-sandbox-local/WETH.json +453 -0
  83. package/deployments/bsc-testnet/FeeLibV1ETH.json +466 -0
  84. package/deployments/bsc-testnet/FeeLibV1USDT.json +466 -0
  85. package/deployments/bsc-testnet/MessagingETH.json +1356 -0
  86. package/deployments/bsc-testnet/MessagingUSDT.json +1356 -0
  87. package/deployments/bsc-testnet/OFTTokenETH.json +557 -0
  88. package/deployments/bsc-testnet/StargateOFTETH.json +1601 -0
  89. package/deployments/bsc-testnet/StargatePoolUSDT.json +1939 -0
  90. package/deployments/ethereum-sandbox-local/CreditMessaging.json +1393 -0
  91. package/deployments/ethereum-sandbox-local/FeeLibV1BUSD.json +828 -0
  92. package/deployments/ethereum-sandbox-local/FeeLibV1ETH.json +828 -0
  93. package/deployments/ethereum-sandbox-local/FeeLibV1LUSD.json +828 -0
  94. package/deployments/ethereum-sandbox-local/FeeLibV1USDC.json +828 -0
  95. package/deployments/ethereum-sandbox-local/FeeLibV1USDT.json +828 -0
  96. package/deployments/ethereum-sandbox-local/IntentOFTBUSD.json +337 -0
  97. package/deployments/ethereum-sandbox-local/IntentPoolLUSD.json +440 -0
  98. package/deployments/ethereum-sandbox-local/IntentPoolNative.json +444 -0
  99. package/deployments/ethereum-sandbox-local/IntentPoolUSDC.json +440 -0
  100. package/deployments/ethereum-sandbox-local/IntentPoolUSDT.json +440 -0
  101. package/deployments/ethereum-sandbox-local/OFTTokenBUSD.json +571 -0
  102. package/deployments/ethereum-sandbox-local/Permit2Mock.json +923 -0
  103. package/deployments/ethereum-sandbox-local/PoolTokenLUSD.json +597 -0
  104. package/deployments/ethereum-sandbox-local/PoolTokenUSDC.json +597 -0
  105. package/deployments/ethereum-sandbox-local/PoolTokenUSDT.json +597 -0
  106. package/deployments/ethereum-sandbox-local/StargateOFTBUSD.json +1803 -0
  107. package/deployments/ethereum-sandbox-local/StargatePoolLUSD.json +2239 -0
  108. package/deployments/ethereum-sandbox-local/StargatePoolNative.json +2233 -0
  109. package/deployments/ethereum-sandbox-local/StargatePoolUSDC.json +2257 -0
  110. package/deployments/ethereum-sandbox-local/StargatePoolUSDT.json +2239 -0
  111. package/deployments/ethereum-sandbox-local/TokenMessaging.json +2166 -0
  112. package/deployments/ethereum-sandbox-local/WETH.json +453 -0
  113. package/deployments/polygon-sandbox-local/CreditMessaging.json +1393 -0
  114. package/deployments/polygon-sandbox-local/FeeLibV1BUSD.json +828 -0
  115. package/deployments/polygon-sandbox-local/FeeLibV1ETH.json +828 -0
  116. package/deployments/polygon-sandbox-local/FeeLibV1LUSD.json +828 -0
  117. package/deployments/polygon-sandbox-local/FeeLibV1USDC.json +828 -0
  118. package/deployments/polygon-sandbox-local/FeeLibV1USDT.json +828 -0
  119. package/deployments/polygon-sandbox-local/IntentOFTBUSD.json +337 -0
  120. package/deployments/polygon-sandbox-local/IntentOFTETH.json +337 -0
  121. package/deployments/polygon-sandbox-local/IntentOFTLUSD.json +337 -0
  122. package/deployments/polygon-sandbox-local/IntentOFTUSDC.json +337 -0
  123. package/deployments/polygon-sandbox-local/IntentPoolUSDT.json +440 -0
  124. package/deployments/polygon-sandbox-local/OFTTokenBUSD.json +571 -0
  125. package/deployments/polygon-sandbox-local/OFTTokenETH.json +571 -0
  126. package/deployments/polygon-sandbox-local/OFTTokenLUSD.json +571 -0
  127. package/deployments/polygon-sandbox-local/OFTTokenUSDC.json +558 -0
  128. package/deployments/polygon-sandbox-local/Permit2Mock.json +923 -0
  129. package/deployments/polygon-sandbox-local/PoolTokenUSDT.json +597 -0
  130. package/deployments/polygon-sandbox-local/StargateOFTBUSD.json +1803 -0
  131. package/deployments/polygon-sandbox-local/StargateOFTETH.json +1803 -0
  132. package/deployments/polygon-sandbox-local/StargateOFTLUSD.json +1803 -0
  133. package/deployments/polygon-sandbox-local/StargateOFTUSDC.json +1792 -0
  134. package/deployments/polygon-sandbox-local/StargatePoolUSDT.json +2239 -0
  135. package/deployments/polygon-sandbox-local/TokenMessaging.json +2166 -0
  136. package/deployments/polygon-sandbox-local/WETH.json +453 -0
  137. package/deployments/polygon-testnet/FeeLibV1USDT.json +481 -0
  138. package/deployments/polygon-testnet/MessagingUSDT.json +1371 -0
  139. package/deployments/polygon-testnet/OFTTokenUSDT.json +572 -0
  140. package/deployments/polygon-testnet/StargateOFTUSDT.json +1616 -0
  141. package/deployments/sepolia-testnet/FeeLibV1ETH.json +466 -0
  142. package/deployments/sepolia-testnet/MessagingETH.json +1356 -0
  143. package/deployments/sepolia-testnet/StargatePoolNative.json +1933 -0
  144. package/dist/index.cjs +24634 -0
  145. package/dist/index.cjs.map +1 -0
  146. package/dist/index.d.mts +31486 -0
  147. package/dist/index.d.ts +31486 -0
  148. package/dist/index.mjs +24558 -0
  149. package/dist/index.mjs.map +1 -0
  150. package/package.json +42 -0
@@ -0,0 +1,1748 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "StargatePoolUSDC",
4
+ "sourceName": "src/usdc/StargatePoolUSDC.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "_lpTokenName",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "_lpTokenSymbol",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_token",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "uint8",
25
+ "name": "_tokenDecimals",
26
+ "type": "uint8"
27
+ },
28
+ {
29
+ "internalType": "uint8",
30
+ "name": "_sharedDecimals",
31
+ "type": "uint8"
32
+ },
33
+ {
34
+ "internalType": "address",
35
+ "name": "_endpoint",
36
+ "type": "address"
37
+ },
38
+ {
39
+ "internalType": "address",
40
+ "name": "_owner",
41
+ "type": "address"
42
+ }
43
+ ],
44
+ "stateMutability": "nonpayable",
45
+ "type": "constructor"
46
+ },
47
+ {
48
+ "inputs": [],
49
+ "name": "InvalidLocalDecimals",
50
+ "type": "error"
51
+ },
52
+ {
53
+ "inputs": [],
54
+ "name": "Path_AlreadyHasCredit",
55
+ "type": "error"
56
+ },
57
+ {
58
+ "inputs": [],
59
+ "name": "Path_CreditTooMuch",
60
+ "type": "error"
61
+ },
62
+ {
63
+ "inputs": [],
64
+ "name": "Path_InsufficientCredit",
65
+ "type": "error"
66
+ },
67
+ {
68
+ "inputs": [
69
+ {
70
+ "internalType": "uint256",
71
+ "name": "amountLD",
72
+ "type": "uint256"
73
+ },
74
+ {
75
+ "internalType": "uint256",
76
+ "name": "minAmountLD",
77
+ "type": "uint256"
78
+ }
79
+ ],
80
+ "name": "SlippageExceeded",
81
+ "type": "error"
82
+ },
83
+ {
84
+ "inputs": [],
85
+ "name": "Stargate_InvalidAmount",
86
+ "type": "error"
87
+ },
88
+ {
89
+ "inputs": [],
90
+ "name": "Stargate_InvalidPath",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [],
95
+ "name": "Stargate_InvalidTokenDecimals",
96
+ "type": "error"
97
+ },
98
+ {
99
+ "inputs": [],
100
+ "name": "Stargate_LzTokenUnavailable",
101
+ "type": "error"
102
+ },
103
+ {
104
+ "inputs": [],
105
+ "name": "Stargate_OnlyTaxi",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "Stargate_OutflowFailed",
111
+ "type": "error"
112
+ },
113
+ {
114
+ "inputs": [],
115
+ "name": "Stargate_Paused",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [],
120
+ "name": "Stargate_ReentrantCall",
121
+ "type": "error"
122
+ },
123
+ {
124
+ "inputs": [],
125
+ "name": "Stargate_SlippageTooHigh",
126
+ "type": "error"
127
+ },
128
+ {
129
+ "inputs": [],
130
+ "name": "Stargate_Unauthorized",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "Stargate_UnreceivedTokenNotFound",
136
+ "type": "error"
137
+ },
138
+ {
139
+ "inputs": [],
140
+ "name": "Transfer_TransferFailed",
141
+ "type": "error"
142
+ },
143
+ {
144
+ "anonymous": false,
145
+ "inputs": [
146
+ {
147
+ "indexed": false,
148
+ "internalType": "uint64",
149
+ "name": "amountSD",
150
+ "type": "uint64"
151
+ }
152
+ ],
153
+ "name": "CreditBurnt",
154
+ "type": "event"
155
+ },
156
+ {
157
+ "anonymous": false,
158
+ "inputs": [
159
+ {
160
+ "indexed": false,
161
+ "internalType": "uint32",
162
+ "name": "srcEid",
163
+ "type": "uint32"
164
+ },
165
+ {
166
+ "components": [
167
+ {
168
+ "internalType": "uint32",
169
+ "name": "srcEid",
170
+ "type": "uint32"
171
+ },
172
+ {
173
+ "internalType": "uint64",
174
+ "name": "amount",
175
+ "type": "uint64"
176
+ }
177
+ ],
178
+ "indexed": false,
179
+ "internalType": "struct Credit[]",
180
+ "name": "credits",
181
+ "type": "tuple[]"
182
+ }
183
+ ],
184
+ "name": "CreditsReceived",
185
+ "type": "event"
186
+ },
187
+ {
188
+ "anonymous": false,
189
+ "inputs": [
190
+ {
191
+ "indexed": false,
192
+ "internalType": "uint32",
193
+ "name": "dstEid",
194
+ "type": "uint32"
195
+ },
196
+ {
197
+ "components": [
198
+ {
199
+ "internalType": "uint32",
200
+ "name": "srcEid",
201
+ "type": "uint32"
202
+ },
203
+ {
204
+ "internalType": "uint64",
205
+ "name": "amount",
206
+ "type": "uint64"
207
+ }
208
+ ],
209
+ "indexed": false,
210
+ "internalType": "struct Credit[]",
211
+ "name": "credits",
212
+ "type": "tuple[]"
213
+ }
214
+ ],
215
+ "name": "CreditsSent",
216
+ "type": "event"
217
+ },
218
+ {
219
+ "anonymous": false,
220
+ "inputs": [
221
+ {
222
+ "indexed": true,
223
+ "internalType": "address",
224
+ "name": "payer",
225
+ "type": "address"
226
+ },
227
+ {
228
+ "indexed": true,
229
+ "internalType": "address",
230
+ "name": "receiver",
231
+ "type": "address"
232
+ },
233
+ {
234
+ "indexed": false,
235
+ "internalType": "uint256",
236
+ "name": "amountLD",
237
+ "type": "uint256"
238
+ }
239
+ ],
240
+ "name": "Deposited",
241
+ "type": "event"
242
+ },
243
+ {
244
+ "anonymous": false,
245
+ "inputs": [
246
+ {
247
+ "indexed": false,
248
+ "internalType": "uint32",
249
+ "name": "dstEid",
250
+ "type": "uint32"
251
+ },
252
+ {
253
+ "indexed": false,
254
+ "internalType": "bool",
255
+ "name": "oft",
256
+ "type": "bool"
257
+ }
258
+ ],
259
+ "name": "OFTPathSet",
260
+ "type": "event"
261
+ },
262
+ {
263
+ "anonymous": false,
264
+ "inputs": [
265
+ {
266
+ "indexed": true,
267
+ "internalType": "bytes32",
268
+ "name": "guid",
269
+ "type": "bytes32"
270
+ },
271
+ {
272
+ "indexed": false,
273
+ "internalType": "uint32",
274
+ "name": "srcEid",
275
+ "type": "uint32"
276
+ },
277
+ {
278
+ "indexed": true,
279
+ "internalType": "address",
280
+ "name": "toAddress",
281
+ "type": "address"
282
+ },
283
+ {
284
+ "indexed": false,
285
+ "internalType": "uint256",
286
+ "name": "amountReceivedLD",
287
+ "type": "uint256"
288
+ }
289
+ ],
290
+ "name": "OFTReceived",
291
+ "type": "event"
292
+ },
293
+ {
294
+ "anonymous": false,
295
+ "inputs": [
296
+ {
297
+ "indexed": true,
298
+ "internalType": "bytes32",
299
+ "name": "guid",
300
+ "type": "bytes32"
301
+ },
302
+ {
303
+ "indexed": false,
304
+ "internalType": "uint32",
305
+ "name": "dstEid",
306
+ "type": "uint32"
307
+ },
308
+ {
309
+ "indexed": true,
310
+ "internalType": "address",
311
+ "name": "fromAddress",
312
+ "type": "address"
313
+ },
314
+ {
315
+ "indexed": false,
316
+ "internalType": "uint256",
317
+ "name": "amountSentLD",
318
+ "type": "uint256"
319
+ },
320
+ {
321
+ "indexed": false,
322
+ "internalType": "uint256",
323
+ "name": "amountReceivedLD",
324
+ "type": "uint256"
325
+ }
326
+ ],
327
+ "name": "OFTSent",
328
+ "type": "event"
329
+ },
330
+ {
331
+ "anonymous": false,
332
+ "inputs": [
333
+ {
334
+ "indexed": true,
335
+ "internalType": "address",
336
+ "name": "previousOwner",
337
+ "type": "address"
338
+ },
339
+ {
340
+ "indexed": true,
341
+ "internalType": "address",
342
+ "name": "newOwner",
343
+ "type": "address"
344
+ }
345
+ ],
346
+ "name": "OwnershipTransferred",
347
+ "type": "event"
348
+ },
349
+ {
350
+ "anonymous": false,
351
+ "inputs": [
352
+ {
353
+ "indexed": true,
354
+ "internalType": "address",
355
+ "name": "payer",
356
+ "type": "address"
357
+ },
358
+ {
359
+ "indexed": true,
360
+ "internalType": "address",
361
+ "name": "receiver",
362
+ "type": "address"
363
+ },
364
+ {
365
+ "indexed": false,
366
+ "internalType": "uint256",
367
+ "name": "amountLD",
368
+ "type": "uint256"
369
+ }
370
+ ],
371
+ "name": "Redeemed",
372
+ "type": "event"
373
+ },
374
+ {
375
+ "anonymous": false,
376
+ "inputs": [
377
+ {
378
+ "indexed": false,
379
+ "internalType": "uint64",
380
+ "name": "amountSD",
381
+ "type": "uint64"
382
+ }
383
+ ],
384
+ "name": "TreasuryFeeAdded",
385
+ "type": "event"
386
+ },
387
+ {
388
+ "anonymous": false,
389
+ "inputs": [
390
+ {
391
+ "indexed": false,
392
+ "internalType": "address",
393
+ "name": "to",
394
+ "type": "address"
395
+ },
396
+ {
397
+ "indexed": false,
398
+ "internalType": "uint64",
399
+ "name": "amountSD",
400
+ "type": "uint64"
401
+ }
402
+ ],
403
+ "name": "TreasuryFeeWithdrawn",
404
+ "type": "event"
405
+ },
406
+ {
407
+ "anonymous": false,
408
+ "inputs": [
409
+ {
410
+ "indexed": false,
411
+ "internalType": "bytes32",
412
+ "name": "guid",
413
+ "type": "bytes32"
414
+ },
415
+ {
416
+ "indexed": false,
417
+ "internalType": "uint8",
418
+ "name": "index",
419
+ "type": "uint8"
420
+ },
421
+ {
422
+ "indexed": false,
423
+ "internalType": "address",
424
+ "name": "receiver",
425
+ "type": "address"
426
+ },
427
+ {
428
+ "indexed": false,
429
+ "internalType": "uint256",
430
+ "name": "amountLD",
431
+ "type": "uint256"
432
+ },
433
+ {
434
+ "indexed": false,
435
+ "internalType": "uint8",
436
+ "name": "composeIdx",
437
+ "type": "uint8"
438
+ },
439
+ {
440
+ "indexed": false,
441
+ "internalType": "bytes",
442
+ "name": "composeMsg",
443
+ "type": "bytes"
444
+ }
445
+ ],
446
+ "name": "UnreceivedTokenCached",
447
+ "type": "event"
448
+ },
449
+ {
450
+ "inputs": [
451
+ {
452
+ "internalType": "uint256",
453
+ "name": "_amountLD",
454
+ "type": "uint256"
455
+ }
456
+ ],
457
+ "name": "addTreasuryFee",
458
+ "outputs": [],
459
+ "stateMutability": "payable",
460
+ "type": "function"
461
+ },
462
+ {
463
+ "inputs": [],
464
+ "name": "approvalRequired",
465
+ "outputs": [
466
+ {
467
+ "internalType": "bool",
468
+ "name": "",
469
+ "type": "bool"
470
+ }
471
+ ],
472
+ "stateMutability": "pure",
473
+ "type": "function"
474
+ },
475
+ {
476
+ "inputs": [
477
+ {
478
+ "internalType": "uint64",
479
+ "name": "_amountSD",
480
+ "type": "uint64"
481
+ }
482
+ ],
483
+ "name": "burnCredit",
484
+ "outputs": [],
485
+ "stateMutability": "nonpayable",
486
+ "type": "function"
487
+ },
488
+ {
489
+ "inputs": [
490
+ {
491
+ "internalType": "address",
492
+ "name": "_receiver",
493
+ "type": "address"
494
+ },
495
+ {
496
+ "internalType": "uint256",
497
+ "name": "_amountLD",
498
+ "type": "uint256"
499
+ }
500
+ ],
501
+ "name": "deposit",
502
+ "outputs": [
503
+ {
504
+ "internalType": "uint256",
505
+ "name": "amountLD",
506
+ "type": "uint256"
507
+ }
508
+ ],
509
+ "stateMutability": "payable",
510
+ "type": "function"
511
+ },
512
+ {
513
+ "inputs": [],
514
+ "name": "getAddressConfig",
515
+ "outputs": [
516
+ {
517
+ "components": [
518
+ {
519
+ "internalType": "address",
520
+ "name": "feeLib",
521
+ "type": "address"
522
+ },
523
+ {
524
+ "internalType": "address",
525
+ "name": "planner",
526
+ "type": "address"
527
+ },
528
+ {
529
+ "internalType": "address",
530
+ "name": "treasurer",
531
+ "type": "address"
532
+ },
533
+ {
534
+ "internalType": "address",
535
+ "name": "tokenMessaging",
536
+ "type": "address"
537
+ },
538
+ {
539
+ "internalType": "address",
540
+ "name": "creditMessaging",
541
+ "type": "address"
542
+ },
543
+ {
544
+ "internalType": "address",
545
+ "name": "lzToken",
546
+ "type": "address"
547
+ }
548
+ ],
549
+ "internalType": "struct AddressConfig",
550
+ "name": "",
551
+ "type": "tuple"
552
+ }
553
+ ],
554
+ "stateMutability": "view",
555
+ "type": "function"
556
+ },
557
+ {
558
+ "inputs": [],
559
+ "name": "lpToken",
560
+ "outputs": [
561
+ {
562
+ "internalType": "address",
563
+ "name": "",
564
+ "type": "address"
565
+ }
566
+ ],
567
+ "stateMutability": "view",
568
+ "type": "function"
569
+ },
570
+ {
571
+ "inputs": [],
572
+ "name": "oftVersion",
573
+ "outputs": [
574
+ {
575
+ "internalType": "bytes4",
576
+ "name": "interfaceId",
577
+ "type": "bytes4"
578
+ },
579
+ {
580
+ "internalType": "uint64",
581
+ "name": "version",
582
+ "type": "uint64"
583
+ }
584
+ ],
585
+ "stateMutability": "pure",
586
+ "type": "function"
587
+ },
588
+ {
589
+ "inputs": [],
590
+ "name": "owner",
591
+ "outputs": [
592
+ {
593
+ "internalType": "address",
594
+ "name": "",
595
+ "type": "address"
596
+ }
597
+ ],
598
+ "stateMutability": "view",
599
+ "type": "function"
600
+ },
601
+ {
602
+ "inputs": [
603
+ {
604
+ "internalType": "uint32",
605
+ "name": "eid",
606
+ "type": "uint32"
607
+ }
608
+ ],
609
+ "name": "paths",
610
+ "outputs": [
611
+ {
612
+ "internalType": "uint16",
613
+ "name": "baseFareMultiplierBps",
614
+ "type": "uint16"
615
+ },
616
+ {
617
+ "internalType": "uint64",
618
+ "name": "credit",
619
+ "type": "uint64"
620
+ }
621
+ ],
622
+ "stateMutability": "view",
623
+ "type": "function"
624
+ },
625
+ {
626
+ "inputs": [
627
+ {
628
+ "components": [
629
+ {
630
+ "internalType": "uint32",
631
+ "name": "dstEid",
632
+ "type": "uint32"
633
+ },
634
+ {
635
+ "internalType": "bytes32",
636
+ "name": "to",
637
+ "type": "bytes32"
638
+ },
639
+ {
640
+ "internalType": "uint256",
641
+ "name": "amountLD",
642
+ "type": "uint256"
643
+ },
644
+ {
645
+ "internalType": "uint256",
646
+ "name": "minAmountLD",
647
+ "type": "uint256"
648
+ },
649
+ {
650
+ "internalType": "bytes",
651
+ "name": "extraOptions",
652
+ "type": "bytes"
653
+ },
654
+ {
655
+ "internalType": "bytes",
656
+ "name": "composeMsg",
657
+ "type": "bytes"
658
+ },
659
+ {
660
+ "internalType": "bytes",
661
+ "name": "oftCmd",
662
+ "type": "bytes"
663
+ }
664
+ ],
665
+ "internalType": "struct SendParam",
666
+ "name": "_sendParam",
667
+ "type": "tuple"
668
+ }
669
+ ],
670
+ "name": "quoteOFT",
671
+ "outputs": [
672
+ {
673
+ "components": [
674
+ {
675
+ "internalType": "uint256",
676
+ "name": "minAmountLD",
677
+ "type": "uint256"
678
+ },
679
+ {
680
+ "internalType": "uint256",
681
+ "name": "maxAmountLD",
682
+ "type": "uint256"
683
+ }
684
+ ],
685
+ "internalType": "struct OFTLimit",
686
+ "name": "limit",
687
+ "type": "tuple"
688
+ },
689
+ {
690
+ "components": [
691
+ {
692
+ "internalType": "int256",
693
+ "name": "feeAmountLD",
694
+ "type": "int256"
695
+ },
696
+ {
697
+ "internalType": "string",
698
+ "name": "description",
699
+ "type": "string"
700
+ }
701
+ ],
702
+ "internalType": "struct OFTFeeDetail[]",
703
+ "name": "oftFeeDetails",
704
+ "type": "tuple[]"
705
+ },
706
+ {
707
+ "components": [
708
+ {
709
+ "internalType": "uint256",
710
+ "name": "amountSentLD",
711
+ "type": "uint256"
712
+ },
713
+ {
714
+ "internalType": "uint256",
715
+ "name": "amountReceivedLD",
716
+ "type": "uint256"
717
+ }
718
+ ],
719
+ "internalType": "struct OFTReceipt",
720
+ "name": "receipt",
721
+ "type": "tuple"
722
+ }
723
+ ],
724
+ "stateMutability": "view",
725
+ "type": "function"
726
+ },
727
+ {
728
+ "inputs": [
729
+ {
730
+ "components": [
731
+ {
732
+ "internalType": "uint32",
733
+ "name": "dstEid",
734
+ "type": "uint32"
735
+ },
736
+ {
737
+ "internalType": "bytes32",
738
+ "name": "to",
739
+ "type": "bytes32"
740
+ },
741
+ {
742
+ "internalType": "uint256",
743
+ "name": "amountLD",
744
+ "type": "uint256"
745
+ },
746
+ {
747
+ "internalType": "uint256",
748
+ "name": "minAmountLD",
749
+ "type": "uint256"
750
+ },
751
+ {
752
+ "internalType": "bytes",
753
+ "name": "extraOptions",
754
+ "type": "bytes"
755
+ },
756
+ {
757
+ "internalType": "bytes",
758
+ "name": "composeMsg",
759
+ "type": "bytes"
760
+ },
761
+ {
762
+ "internalType": "bytes",
763
+ "name": "oftCmd",
764
+ "type": "bytes"
765
+ }
766
+ ],
767
+ "internalType": "struct SendParam",
768
+ "name": "_sendParam",
769
+ "type": "tuple"
770
+ },
771
+ {
772
+ "internalType": "bool",
773
+ "name": "_payInLzToken",
774
+ "type": "bool"
775
+ }
776
+ ],
777
+ "name": "quoteRedeemSend",
778
+ "outputs": [
779
+ {
780
+ "components": [
781
+ {
782
+ "internalType": "uint256",
783
+ "name": "nativeFee",
784
+ "type": "uint256"
785
+ },
786
+ {
787
+ "internalType": "uint256",
788
+ "name": "lzTokenFee",
789
+ "type": "uint256"
790
+ }
791
+ ],
792
+ "internalType": "struct MessagingFee",
793
+ "name": "fee",
794
+ "type": "tuple"
795
+ }
796
+ ],
797
+ "stateMutability": "view",
798
+ "type": "function"
799
+ },
800
+ {
801
+ "inputs": [
802
+ {
803
+ "internalType": "uint32",
804
+ "name": "_dstEid",
805
+ "type": "uint32"
806
+ },
807
+ {
808
+ "internalType": "bytes",
809
+ "name": "_options",
810
+ "type": "bytes"
811
+ },
812
+ {
813
+ "internalType": "uint256",
814
+ "name": "_composeMsgSize",
815
+ "type": "uint256"
816
+ }
817
+ ],
818
+ "name": "quoteRideBusOptions",
819
+ "outputs": [
820
+ {
821
+ "components": [
822
+ {
823
+ "internalType": "uint128",
824
+ "name": "extraFare",
825
+ "type": "uint128"
826
+ },
827
+ {
828
+ "internalType": "uint128",
829
+ "name": "nativeDropAmount",
830
+ "type": "uint128"
831
+ },
832
+ {
833
+ "internalType": "uint128",
834
+ "name": "lzComposeGas",
835
+ "type": "uint128"
836
+ },
837
+ {
838
+ "internalType": "uint128",
839
+ "name": "lzComposeValue",
840
+ "type": "uint128"
841
+ }
842
+ ],
843
+ "internalType": "struct RideBusOptions",
844
+ "name": "rideBusOptions",
845
+ "type": "tuple"
846
+ }
847
+ ],
848
+ "stateMutability": "view",
849
+ "type": "function"
850
+ },
851
+ {
852
+ "inputs": [
853
+ {
854
+ "components": [
855
+ {
856
+ "internalType": "uint32",
857
+ "name": "dstEid",
858
+ "type": "uint32"
859
+ },
860
+ {
861
+ "internalType": "bytes32",
862
+ "name": "to",
863
+ "type": "bytes32"
864
+ },
865
+ {
866
+ "internalType": "uint256",
867
+ "name": "amountLD",
868
+ "type": "uint256"
869
+ },
870
+ {
871
+ "internalType": "uint256",
872
+ "name": "minAmountLD",
873
+ "type": "uint256"
874
+ },
875
+ {
876
+ "internalType": "bytes",
877
+ "name": "extraOptions",
878
+ "type": "bytes"
879
+ },
880
+ {
881
+ "internalType": "bytes",
882
+ "name": "composeMsg",
883
+ "type": "bytes"
884
+ },
885
+ {
886
+ "internalType": "bytes",
887
+ "name": "oftCmd",
888
+ "type": "bytes"
889
+ }
890
+ ],
891
+ "internalType": "struct SendParam",
892
+ "name": "_sendParam",
893
+ "type": "tuple"
894
+ },
895
+ {
896
+ "internalType": "bool",
897
+ "name": "_payInLzToken",
898
+ "type": "bool"
899
+ }
900
+ ],
901
+ "name": "quoteSend",
902
+ "outputs": [
903
+ {
904
+ "components": [
905
+ {
906
+ "internalType": "uint256",
907
+ "name": "nativeFee",
908
+ "type": "uint256"
909
+ },
910
+ {
911
+ "internalType": "uint256",
912
+ "name": "lzTokenFee",
913
+ "type": "uint256"
914
+ }
915
+ ],
916
+ "internalType": "struct MessagingFee",
917
+ "name": "fee",
918
+ "type": "tuple"
919
+ }
920
+ ],
921
+ "stateMutability": "view",
922
+ "type": "function"
923
+ },
924
+ {
925
+ "inputs": [
926
+ {
927
+ "internalType": "uint32",
928
+ "name": "_srcEid",
929
+ "type": "uint32"
930
+ },
931
+ {
932
+ "components": [
933
+ {
934
+ "internalType": "uint32",
935
+ "name": "srcEid",
936
+ "type": "uint32"
937
+ },
938
+ {
939
+ "internalType": "uint64",
940
+ "name": "amount",
941
+ "type": "uint64"
942
+ }
943
+ ],
944
+ "internalType": "struct Credit[]",
945
+ "name": "_credits",
946
+ "type": "tuple[]"
947
+ }
948
+ ],
949
+ "name": "receiveCredits",
950
+ "outputs": [],
951
+ "stateMutability": "nonpayable",
952
+ "type": "function"
953
+ },
954
+ {
955
+ "inputs": [
956
+ {
957
+ "components": [
958
+ {
959
+ "internalType": "uint32",
960
+ "name": "srcEid",
961
+ "type": "uint32"
962
+ },
963
+ {
964
+ "internalType": "bytes32",
965
+ "name": "sender",
966
+ "type": "bytes32"
967
+ },
968
+ {
969
+ "internalType": "uint64",
970
+ "name": "nonce",
971
+ "type": "uint64"
972
+ }
973
+ ],
974
+ "internalType": "struct Origin",
975
+ "name": "_origin",
976
+ "type": "tuple"
977
+ },
978
+ {
979
+ "internalType": "bytes32",
980
+ "name": "_guid",
981
+ "type": "bytes32"
982
+ },
983
+ {
984
+ "internalType": "uint8",
985
+ "name": "_index",
986
+ "type": "uint8"
987
+ },
988
+ {
989
+ "components": [
990
+ {
991
+ "internalType": "address",
992
+ "name": "receiver",
993
+ "type": "address"
994
+ },
995
+ {
996
+ "internalType": "uint64",
997
+ "name": "amountSD",
998
+ "type": "uint64"
999
+ },
1000
+ {
1001
+ "internalType": "bytes",
1002
+ "name": "composeMsg",
1003
+ "type": "bytes"
1004
+ },
1005
+ {
1006
+ "internalType": "uint8",
1007
+ "name": "composeIdx",
1008
+ "type": "uint8"
1009
+ }
1010
+ ],
1011
+ "internalType": "struct TransferPayload",
1012
+ "name": "_payload",
1013
+ "type": "tuple"
1014
+ }
1015
+ ],
1016
+ "name": "receiveToken",
1017
+ "outputs": [],
1018
+ "stateMutability": "nonpayable",
1019
+ "type": "function"
1020
+ },
1021
+ {
1022
+ "inputs": [
1023
+ {
1024
+ "internalType": "uint256",
1025
+ "name": "_amountLD",
1026
+ "type": "uint256"
1027
+ },
1028
+ {
1029
+ "internalType": "address",
1030
+ "name": "_receiver",
1031
+ "type": "address"
1032
+ }
1033
+ ],
1034
+ "name": "redeem",
1035
+ "outputs": [
1036
+ {
1037
+ "internalType": "uint256",
1038
+ "name": "amountLD",
1039
+ "type": "uint256"
1040
+ }
1041
+ ],
1042
+ "stateMutability": "nonpayable",
1043
+ "type": "function"
1044
+ },
1045
+ {
1046
+ "inputs": [
1047
+ {
1048
+ "components": [
1049
+ {
1050
+ "internalType": "uint32",
1051
+ "name": "dstEid",
1052
+ "type": "uint32"
1053
+ },
1054
+ {
1055
+ "internalType": "bytes32",
1056
+ "name": "to",
1057
+ "type": "bytes32"
1058
+ },
1059
+ {
1060
+ "internalType": "uint256",
1061
+ "name": "amountLD",
1062
+ "type": "uint256"
1063
+ },
1064
+ {
1065
+ "internalType": "uint256",
1066
+ "name": "minAmountLD",
1067
+ "type": "uint256"
1068
+ },
1069
+ {
1070
+ "internalType": "bytes",
1071
+ "name": "extraOptions",
1072
+ "type": "bytes"
1073
+ },
1074
+ {
1075
+ "internalType": "bytes",
1076
+ "name": "composeMsg",
1077
+ "type": "bytes"
1078
+ },
1079
+ {
1080
+ "internalType": "bytes",
1081
+ "name": "oftCmd",
1082
+ "type": "bytes"
1083
+ }
1084
+ ],
1085
+ "internalType": "struct SendParam",
1086
+ "name": "_sendParam",
1087
+ "type": "tuple"
1088
+ },
1089
+ {
1090
+ "components": [
1091
+ {
1092
+ "internalType": "uint256",
1093
+ "name": "nativeFee",
1094
+ "type": "uint256"
1095
+ },
1096
+ {
1097
+ "internalType": "uint256",
1098
+ "name": "lzTokenFee",
1099
+ "type": "uint256"
1100
+ }
1101
+ ],
1102
+ "internalType": "struct MessagingFee",
1103
+ "name": "_fee",
1104
+ "type": "tuple"
1105
+ },
1106
+ {
1107
+ "internalType": "address",
1108
+ "name": "_refundAddress",
1109
+ "type": "address"
1110
+ }
1111
+ ],
1112
+ "name": "redeemSend",
1113
+ "outputs": [
1114
+ {
1115
+ "components": [
1116
+ {
1117
+ "internalType": "bytes32",
1118
+ "name": "guid",
1119
+ "type": "bytes32"
1120
+ },
1121
+ {
1122
+ "internalType": "uint64",
1123
+ "name": "nonce",
1124
+ "type": "uint64"
1125
+ },
1126
+ {
1127
+ "components": [
1128
+ {
1129
+ "internalType": "uint256",
1130
+ "name": "nativeFee",
1131
+ "type": "uint256"
1132
+ },
1133
+ {
1134
+ "internalType": "uint256",
1135
+ "name": "lzTokenFee",
1136
+ "type": "uint256"
1137
+ }
1138
+ ],
1139
+ "internalType": "struct MessagingFee",
1140
+ "name": "fee",
1141
+ "type": "tuple"
1142
+ }
1143
+ ],
1144
+ "internalType": "struct MessagingReceipt",
1145
+ "name": "receipt",
1146
+ "type": "tuple"
1147
+ },
1148
+ {
1149
+ "internalType": "uint256",
1150
+ "name": "amountLD",
1151
+ "type": "uint256"
1152
+ }
1153
+ ],
1154
+ "stateMutability": "payable",
1155
+ "type": "function"
1156
+ },
1157
+ {
1158
+ "inputs": [
1159
+ {
1160
+ "internalType": "address",
1161
+ "name": "_owner",
1162
+ "type": "address"
1163
+ }
1164
+ ],
1165
+ "name": "redeemable",
1166
+ "outputs": [
1167
+ {
1168
+ "internalType": "uint256",
1169
+ "name": "amountLD",
1170
+ "type": "uint256"
1171
+ }
1172
+ ],
1173
+ "stateMutability": "view",
1174
+ "type": "function"
1175
+ },
1176
+ {
1177
+ "inputs": [],
1178
+ "name": "renounceOwnership",
1179
+ "outputs": [],
1180
+ "stateMutability": "nonpayable",
1181
+ "type": "function"
1182
+ },
1183
+ {
1184
+ "inputs": [
1185
+ {
1186
+ "internalType": "bytes32",
1187
+ "name": "_guid",
1188
+ "type": "bytes32"
1189
+ },
1190
+ {
1191
+ "internalType": "uint8",
1192
+ "name": "_index",
1193
+ "type": "uint8"
1194
+ },
1195
+ {
1196
+ "internalType": "address",
1197
+ "name": "_receiver",
1198
+ "type": "address"
1199
+ },
1200
+ {
1201
+ "internalType": "uint256",
1202
+ "name": "_amountLD",
1203
+ "type": "uint256"
1204
+ },
1205
+ {
1206
+ "internalType": "uint8",
1207
+ "name": "_composeIdx",
1208
+ "type": "uint8"
1209
+ },
1210
+ {
1211
+ "internalType": "bytes",
1212
+ "name": "_composeMsg",
1213
+ "type": "bytes"
1214
+ }
1215
+ ],
1216
+ "name": "retryReceiveToken",
1217
+ "outputs": [],
1218
+ "stateMutability": "nonpayable",
1219
+ "type": "function"
1220
+ },
1221
+ {
1222
+ "inputs": [
1223
+ {
1224
+ "components": [
1225
+ {
1226
+ "internalType": "uint32",
1227
+ "name": "dstEid",
1228
+ "type": "uint32"
1229
+ },
1230
+ {
1231
+ "internalType": "bytes32",
1232
+ "name": "to",
1233
+ "type": "bytes32"
1234
+ },
1235
+ {
1236
+ "internalType": "uint256",
1237
+ "name": "amountLD",
1238
+ "type": "uint256"
1239
+ },
1240
+ {
1241
+ "internalType": "uint256",
1242
+ "name": "minAmountLD",
1243
+ "type": "uint256"
1244
+ },
1245
+ {
1246
+ "internalType": "bytes",
1247
+ "name": "extraOptions",
1248
+ "type": "bytes"
1249
+ },
1250
+ {
1251
+ "internalType": "bytes",
1252
+ "name": "composeMsg",
1253
+ "type": "bytes"
1254
+ },
1255
+ {
1256
+ "internalType": "bytes",
1257
+ "name": "oftCmd",
1258
+ "type": "bytes"
1259
+ }
1260
+ ],
1261
+ "internalType": "struct SendParam",
1262
+ "name": "_sendParam",
1263
+ "type": "tuple"
1264
+ },
1265
+ {
1266
+ "components": [
1267
+ {
1268
+ "internalType": "uint256",
1269
+ "name": "nativeFee",
1270
+ "type": "uint256"
1271
+ },
1272
+ {
1273
+ "internalType": "uint256",
1274
+ "name": "lzTokenFee",
1275
+ "type": "uint256"
1276
+ }
1277
+ ],
1278
+ "internalType": "struct MessagingFee",
1279
+ "name": "_fee",
1280
+ "type": "tuple"
1281
+ },
1282
+ {
1283
+ "internalType": "address",
1284
+ "name": "_refundAddress",
1285
+ "type": "address"
1286
+ }
1287
+ ],
1288
+ "name": "send",
1289
+ "outputs": [
1290
+ {
1291
+ "components": [
1292
+ {
1293
+ "internalType": "bytes32",
1294
+ "name": "guid",
1295
+ "type": "bytes32"
1296
+ },
1297
+ {
1298
+ "internalType": "uint64",
1299
+ "name": "nonce",
1300
+ "type": "uint64"
1301
+ },
1302
+ {
1303
+ "components": [
1304
+ {
1305
+ "internalType": "uint256",
1306
+ "name": "nativeFee",
1307
+ "type": "uint256"
1308
+ },
1309
+ {
1310
+ "internalType": "uint256",
1311
+ "name": "lzTokenFee",
1312
+ "type": "uint256"
1313
+ }
1314
+ ],
1315
+ "internalType": "struct MessagingFee",
1316
+ "name": "fee",
1317
+ "type": "tuple"
1318
+ }
1319
+ ],
1320
+ "internalType": "struct MessagingReceipt",
1321
+ "name": "msgReceipt",
1322
+ "type": "tuple"
1323
+ },
1324
+ {
1325
+ "components": [
1326
+ {
1327
+ "internalType": "uint256",
1328
+ "name": "amountSentLD",
1329
+ "type": "uint256"
1330
+ },
1331
+ {
1332
+ "internalType": "uint256",
1333
+ "name": "amountReceivedLD",
1334
+ "type": "uint256"
1335
+ }
1336
+ ],
1337
+ "internalType": "struct OFTReceipt",
1338
+ "name": "oftReceipt",
1339
+ "type": "tuple"
1340
+ }
1341
+ ],
1342
+ "stateMutability": "payable",
1343
+ "type": "function"
1344
+ },
1345
+ {
1346
+ "inputs": [
1347
+ {
1348
+ "internalType": "uint32",
1349
+ "name": "_dstEid",
1350
+ "type": "uint32"
1351
+ },
1352
+ {
1353
+ "components": [
1354
+ {
1355
+ "internalType": "uint32",
1356
+ "name": "srcEid",
1357
+ "type": "uint32"
1358
+ },
1359
+ {
1360
+ "internalType": "uint64",
1361
+ "name": "amount",
1362
+ "type": "uint64"
1363
+ }
1364
+ ],
1365
+ "internalType": "struct Credit[]",
1366
+ "name": "_credits",
1367
+ "type": "tuple[]"
1368
+ }
1369
+ ],
1370
+ "name": "sendCredits",
1371
+ "outputs": [],
1372
+ "stateMutability": "nonpayable",
1373
+ "type": "function"
1374
+ },
1375
+ {
1376
+ "inputs": [
1377
+ {
1378
+ "components": [
1379
+ {
1380
+ "internalType": "uint32",
1381
+ "name": "dstEid",
1382
+ "type": "uint32"
1383
+ },
1384
+ {
1385
+ "internalType": "bytes32",
1386
+ "name": "to",
1387
+ "type": "bytes32"
1388
+ },
1389
+ {
1390
+ "internalType": "uint256",
1391
+ "name": "amountLD",
1392
+ "type": "uint256"
1393
+ },
1394
+ {
1395
+ "internalType": "uint256",
1396
+ "name": "minAmountLD",
1397
+ "type": "uint256"
1398
+ },
1399
+ {
1400
+ "internalType": "bytes",
1401
+ "name": "extraOptions",
1402
+ "type": "bytes"
1403
+ },
1404
+ {
1405
+ "internalType": "bytes",
1406
+ "name": "composeMsg",
1407
+ "type": "bytes"
1408
+ },
1409
+ {
1410
+ "internalType": "bytes",
1411
+ "name": "oftCmd",
1412
+ "type": "bytes"
1413
+ }
1414
+ ],
1415
+ "internalType": "struct SendParam",
1416
+ "name": "_sendParam",
1417
+ "type": "tuple"
1418
+ },
1419
+ {
1420
+ "components": [
1421
+ {
1422
+ "internalType": "uint256",
1423
+ "name": "nativeFee",
1424
+ "type": "uint256"
1425
+ },
1426
+ {
1427
+ "internalType": "uint256",
1428
+ "name": "lzTokenFee",
1429
+ "type": "uint256"
1430
+ }
1431
+ ],
1432
+ "internalType": "struct MessagingFee",
1433
+ "name": "_fee",
1434
+ "type": "tuple"
1435
+ },
1436
+ {
1437
+ "internalType": "address",
1438
+ "name": "_refundAddress",
1439
+ "type": "address"
1440
+ }
1441
+ ],
1442
+ "name": "sendToken",
1443
+ "outputs": [
1444
+ {
1445
+ "components": [
1446
+ {
1447
+ "internalType": "bytes32",
1448
+ "name": "guid",
1449
+ "type": "bytes32"
1450
+ },
1451
+ {
1452
+ "internalType": "uint64",
1453
+ "name": "nonce",
1454
+ "type": "uint64"
1455
+ },
1456
+ {
1457
+ "components": [
1458
+ {
1459
+ "internalType": "uint256",
1460
+ "name": "nativeFee",
1461
+ "type": "uint256"
1462
+ },
1463
+ {
1464
+ "internalType": "uint256",
1465
+ "name": "lzTokenFee",
1466
+ "type": "uint256"
1467
+ }
1468
+ ],
1469
+ "internalType": "struct MessagingFee",
1470
+ "name": "fee",
1471
+ "type": "tuple"
1472
+ }
1473
+ ],
1474
+ "internalType": "struct MessagingReceipt",
1475
+ "name": "msgReceipt",
1476
+ "type": "tuple"
1477
+ },
1478
+ {
1479
+ "components": [
1480
+ {
1481
+ "internalType": "uint256",
1482
+ "name": "amountSentLD",
1483
+ "type": "uint256"
1484
+ },
1485
+ {
1486
+ "internalType": "uint256",
1487
+ "name": "amountReceivedLD",
1488
+ "type": "uint256"
1489
+ }
1490
+ ],
1491
+ "internalType": "struct OFTReceipt",
1492
+ "name": "oftReceipt",
1493
+ "type": "tuple"
1494
+ },
1495
+ {
1496
+ "components": [
1497
+ {
1498
+ "internalType": "uint56",
1499
+ "name": "ticketId",
1500
+ "type": "uint56"
1501
+ },
1502
+ {
1503
+ "internalType": "bytes",
1504
+ "name": "passenger",
1505
+ "type": "bytes"
1506
+ }
1507
+ ],
1508
+ "internalType": "struct Ticket",
1509
+ "name": "passenger",
1510
+ "type": "tuple"
1511
+ }
1512
+ ],
1513
+ "stateMutability": "payable",
1514
+ "type": "function"
1515
+ },
1516
+ {
1517
+ "inputs": [
1518
+ {
1519
+ "components": [
1520
+ {
1521
+ "internalType": "address",
1522
+ "name": "feeLib",
1523
+ "type": "address"
1524
+ },
1525
+ {
1526
+ "internalType": "address",
1527
+ "name": "planner",
1528
+ "type": "address"
1529
+ },
1530
+ {
1531
+ "internalType": "address",
1532
+ "name": "treasurer",
1533
+ "type": "address"
1534
+ },
1535
+ {
1536
+ "internalType": "address",
1537
+ "name": "tokenMessaging",
1538
+ "type": "address"
1539
+ },
1540
+ {
1541
+ "internalType": "address",
1542
+ "name": "creditMessaging",
1543
+ "type": "address"
1544
+ },
1545
+ {
1546
+ "internalType": "address",
1547
+ "name": "lzToken",
1548
+ "type": "address"
1549
+ }
1550
+ ],
1551
+ "internalType": "struct AddressConfig",
1552
+ "name": "_config",
1553
+ "type": "tuple"
1554
+ }
1555
+ ],
1556
+ "name": "setAddressConfig",
1557
+ "outputs": [],
1558
+ "stateMutability": "nonpayable",
1559
+ "type": "function"
1560
+ },
1561
+ {
1562
+ "inputs": [
1563
+ {
1564
+ "internalType": "uint32",
1565
+ "name": "_dstEid",
1566
+ "type": "uint32"
1567
+ },
1568
+ {
1569
+ "internalType": "uint16",
1570
+ "name": "_baseFareMultiplierBps",
1571
+ "type": "uint16"
1572
+ }
1573
+ ],
1574
+ "name": "setBaseFareMultiplierBps",
1575
+ "outputs": [],
1576
+ "stateMutability": "nonpayable",
1577
+ "type": "function"
1578
+ },
1579
+ {
1580
+ "inputs": [
1581
+ {
1582
+ "internalType": "uint32",
1583
+ "name": "_dstEid",
1584
+ "type": "uint32"
1585
+ },
1586
+ {
1587
+ "internalType": "bool",
1588
+ "name": "_oft",
1589
+ "type": "bool"
1590
+ }
1591
+ ],
1592
+ "name": "setOFTPath",
1593
+ "outputs": [],
1594
+ "stateMutability": "nonpayable",
1595
+ "type": "function"
1596
+ },
1597
+ {
1598
+ "inputs": [
1599
+ {
1600
+ "internalType": "bool",
1601
+ "name": "_paused",
1602
+ "type": "bool"
1603
+ }
1604
+ ],
1605
+ "name": "setPause",
1606
+ "outputs": [],
1607
+ "stateMutability": "nonpayable",
1608
+ "type": "function"
1609
+ },
1610
+ {
1611
+ "inputs": [],
1612
+ "name": "sharedDecimals",
1613
+ "outputs": [
1614
+ {
1615
+ "internalType": "uint8",
1616
+ "name": "",
1617
+ "type": "uint8"
1618
+ }
1619
+ ],
1620
+ "stateMutability": "view",
1621
+ "type": "function"
1622
+ },
1623
+ {
1624
+ "inputs": [],
1625
+ "name": "stargateType",
1626
+ "outputs": [
1627
+ {
1628
+ "internalType": "enum StargateType",
1629
+ "name": "",
1630
+ "type": "uint8"
1631
+ }
1632
+ ],
1633
+ "stateMutability": "pure",
1634
+ "type": "function"
1635
+ },
1636
+ {
1637
+ "inputs": [],
1638
+ "name": "status",
1639
+ "outputs": [
1640
+ {
1641
+ "internalType": "uint8",
1642
+ "name": "",
1643
+ "type": "uint8"
1644
+ }
1645
+ ],
1646
+ "stateMutability": "view",
1647
+ "type": "function"
1648
+ },
1649
+ {
1650
+ "inputs": [],
1651
+ "name": "token",
1652
+ "outputs": [
1653
+ {
1654
+ "internalType": "address",
1655
+ "name": "",
1656
+ "type": "address"
1657
+ }
1658
+ ],
1659
+ "stateMutability": "view",
1660
+ "type": "function"
1661
+ },
1662
+ {
1663
+ "inputs": [
1664
+ {
1665
+ "internalType": "address",
1666
+ "name": "newOwner",
1667
+ "type": "address"
1668
+ }
1669
+ ],
1670
+ "name": "transferOwnership",
1671
+ "outputs": [],
1672
+ "stateMutability": "nonpayable",
1673
+ "type": "function"
1674
+ },
1675
+ {
1676
+ "inputs": [],
1677
+ "name": "treasuryFee",
1678
+ "outputs": [
1679
+ {
1680
+ "internalType": "uint64",
1681
+ "name": "",
1682
+ "type": "uint64"
1683
+ }
1684
+ ],
1685
+ "stateMutability": "view",
1686
+ "type": "function"
1687
+ },
1688
+ {
1689
+ "inputs": [],
1690
+ "name": "tvl",
1691
+ "outputs": [
1692
+ {
1693
+ "internalType": "uint256",
1694
+ "name": "",
1695
+ "type": "uint256"
1696
+ }
1697
+ ],
1698
+ "stateMutability": "view",
1699
+ "type": "function"
1700
+ },
1701
+ {
1702
+ "inputs": [
1703
+ {
1704
+ "internalType": "bytes32",
1705
+ "name": "guid",
1706
+ "type": "bytes32"
1707
+ },
1708
+ {
1709
+ "internalType": "uint8",
1710
+ "name": "index",
1711
+ "type": "uint8"
1712
+ }
1713
+ ],
1714
+ "name": "unreceivedTokens",
1715
+ "outputs": [
1716
+ {
1717
+ "internalType": "bytes32",
1718
+ "name": "hash",
1719
+ "type": "bytes32"
1720
+ }
1721
+ ],
1722
+ "stateMutability": "view",
1723
+ "type": "function"
1724
+ },
1725
+ {
1726
+ "inputs": [
1727
+ {
1728
+ "internalType": "address",
1729
+ "name": "_to",
1730
+ "type": "address"
1731
+ },
1732
+ {
1733
+ "internalType": "uint64",
1734
+ "name": "_amountSD",
1735
+ "type": "uint64"
1736
+ }
1737
+ ],
1738
+ "name": "withdrawTreasuryFee",
1739
+ "outputs": [],
1740
+ "stateMutability": "nonpayable",
1741
+ "type": "function"
1742
+ }
1743
+ ],
1744
+ "bytecode": "0x6101406040526001805460ff60a01b1916600160a01b1790553480156200002557600080fd5b5060405162008261380380620082618339810160408190526200004891620002fb565b8686868686868684848484846200005f33620001a1565b6001600160a01b03851660805260ff80841690851610156200009457604051632e4b554360e01b815260040160405180910390fd5b620000a08385620003d8565b620000ad90600a620004f7565b60c05260ff831660a0526001600160a01b03821660e08190526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa15801562000102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012891906200050f565b63ffffffff16610100526200013d81620001a1565b50505050508686856040516200015390620001f1565b620001619392919062000565565b604051809103906000f0801580156200017e573d6000803e3d6000fd5b506001600160a01b03166101205250620005a29c50505050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611f0e806200635383390190565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200023257818101518382015260200162000218565b50506000910152565b600082601f8301126200024d57600080fd5b81516001600160401b03808211156200026a576200026a620001ff565b604051601f8301601f19908116603f01168101908282118183101715620002955762000295620001ff565b81604052838152866020858801011115620002af57600080fd5b620002c284602083016020890162000215565b9695505050505050565b80516001600160a01b0381168114620002e457600080fd5b919050565b805160ff81168114620002e457600080fd5b600080600080600080600060e0888a0312156200031757600080fd5b87516001600160401b03808211156200032f57600080fd5b6200033d8b838c016200023b565b985060208a01519150808211156200035457600080fd5b50620003638a828b016200023b565b9650506200037460408901620002cc565b94506200038460608901620002e9565b93506200039460808901620002e9565b9250620003a460a08901620002cc565b9150620003b460c08901620002cc565b905092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620003f457620003f4620003c2565b92915050565b600181815b808511156200043b5781600019048211156200041f576200041f620003c2565b808516156200042d57918102915b93841c9390800290620003ff565b509250929050565b6000826200045457506001620003f4565b816200046357506000620003f4565b81600181146200047c57600281146200048757620004a7565b6001915050620003f4565b60ff8411156200049b576200049b620003c2565b50506001821b620003f4565b5060208310610133831016604e8410600b8410161715620004cc575081810a620003f4565b620004d88383620003fa565b8060001904821115620004ef57620004ef620003c2565b029392505050565b60006200050860ff84168362000443565b9392505050565b6000602082840312156200052257600080fd5b815163ffffffff811681146200050857600080fd5b600081518084526200055181602086016020860162000215565b601f01601f19169290920160200192915050565b6060815260006200057a606083018662000537565b82810360208401526200058e818662000537565b91505060ff83166040830152949350505050565b60805160a05160c05160e0516101005161012051615c7a620006d96000396000818161062201528181611d8801528181611f92015281816121cd0152818161256b0152818161337d01526135ab015260008181610ab10152818161194d01528181611dec01528181611ec5015281816124c501528181612ecb01526140b901526000818161283901528181612e50015261466f015260008181610b9f01528181610e0f01528181610f7301528181610ff70152818161102601528181611d0e01528181611f070152818161216a0152818161230501528181612508015281816130680152818161321a015281816132440152818161370c015261399b015260006106ef0152600081816108ed0152818161091101528181610a3a01528181613697015281816139cd01526142790152615c7a6000f3fe60806040526004361061024f5760003560e01c8063715018a611610138578063c0b78967116100b0578063cc32d1761161007f578063e5328e0611610064578063e5328e06146108a6578063f2fde38b146108bb578063fc0c546a146108db57600080fd5b8063cc32d1761461081b578063d621ad3f1461086e57600080fd5b8063c0b7896714610798578063c7c7f5b3146107b8578063c859c483146107d9578063cbef2aa9146107f957600080fd5b8063857749b0116101075780639561b12f116100ec5780639561b12f1461073c5780639f68b9641461075c578063bedb86fb1461077857600080fd5b8063857749b0146106dd5780638da5cb5b1461071157600080fd5b8063715018a614610667578063764f6a781461067c5780637bde82f21461069d5780637e3e8a4c146106bd57600080fd5b80632bc5114c116101cb5780633faa12c51161019a57806347e7ef241161017f57806347e7ef24146105d2578063484267a4146105f35780635fcbd2851461061357600080fd5b80633faa12c514610592578063461bb0b9146105b257600080fd5b80632bc5114c146103e9578063341a4648146104f957806338da6b8e1461050c5780633b6f743b1461057257600080fd5b806316909bca11610222578063192adc5d11610207578063192adc5d14610358578063200d2ed2146103855780632708987a146103c957600080fd5b806316909bca1461030f57806316a96d1e1461032b57600080fd5b806309bbb201146102545780630d35b415146102765780630f12f7ab146102ae578063156a0d0f146102ce575b600080fd5b34801561026057600080fd5b5061027461026f3660046148be565b61090f565b005b34801561028257600080fd5b506102966102913660046148ed565b610b2f565b6040516102a593929190614972565b60405180910390f35b3480156102ba57600080fd5b506102746102c9366004614a42565b611065565b3480156102da57600080fd5b50604080517f02e49c2c00000000000000000000000000000000000000000000000000000000815260006020820152016102a5565b34801561031b57600080fd5b5060006040516102a59190614a80565b34801561033757600080fd5b5061034b610346366004614b0a565b611101565b6040516102a59190614b64565b34801561036457600080fd5b50610378610373366004614bb7565b611216565b6040516102a59190614bfe565b34801561039157600080fd5b506001546103b79074010000000000000000000000000000000000000000900460ff1681565b60405160ff90911681526020016102a5565b3480156103d557600080fd5b506102746103e4366004614c15565b61130a565b3480156103f557600080fd5b5061048b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260015473ffffffffffffffffffffffffffffffffffffffff908116825260025481166020830152600654811692820192909252600354821660608201526004548216608082015260055490911660a082015290565b6040516102a59190600060c08201905073ffffffffffffffffffffffffffffffffffffffff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b610274610507366004614c9b565b61156f565b34801561051857600080fd5b5061054f610527366004614cb4565b60076020526000908152604090205461ffff81169062010000900467ffffffffffffffff1682565b6040805161ffff909316835267ffffffffffffffff9091166020830152016102a5565b34801561057e57600080fd5b5061037861058d366004614bb7565b61166f565b34801561059e57600080fd5b506102746105ad366004614ccf565b611943565b3480156105be57600080fd5b506102746105cd366004614cfb565b611a16565b6105e56105e0366004614d2f565b611c1c565b6040519081526020016102a5565b3480156105ff57600080fd5b506105e561060e366004614d5b565b611ebe565b34801561061f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a5565b34801561067357600080fd5b5061027461201a565b61068f61068a366004614d78565b61202e565b6040516102a5929190614e1a565b3480156106a957600080fd5b506105e56106b8366004614e35565b6123da565b3480156106c957600080fd5b506102746106d8366004614e6b565b612630565b3480156106e957600080fd5b506103b77f000000000000000000000000000000000000000000000000000000000000000081565b34801561071d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610642565b34801561074857600080fd5b50610274610757366004614c15565b612a30565b34801561076857600080fd5b50604051600181526020016102a5565b34801561078457600080fd5b50610274610793366004614ee0565b612c0a565b3480156107a457600080fd5b506102746107b3366004614efd565b612c89565b6107cb6107c6366004614d78565b612f83565b6040516102a5929190614f88565b3480156107e557600080fd5b506102746107f4366004614fac565b612fb7565b61080c610807366004614d78565b6130e5565b6040516102a593929190614fda565b34801561082757600080fd5b50600154610855907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102a5565b34801561087a57600080fd5b506105e5610889366004615033565b600860209081526000928352604080842090915290825290205481565b3480156108b257600080fd5b506105e5613379565b3480156108c757600080fd5b506102746108d6366004614d5b565b61340f565b3480156108e757600080fd5b506106427f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099e919061505f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a02576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c6800000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b158015610a9357600080fd5b505af1158015610aa7573d6000803e3d6000fd5b50505063ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600760205260409020610aee92509083906134cb16565b5060405167ffffffffffffffff821681527fe1825c00ade29eaff76bae6774e13bc96e688c663c5e42944aae9e104000bce89060200160405180910390a150565b60408051808201909152600080825260208201526060610b62604051806040016040528060008152602001600081525090565b600080610b6d6135a3565b9092509050610bd360076000610b8660208a018a614cb4565b63ffffffff1681526020810191909152604001600020547f00000000000000000000000000000000000000000000000000000000000000006201000090910467ffffffffffffffff160290565b60208601819052600090604088013511610bf1578660400135610bf7565b85602001515b90506000610c0482613705565b6040805160e08101909152338152909150600090602080820190610c2a908c018c614cb4565b63ffffffff1681526020018367ffffffffffffffff1681526020018667ffffffffffffffff1681526020018567ffffffffffffffff168152602001610cb0600760008d6000016020810190610c7f9190614cb4565b63ffffffff1663ffffffff1681526020019081526020016000205462010000900467ffffffffffffffff9081161490565b15158152602001610ccd610cc760c08d018d61507c565b15919050565b151590526001546040517f5b64903b00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690635b64903b90610d2d9085906004016150e1565b602060405180830381865afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e9190615160565b90508267ffffffffffffffff168167ffffffffffffffff1614610ff55760408051600180825281830190925290816020015b604080518082019091526000815260606020820152815260200190600190039081610da05790505097508267ffffffffffffffff168167ffffffffffffffff161015610ec2576040518060400160405280610e37610e328487610e0391906151db565b67ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b61373f565b610e61907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615203565b81526020016040518060400160405280600c81526020017f70726f746f636f6c20666565000000000000000000000000000000000000000081525081525088600081518110610eb257610eb261524f565b6020026020010181905250610ff5565b8267ffffffffffffffff168167ffffffffffffffff161115610ff5576000610eea84836151db565b9050610ef682826137f5565b909250905067ffffffffffffffff80851690831603610f55576040805160008082526020820190925290610f4d565b604080518082019091526000815260606020820152815260200190600190039081610f255790505b509850610ff3565b6040518060400160405280610f96610e328467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020016040518060400160405280600681526020017f726577617264000000000000000000000000000000000000000000000000000081525081525089600081518110610fe757610fe761524f565b60200260200101819052505b505b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff84160287527f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff821602602088015250969895975093955050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163381146110b7576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5063ffffffff91909116600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff909216919091179055565b6040805160808101825260008082526020820181905291810182905260608101919091526001546040805160606020601f88018190040282018101835291810186815273ffffffffffffffffffffffffffffffffffffffff9093169263df0810919233928a9290918291908b908b90819085018382808284376000920191909152505050908252506020018790526040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526111ca939291906004016152a7565b608060405180830381865afa1580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b91906153dc565b90505b949350505050565b604080518082019091526000808252602082015261123a610cc760c085018561507c565b611270576040517f2d9560be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff16633292cf026112a561129e6040870135613705565b869061384a565b846040518363ffffffff1660e01b81526004016112c3929190615474565b6040805180830381865afa1580156112df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130391906154c8565b9392505050565b60015474010000000000000000000000000000000000000000900460ff166002198101611363576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff8216016113a1576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905560045473ffffffffffffffffffffffffffffffffffffffff16338114611432576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b838110156114ed57368585838181106114505761145061524f565b905060400201905060006114a982602001602081019061147091906148be565b600760006114816020870187614cb4565b63ffffffff1663ffffffff1681526020019081526020016000206134cb90919063ffffffff16565b905080156114e3576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050600101611435565b507fce105e156370093e6600169f7c01277f740d45fbcf95435227ce6f43ad0c3abd858585604051611521939291906154e4565b60405180910390a15050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055505050565b60065473ffffffffffffffffffffffffffffffffffffffff163381146115c1576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115ca82613954565b60006115d6338461398c565b905080600160158282829054906101000a900467ffffffffffffffff166115fd9190615557565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa064a2faa279f4d67c85c8fc69d4ebb7de2739a9e6dd864dfdd1b9e066d4bfd081604051611662919067ffffffffffffffff91909116815260200190565b60405180910390a1505050565b604080518082019091526000808252602082015260006116928460400135613705565b90508067ffffffffffffffff166000036116d8576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116ea610cc760c087018761507c565b9050801561177f5760035473ffffffffffffffffffffffffffffffffffffffff16633292cf0261171a878561384a565b866040518363ffffffff1660e01b8152600401611738929190615474565b6040805180830381865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177891906154c8565b925061193b565b6000604051806040016040528087806080019061179c919061507c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016117e360a089018961507c565b9091525060015490915060009073ffffffffffffffffffffffffffffffffffffffff1663df0810913361181960208b018b614cb4565b856040518463ffffffff1660e01b8152600401611838939291906152a7565b608060405180830381865afa158015611855573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187991906153dc565b60035490915073ffffffffffffffffffffffffffffffffffffffff1663bae02db66118da86600760006118af60208e018e614cb4565b63ffffffff90811682526020820192909252604001600020548c929161ffff9091169087906139f416565b6040518263ffffffff1660e01b81526004016118f6919061563e565b6040805180830381865afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193691906154c8565b945050505b505092915050565b61194b613af0565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff16036119b0576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff80831660009081526007602052604090206119d2918390613b7116565b6040805163ffffffff8416815282151560208201527faf6b8dd4c5a827e03f548d06181b36aaba61e22436ff1cfa9bc409d576366a60910160405180910390a15050565b611a1e613af0565b611a2b6020820182614d5b565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611a806040820160208301614d5b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611ad56060820160408301614d5b565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611b2a6080820160608301614d5b565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611b7f60a0820160808301614d5b565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611bd460c0820160a08301614d5b565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b60015460009074010000000000000000000000000000000000000000900460ff166002198101611c78576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff821601611cb6576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055611cfe83613954565b6000611d0a338561398c565b90507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8216026040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018390529194507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b158015611dce57600080fd5b505af1158015611de2573d6000803e3d6000fd5b50505063ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600760205260409020611e299250908390613c7116565b60405183815273ffffffffffffffffffffffffffffffffffffffff86169033907f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7906020015b60405180910390a35050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905592915050565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660009081526007602052604081205467ffffffffffffffff62010000909104167f00000000000000000000000000000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff8316611f4a57809150612014565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fff9190615651565b905080821161200e5781612010565b805b9250505b50919050565b612022613af0565b61202c6000613d5c565b565b612036614860565b60015460009074010000000000000000000000000000000000000000900460ff166002198101612092576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff8216016120d0576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905561211f610cc760c088018861507c565b612155576040517f2d9560be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121648760400135613705565b905060007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8316026040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b15801561222657600080fd5b505af115801561223a573d6000803e3d6000fd5b5050604051838152600092503391507f27d4634c833b7622a0acddbf7f746183625f105945e95c723ad1d5a9f2a0b6fc9060200160405180910390a36000806122bb61228960208c018c614cb4565b856122978d60600135613705565b60408051606081018252600091810182815281526020810191909152600190613dd1565b5090925090506122d86122d160208c018c614cb4565b838361407f565b60006122f36122ec368c90038c018c61566a565b60006140f4565b90506123018b82858c614149565b97507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff841602885190975033907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a61236560208f018f614cb4565b6040805163ffffffff90921682526020820189905281018b905260600160405180910390a35050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905550939792965091945050505050565b60015460009074010000000000000000000000000000000000000000900460ff166002198101612436576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff821601612474576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905560006124be85613705565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600760205260409020919250612504919083906141f916565b90507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8216026040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290529093507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156125c457600080fd5b505af11580156125d8573d6000803e3d6000fd5b505050506125e6848461422d565b60405183815273ffffffffffffffffffffffffffffffffffffffff85169033907f27d4634c833b7622a0acddbf7f746183625f105945e95c723ad1d5a9f2a0b6fc90602001611e6f565b60015474010000000000000000000000000000000000000000900460ff166002198101612689576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff8216016126c7576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905560035473ffffffffffffffffffffffffffffffffffffffff16338114612758576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061276d610e0360408601602087016148be565b9050600061277e6020860186614d5b565b9050600061278c8284614272565b905060008061279e604089018961507c565b905011905060608115612816576128136127be60608d0160408e016148be565b6127cb60208e018e614cb4565b876127d960408d018d61507c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061429f92505050565b90505b821561292c5781156128c35773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637cb59012858c61287060808d0160608e0161569c565b856040518563ffffffff1660e01b815260040161289094939291906156b7565b600060405180830381600087803b1580156128aa57600080fd5b505af11580156128be573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff84168a7fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61290960208f018f614cb4565b6040805163ffffffff9092168252602082018a90520160405180910390a36129e4565b600061293e60808a0160608b0161569c565b905060008587838560405160200161295994939291906156f5565b60405160208183030381529060405290508080519060200120600860008e815260200190815260200160002060008d60ff1660ff168152602001908152602001600020819055507fb0a708e82202f7fac05dc44361fd47adf79042795add3d2ed05155d3e5e9fa7e8c8c888a86886040516129d996959493929190615773565b60405180910390a150505b5050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055505050505050505050565b60015474010000000000000000000000000000000000000000900460ff166002198101612a89576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff821601612ac7576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905560045473ffffffffffffffffffffffffffffffffffffffff16338114612b58576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83811015612bd65736858583818110612b7657612b7661524f565b9050604002019050612bcd816020016020810190612b9491906148be565b60076000612ba56020860186614cb4565b63ffffffff1663ffffffff168152602001908152602001600020613c7190919063ffffffff16565b50600101612b5b565b507f10c5f2b007767d266c6c75c86ae9ed0c74e6320b30bda231af7396a990e7263c858585604051611521939291906154e4565b60025473ffffffffffffffffffffffffffffffffffffffff16338114612c5c576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81612c68576001612c6b565b60035b600160146101000a81548160ff021916908360ff1602179055505050565b60015474010000000000000000000000000000000000000000900460ff166002198101612ce2576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff821601612d20576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055604051600090612d7b90889088908890889088906020016157cc565b60408051601f19818403018152918152815160209283012060008c81526008845282812060ff8d1682529093529120549091508114612de6576040517faba8b6ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600089815260086020908152604080832060ff8c168452909152812055612e0d878761422d565b8215612ec0576040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290612e8d908a908d908a908a908a9060040161583e565b600060405180830381600087803b158015612ea757600080fd5b505af1158015612ebb573d6000803e3d6000fd5b505050505b6040805163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020810188905273ffffffffffffffffffffffffffffffffffffffff8916918b917fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c910160405180910390a35050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905550505050505050565b612f8b614860565b6040805180820190915260008082526020820152612faa8585856130e5565b5090969095509350505050565b60065473ffffffffffffffffffffffffffffffffffffffff16338114613009576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160158282829054906101000a900467ffffffffffffffff1661302e91906151db565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506130908361308b8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b61422d565b6040805173ffffffffffffffffffffffffffffffffffffffff8516815267ffffffffffffffff841660208201527fa46907b6b80b882da80d6e36cc905dde57fafff0a5442c8898526fe952d1e6539101611662565b6130ed614860565b604080518082019091526000808252602082015260408051808201909152600081526060602082015260015474010000000000000000000000000000000000000000900460ff16600219810161316f576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff8216016131ad576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055600080806131f98a6142d1565b925092509250604051806040016040528061323d8567ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff85160290529550600061328e613287368c90038c018c61566a565b88516140f4565b90506132a0610cc760c08d018d61507c565b156132b8576132b18b82858c614149565b97506132cb565b6132c58b82858c866143ee565b90985095505b875133907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a6132fd60208f018f614cb4565b8a516020808d01516040805163ffffffff90951685529184019290925282015260600160405180910390a35050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555093979296509094509092505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061340a9190615651565b905090565b613417613af0565b73ffffffffffffffffffffffffffffffffffffffff81166134bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6134c881613d5c565b50565b815460009062010000900467ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000001810161351157600191505061359d565b8267ffffffffffffffff168167ffffffffffffffff16101561355f576040517f2b4d0ad500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff16620100009184900367ffffffffffffffff16919091021783555b92915050565b60008061363d7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190615651565b613705565b6001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152750100000000000000000000000000000000000000000090910467ffffffffffffffff16906136f3907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015613614573d6000803e3d6000fd5b6136fd91906151db565b915091509091565b600061359d7f000000000000000000000000000000000000000000000000000000000000000083816137395761373961589b565b0461451e565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156137f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016134b6565b5090565b600154600090819067ffffffffffffffff7501000000000000000000000000000000000000000000909104811690841681101561383b5780848603019250809150613842565b8492508391505b509250929050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a08101919091526040805160c0810190915233815260208082019061389e90860186614cb4565b63ffffffff1681526020858101359082015267ffffffffffffffff841660408201526060016138d060a086018661507c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001613917608086018661507c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509392505050565b34156134c8576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061399782613705565b90507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff821602915061359d7f00000000000000000000000000000000000000000000000000000000000000008430856145b8565b613a4e6040805160e081018252600080825260208083018290528284018290526060808401839052608080850184905260a0850182905285519081018652838152918201839052938101829052928301529060c082015290565b6040805160e08101909152338152602080820190613a6e90880188614cb4565b63ffffffff1681526020878101359082015267ffffffffffffffff8616604082015261ffff85166060820152608001613aaa60a088018861507c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461202c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016134b6565b815462010000900467ffffffffffffffff168115613c025767ffffffffffffffff811615613bcb576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff1669ffffffffffffffff0000178355505050565b67ffffffffffffffff81811614613c45576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff1683555b505050565b815462010000900467ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000018101613caf57505050565b613cb98282615557565b90507fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000167ffffffffffffffff821601613d1e576040517f5e10aa2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff9091161790915550565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051608081018252600080825260208201819052918101829052606081018290528190600080613e016135a3565b63ffffffff8c166000908152600760205260408120549294509092509067ffffffffffffffff620100009091048116146040805160e08101825233815263ffffffff8e16602082015267ffffffffffffffff8d81168284015286811660608301528516608082015282151560a08201528a151560c082015260015491517f07c84e390000000000000000000000000000000000000000000000000000000081529293509173ffffffffffffffffffffffffffffffffffffffff909116906307c84e3990613ed49084908c906004016158ca565b60a0604051808303816000875af1158015613ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f17919061595c565b909750945067ffffffffffffffff808c169088161015613f7a57868b03600160158282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061400f565b8a67ffffffffffffffff168767ffffffffffffffff16111561400f57613fa2878c89036137f5565b909750955067ffffffffffffffff86161561400f576001805467ffffffffffffffff750100000000000000000000000000000000000000000080830482168a9003909116027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff9091161790555b8967ffffffffffffffff168767ffffffffffffffff161080614039575067ffffffffffffffff8716155b15614070576040517fa1e8654500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050955095509592505050565b63ffffffff80841660009081526007602052604090206140a19184906134cb16565b5067ffffffffffffffff811615613c6c5763ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600760205260409020613c6c918390613c7116565b604080518082019091526000808252602082015282513414614142576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090919050565b614151614860565b602084015115614168576141688460200151614600565b600354845173ffffffffffffffffffffffffffffffffffffffff9091169063ff6fb30090614196888761384a565b87866040518563ffffffff1660e01b81526004016141b693929190615989565b60806040518083038185885af11580156141d4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061120b9190615a46565b815460009067ffffffffffffffff620100009091048116908316811061421f5782614221565b805b915061193b84836134cb565b60006142398383614272565b905080613c6c576040517f06a6167e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113037f00000000000000000000000000000000000000000000000000000000000000008484614694565b6060848484846040516020016142b89493929190615a62565b6040516020818303038152906040529050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905281906000614308610cc760c087018761507c565b905061431833866040013561398c565b9350614337604051806040016040528060608152602001600081525090565b816143a2576040805180820190915280614354608089018961507c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161439b60a089018961507c565b9091525090505b6143c76143b26020880188614cb4565b866143c08960600135613705565b8585613dd1565b9195509093506143e590506143df6020880188614cb4565b8561474d565b50509193909250565b6143f6614860565b604080518082019091526000815260606020820152602086015115614447576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354865173ffffffffffffffffffffffffffffffffffffffff909116906361ccdbfb906144ab886007600061448060208f018f614cb4565b63ffffffff90811682526020820192909252604001600020548d929161ffff909116908a906139f416565b876040518463ffffffff1660e01b81526004016144c9929190615ae0565b60006040518083038185885af11580156144e7573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526145109190810190615b18565b909890975095505050505050565b600067ffffffffffffffff8211156137f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f342062697473000000000000000000000000000000000000000000000000000060648201526084016134b6565b6145c48484848461475c565b6145fa576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60055473ffffffffffffffffffffffffffffffffffffffff1661464f576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546134c89073ffffffffffffffffffffffffffffffffffffffff16337f0000000000000000000000000000000000000000000000000000000000000000846145b8565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905260009061120e9085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526147bd565b61475882828361407f565b5050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905260009061120b9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084016146e9565b60008060008473ffffffffffffffffffffffffffffffffffffffff16846040516147e79190615c0b565b6000604051808303816000865af19150503d8060008114614824576040519150601f19603f3d011682016040523d82523d6000602084013e614829565b606091505b50915091508161483a576000614857565b805115806148575750808060200190518101906148579190615c27565b95945050505050565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016148a3604051806040016040528060008152602001600081525090565b905290565b67ffffffffffffffff811681146134c857600080fd5b6000602082840312156148d057600080fd5b8135611303816148a8565b600060e0828403121561201457600080fd5b6000602082840312156148ff57600080fd5b813567ffffffffffffffff81111561491657600080fd5b61120e848285016148db565b60005b8381101561493d578181015183820152602001614925565b50506000910152565b6000815180845261495e816020860160208601614922565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015614a0b578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400185528151805188528301518388018790526149f887890182614946565b97505093820193908201906001016149ae565b5050875160608801525050506020850151608085015250905061120e565b803563ffffffff81168114614a3d57600080fd5b919050565b60008060408385031215614a5557600080fd5b614a5e83614a29565b9150602083013561ffff81168114614a7557600080fd5b809150509250929050565b6020810160028310614abb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008083601f840112614ad357600080fd5b50813567ffffffffffffffff811115614aeb57600080fd5b602083019150836020828501011115614b0357600080fd5b9250929050565b60008060008060608587031215614b2057600080fd5b614b2985614a29565b9350602085013567ffffffffffffffff811115614b4557600080fd5b614b5187828801614ac1565b9598909750949560400135949350505050565b6080810161359d828480516fffffffffffffffffffffffffffffffff908116835260208083015182169084015260408083015182169084015260609182015116910152565b80151581146134c857600080fd5b60008060408385031215614bca57600080fd5b823567ffffffffffffffff811115614be157600080fd5b614bed858286016148db565b9250506020830135614a7581614ba9565b81518152602080830151908201526040810161359d565b600080600060408486031215614c2a57600080fd5b614c3384614a29565b9250602084013567ffffffffffffffff80821115614c5057600080fd5b818601915086601f830112614c6457600080fd5b813581811115614c7357600080fd5b8760208260061b8501011115614c8857600080fd5b6020830194508093505050509250925092565b600060208284031215614cad57600080fd5b5035919050565b600060208284031215614cc657600080fd5b61130382614a29565b60008060408385031215614ce257600080fd5b614ceb83614a29565b91506020830135614a7581614ba9565b600060c0828403121561201457600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146134c857600080fd5b60008060408385031215614d4257600080fd5b8235614d4d81614d0d565b946020939093013593505050565b600060208284031215614d6d57600080fd5b813561130381614d0d565b60008060008385036080811215614d8e57600080fd5b843567ffffffffffffffff811115614da557600080fd5b614db1878288016148db565b9450506040601f1982011215614dc657600080fd5b506020840191506060840135614ddb81614d0d565b809150509250925092565b8051825267ffffffffffffffff60208201511660208301526040810151613c6c604084018280518252602090810151910152565b60a08101614e288285614de6565b8260808301529392505050565b60008060408385031215614e4857600080fd5b823591506020830135614a7581614d0d565b803560ff81168114614a3d57600080fd5b60008060008084860360c0811215614e8257600080fd5b6060811215614e9057600080fd5b5084935060608501359250614ea760808601614e5a565b915060a085013567ffffffffffffffff811115614ec357600080fd5b850160808188031215614ed557600080fd5b939692955090935050565b600060208284031215614ef257600080fd5b813561130381614ba9565b600080600080600080600060c0888a031215614f1857600080fd5b87359650614f2860208901614e5a565b95506040880135614f3881614d0d565b945060608801359350614f4d60808901614e5a565b925060a088013567ffffffffffffffff811115614f6957600080fd5b614f758a828b01614ac1565b989b979a50959850939692959293505050565b60c08101614f968285614de6565b82516080830152602083015160a0830152611303565b60008060408385031215614fbf57600080fd5b8235614fca81614d0d565b91506020830135614a75816148a8565b614fe48185614de6565b82516080820152602083015160a082015260e060c082015266ffffffffffffff82511660e0820152600060208301516040610100840152615029610120840182614946565b9695505050505050565b6000806040838503121561504657600080fd5b8235915061505660208401614e5a565b90509250929050565b60006020828403121561507157600080fd5b815161130381614d0d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150b157600080fd5b83018035915067ffffffffffffffff8211156150cc57600080fd5b602001915036819003821315614b0357600080fd5b60e0810161359d828473ffffffffffffffffffffffffffffffffffffffff815116825263ffffffff6020820151166020830152604081015167ffffffffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a0810151151560a083015260c0810151151560c08301525050565b60006020828403121561517257600080fd5b8151611303816148a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff8281168282160390808211156151fc576151fc6151ac565b5092915050565b808202600082127f80000000000000000000000000000000000000000000000000000000000000008414161561523b5761523b6151ac565b818105831482151761359d5761359d6151ac565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151604084526152936040850182614946565b602093840151949093019390935250919050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff8316602082015260606040820152600061120b606083018461527e565b6040805190810167ffffffffffffffff811182821017156153055761530561517d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156153345761533461517d565b604052919050565b80516fffffffffffffffffffffffffffffffff81168114614a3d57600080fd5b60006080828403121561536e57600080fd5b6040516080810181811067ffffffffffffffff821117156153915761539161517d565b6040529050806153a08361533c565b81526153ae6020840161533c565b60208201526153bf6040840161533c565b60408201526153d06060840161533c565b60608201525092915050565b6000608082840312156153ee57600080fd5b611303838361535c565b73ffffffffffffffffffffffffffffffffffffffff815116825263ffffffff60208201511660208301526040810151604083015267ffffffffffffffff60608201511660608301526000608082015160c0608085015261545b60c0850182614946565b905060a083015184820360a08601526148578282614946565b60408152600061548760408301856153f8565b905082151560208301529392505050565b6000604082840312156154aa57600080fd5b6154b26152e2565b9050815181526020820151602082015292915050565b6000604082840312156154da57600080fd5b6113038383615498565b63ffffffff848116825260406020808401829052838201859052600092869160608601855b88811015615549578361551b86614a29565b1682528285013561552b816148a8565b67ffffffffffffffff16828401529385019390850190600101615509565b509998505050505050505050565b67ffffffffffffffff8181168382160190808211156151fc576151fc6151ac565b600061014073ffffffffffffffffffffffffffffffffffffffff835116845263ffffffff60208401511660208501526040830151604085015267ffffffffffffffff606084015116606085015261ffff608084015116608085015260a08301518160a08601526155ea82860182614946565b91505060c083015161563660c086018280516fffffffffffffffffffffffffffffffff908116835260208083015182169084015260408083015182169084015260609182015116910152565b509392505050565b6020815260006113036020830184615578565b60006020828403121561566357600080fd5b5051919050565b60006040828403121561567c57600080fd5b6156846152e2565b82358152602083013560208201528091505092915050565b6000602082840312156156ae57600080fd5b61130382614e5a565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260ff831660408201526080606082015260006150296080830184614946565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1681528360148201527fff000000000000000000000000000000000000000000000000000000000000008360f81b16603482015260008251615763816035850160208701614922565b9190910160350195945050505050565b86815260ff8616602082015273ffffffffffffffffffffffffffffffffffffffff8516604082015283606082015260ff8316608082015260c060a082015260006157c060c0830184614946565b98975050505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528460148201527fff000000000000000000000000000000000000000000000000000000000000008460f81b1660348201528183603583013760009101603501908152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260ff8416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061010061594a838673ffffffffffffffffffffffffffffffffffffffff815116825263ffffffff6020820151166020830152604081015167ffffffffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a0810151151560a083015260c0810151151560c08301525050565b8060e08401526148578184018561527e565b60008060a0838503121561596f57600080fd5b825161597a816148a8565b9150615056846020850161535c565b60808152600061599c60808301866153f8565b90506159b5602083018580518252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b6000608082840312156159eb57600080fd5b6040516060810181811067ffffffffffffffff82111715615a0e57615a0e61517d565b8060405250809150825181526020830151615a28816148a8565b6020820152615a3a8460408501615498565b60408201525092915050565b600060808284031215615a5857600080fd5b61130383836159d9565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c82015260008251615ad081602c850160208701614922565b91909101602c0195945050505050565b604081526000615af36040830185615578565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060a08385031215615b2b57600080fd5b615b3584846159d9565b9150608083015167ffffffffffffffff80821115615b5257600080fd5b9084019060408287031215615b6657600080fd5b615b6e6152e2565b825166ffffffffffffff81168114615b8557600080fd5b815260208381015183811115615b9a57600080fd5b80850194505087601f850112615baf57600080fd5b835183811115615bc157615bc161517d565b615bd382601f19601f8401160161530b565b93508084528882828701011115615be957600080fd5b615bf881838601848801614922565b5081019190915292959294509192505050565b60008251615c1d818460208701614922565b9190910192915050565b600060208284031215615c3957600080fd5b815161130381614ba956fea2646970667358221220f172ea2bb53def1b83308ecdabc708ae589c1baf075fbf05bfc3a57659dfecde64736f6c634300081600336101a06040523480156200001257600080fd5b5060405162001f0e38038062001f0e833981016040819052620000359162000292565b6040805180820190915260018152603160f81b60208201528390819081856003620000618382620003a8565b506004620000708282620003a8565b50620000829150839050600562000140565b610120526200009381600662000140565b61014052815160208084019190912060e052815190820120610100524660a0526200012160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250336101605260ff166101805250620004ce9050565b60006020835110156200016057620001588362000179565b905062000173565b816200016d8482620003a8565b5060ff90505b92915050565b600080829050601f81511115620001b0578260405163305a27a960e01b8152600401620001a7919062000474565b60405180910390fd5b8051620001bd82620004a9565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620001f8578181015183820152602001620001de565b50506000910152565b600082601f8301126200021357600080fd5b81516001600160401b0380821115620002305762000230620001c5565b604051601f8301601f19908116603f011681019082821181831017156200025b576200025b620001c5565b816040528381528660208588010111156200027557600080fd5b62000288846020830160208901620001db565b9695505050505050565b600080600060608486031215620002a857600080fd5b83516001600160401b0380821115620002c057600080fd5b620002ce8783880162000201565b94506020860151915080821115620002e557600080fd5b50620002f48682870162000201565b925050604084015160ff811681146200030c57600080fd5b809150509250925092565b600181811c908216806200032c57607f821691505b6020821081036200034d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a3576000816000526020600020601f850160051c810160208610156200037e5750805b601f850160051c820191505b818110156200039f578281556001016200038a565b5050505b505050565b81516001600160401b03811115620003c457620003c4620001c5565b620003dc81620003d5845462000317565b8462000353565b602080601f831160018114620004145760008415620003fb5750858301515b600019600386901b1c1916600185901b1785556200039f565b600085815260208120601f198616915b82811015620004455788860151825594840194600190910190840162000424565b5085821015620004645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000495816040850160208701620001db565b601f01601f19169190910160400192915050565b805160208083015191908110156200034d5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516119c16200054d60003960006101a80152600081816102070152818161048f015261050c015260006105d1015260006105a601526000610ed001526000610ea801526000610e0301526000610e2d01526000610e5701526119c16000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806370a08231116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb146102e0578063d505accf146102f3578063dd62ed3e1461030657600080fd5b806395d89b41146102c5578063a457c2d7146102cd57600080fd5b806370a082311461024e57806379cc6790146102845780637ecebe001461029757806384b0196e146102aa57600080fd5b8063313ce5671161010957806339509351116100ee57806339509351146101da57806340c10f19146101ed5780636c099dee1461020257600080fd5b8063313ce567146101a15780633644e515146101d257600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361034c565b60405161015091906116a9565b60405180910390f35b61016c6101673660046116ec565b6103de565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004611716565b6103f8565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610150565b61018061041c565b61016c6101e83660046116ec565b61042b565b6102006101fb3660046116ec565b610477565b005b6102297f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610150565b61018061025c366004611752565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102006102923660046116ec565b6104f4565b6101806102a5366004611752565b61056d565b6102b2610598565b604051610150979695949392919061176d565b61014361063d565b61016c6102db3660046116ec565b61064c565b61016c6102ee3660046116ec565b610722565b61020061030136600461182f565b610730565b6101806103143660046118a2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461035b906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610387906118d5565b80156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b5050505050905090565b6000336103ec8185856108ef565b60019150505b92915050565b600033610406858285610aa3565b610411858585610b7a565b506001949350505050565b6000610426610de9565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103ec9082908690610472908790611922565b6108ef565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104e6576040517fba06efeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104f08282610f21565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610563576040517fba06efeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104f08282611014565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120546103f2565b6000606080828080836105cc7f000000000000000000000000000000000000000000000000000000000000000060056111d0565b6105f77f000000000000000000000000000000000000000000000000000000000000000060066111d0565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60606004805461035b906118d5565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61041182868684036108ef565b6000336103ec818585610b7a565b8342111561079a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161070c565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107c98c61127b565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610831826112b0565b90506000610841828787876112f8565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161070c565b6108e38a8a8a6108ef565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610991576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161070c565b73ffffffffffffffffffffffffffffffffffffffff8216610a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161070c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b745781811015610b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161070c565b610b7484848484036108ef565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161070c565b73ffffffffffffffffffffffffffffffffffffffff8216610cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161070c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610d76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161070c565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b74565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015610e4f57507f000000000000000000000000000000000000000000000000000000000000000046145b15610e7957507f000000000000000000000000000000000000000000000000000000000000000090565b610426604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff8216610f9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161070c565b8060026000828254610fb09190611922565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166110b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161070c565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161070c565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610a96565b606060ff83146111ea576111e383611320565b90506103f2565b8180546111f6906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611222906118d5565b801561126f5780601f106112445761010080835404028352916020019161126f565b820191906000526020600020905b81548152906001019060200180831161125257829003601f168201915b505050505090506103f2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090208054600181018255905b50919050565b60006103f26112bd610de9565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006113098787878761135f565b915091506113168161144e565b5095945050505050565b6060600061132d83611604565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156113965750600090506003611445565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156113ea573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661143e57600060019250925050611445565b9150600090505b94509492505050565b60008160048111156114625761146261195c565b0361146a5750565b600181600481111561147e5761147e61195c565b036114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161070c565b60028160048111156114f9576114f961195c565b03611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161070c565b60038160048111156115745761157461195c565b03611601576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161070c565b50565b600060ff8216601f8111156103f2576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815180845260005b8181101561166b5760208185018101518683018201520161164f565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006116bc6020830184611645565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116e757600080fd5b919050565b600080604083850312156116ff57600080fd5b611708836116c3565b946020939093013593505050565b60008060006060848603121561172b57600080fd5b611734846116c3565b9250611742602085016116c3565b9150604084013590509250925092565b60006020828403121561176457600080fd5b6116bc826116c3565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e060208401526117aa60e084018a611645565b83810360408501526117bc818a611645565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561181d57835183529284019291840191600101611801565b50909c9b505050505050505050505050565b600080600080600080600060e0888a03121561184a57600080fd5b611853886116c3565b9650611861602089016116c3565b95506040880135945060608801359350608088013560ff8116811461188557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156118b557600080fd5b6118be836116c3565b91506118cc602084016116c3565b90509250929050565b600181811c908216806118e957607f821691505b6020821081036112aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b808201808211156103f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212208990d606b290073c0715d9fd5d22da8fd11c226775628500dd209cb0abed01ce64736f6c63430008160033",
1745
+ "deployedBytecode": "0x60806040526004361061024f5760003560e01c8063715018a611610138578063c0b78967116100b0578063cc32d1761161007f578063e5328e0611610064578063e5328e06146108a6578063f2fde38b146108bb578063fc0c546a146108db57600080fd5b8063cc32d1761461081b578063d621ad3f1461086e57600080fd5b8063c0b7896714610798578063c7c7f5b3146107b8578063c859c483146107d9578063cbef2aa9146107f957600080fd5b8063857749b0116101075780639561b12f116100ec5780639561b12f1461073c5780639f68b9641461075c578063bedb86fb1461077857600080fd5b8063857749b0146106dd5780638da5cb5b1461071157600080fd5b8063715018a614610667578063764f6a781461067c5780637bde82f21461069d5780637e3e8a4c146106bd57600080fd5b80632bc5114c116101cb5780633faa12c51161019a57806347e7ef241161017f57806347e7ef24146105d2578063484267a4146105f35780635fcbd2851461061357600080fd5b80633faa12c514610592578063461bb0b9146105b257600080fd5b80632bc5114c146103e9578063341a4648146104f957806338da6b8e1461050c5780633b6f743b1461057257600080fd5b806316909bca11610222578063192adc5d11610207578063192adc5d14610358578063200d2ed2146103855780632708987a146103c957600080fd5b806316909bca1461030f57806316a96d1e1461032b57600080fd5b806309bbb201146102545780630d35b415146102765780630f12f7ab146102ae578063156a0d0f146102ce575b600080fd5b34801561026057600080fd5b5061027461026f3660046148be565b61090f565b005b34801561028257600080fd5b506102966102913660046148ed565b610b2f565b6040516102a593929190614972565b60405180910390f35b3480156102ba57600080fd5b506102746102c9366004614a42565b611065565b3480156102da57600080fd5b50604080517f02e49c2c00000000000000000000000000000000000000000000000000000000815260006020820152016102a5565b34801561031b57600080fd5b5060006040516102a59190614a80565b34801561033757600080fd5b5061034b610346366004614b0a565b611101565b6040516102a59190614b64565b34801561036457600080fd5b50610378610373366004614bb7565b611216565b6040516102a59190614bfe565b34801561039157600080fd5b506001546103b79074010000000000000000000000000000000000000000900460ff1681565b60405160ff90911681526020016102a5565b3480156103d557600080fd5b506102746103e4366004614c15565b61130a565b3480156103f557600080fd5b5061048b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260015473ffffffffffffffffffffffffffffffffffffffff908116825260025481166020830152600654811692820192909252600354821660608201526004548216608082015260055490911660a082015290565b6040516102a59190600060c08201905073ffffffffffffffffffffffffffffffffffffffff8084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b610274610507366004614c9b565b61156f565b34801561051857600080fd5b5061054f610527366004614cb4565b60076020526000908152604090205461ffff81169062010000900467ffffffffffffffff1682565b6040805161ffff909316835267ffffffffffffffff9091166020830152016102a5565b34801561057e57600080fd5b5061037861058d366004614bb7565b61166f565b34801561059e57600080fd5b506102746105ad366004614ccf565b611943565b3480156105be57600080fd5b506102746105cd366004614cfb565b611a16565b6105e56105e0366004614d2f565b611c1c565b6040519081526020016102a5565b3480156105ff57600080fd5b506105e561060e366004614d5b565b611ebe565b34801561061f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a5565b34801561067357600080fd5b5061027461201a565b61068f61068a366004614d78565b61202e565b6040516102a5929190614e1a565b3480156106a957600080fd5b506105e56106b8366004614e35565b6123da565b3480156106c957600080fd5b506102746106d8366004614e6b565b612630565b3480156106e957600080fd5b506103b77f000000000000000000000000000000000000000000000000000000000000000081565b34801561071d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610642565b34801561074857600080fd5b50610274610757366004614c15565b612a30565b34801561076857600080fd5b50604051600181526020016102a5565b34801561078457600080fd5b50610274610793366004614ee0565b612c0a565b3480156107a457600080fd5b506102746107b3366004614efd565b612c89565b6107cb6107c6366004614d78565b612f83565b6040516102a5929190614f88565b3480156107e557600080fd5b506102746107f4366004614fac565b612fb7565b61080c610807366004614d78565b6130e5565b6040516102a593929190614fda565b34801561082757600080fd5b50600154610855907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102a5565b34801561087a57600080fd5b506105e5610889366004615033565b600860209081526000928352604080842090915290825290205481565b3480156108b257600080fd5b506105e5613379565b3480156108c757600080fd5b506102746108d6366004614d5b565b61340f565b3480156108e757600080fd5b506106427f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099e919061505f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a02576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c6800000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b158015610a9357600080fd5b505af1158015610aa7573d6000803e3d6000fd5b50505063ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600760205260409020610aee92509083906134cb16565b5060405167ffffffffffffffff821681527fe1825c00ade29eaff76bae6774e13bc96e688c663c5e42944aae9e104000bce89060200160405180910390a150565b60408051808201909152600080825260208201526060610b62604051806040016040528060008152602001600081525090565b600080610b6d6135a3565b9092509050610bd360076000610b8660208a018a614cb4565b63ffffffff1681526020810191909152604001600020547f00000000000000000000000000000000000000000000000000000000000000006201000090910467ffffffffffffffff160290565b60208601819052600090604088013511610bf1578660400135610bf7565b85602001515b90506000610c0482613705565b6040805160e08101909152338152909150600090602080820190610c2a908c018c614cb4565b63ffffffff1681526020018367ffffffffffffffff1681526020018667ffffffffffffffff1681526020018567ffffffffffffffff168152602001610cb0600760008d6000016020810190610c7f9190614cb4565b63ffffffff1663ffffffff1681526020019081526020016000205462010000900467ffffffffffffffff9081161490565b15158152602001610ccd610cc760c08d018d61507c565b15919050565b151590526001546040517f5b64903b00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690635b64903b90610d2d9085906004016150e1565b602060405180830381865afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e9190615160565b90508267ffffffffffffffff168167ffffffffffffffff1614610ff55760408051600180825281830190925290816020015b604080518082019091526000815260606020820152815260200190600190039081610da05790505097508267ffffffffffffffff168167ffffffffffffffff161015610ec2576040518060400160405280610e37610e328487610e0391906151db565b67ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b61373f565b610e61907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615203565b81526020016040518060400160405280600c81526020017f70726f746f636f6c20666565000000000000000000000000000000000000000081525081525088600081518110610eb257610eb261524f565b6020026020010181905250610ff5565b8267ffffffffffffffff168167ffffffffffffffff161115610ff5576000610eea84836151db565b9050610ef682826137f5565b909250905067ffffffffffffffff80851690831603610f55576040805160008082526020820190925290610f4d565b604080518082019091526000815260606020820152815260200190600190039081610f255790505b509850610ff3565b6040518060400160405280610f96610e328467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020016040518060400160405280600681526020017f726577617264000000000000000000000000000000000000000000000000000081525081525089600081518110610fe757610fe761524f565b60200260200101819052505b505b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff84160287527f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff821602602088015250969895975093955050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163381146110b7576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5063ffffffff91909116600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff909216919091179055565b6040805160808101825260008082526020820181905291810182905260608101919091526001546040805160606020601f88018190040282018101835291810186815273ffffffffffffffffffffffffffffffffffffffff9093169263df0810919233928a9290918291908b908b90819085018382808284376000920191909152505050908252506020018790526040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526111ca939291906004016152a7565b608060405180830381865afa1580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b91906153dc565b90505b949350505050565b604080518082019091526000808252602082015261123a610cc760c085018561507c565b611270576040517f2d9560be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff16633292cf026112a561129e6040870135613705565b869061384a565b846040518363ffffffff1660e01b81526004016112c3929190615474565b6040805180830381865afa1580156112df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130391906154c8565b9392505050565b60015474010000000000000000000000000000000000000000900460ff166002198101611363576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff8216016113a1576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905560045473ffffffffffffffffffffffffffffffffffffffff16338114611432576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b838110156114ed57368585838181106114505761145061524f565b905060400201905060006114a982602001602081019061147091906148be565b600760006114816020870187614cb4565b63ffffffff1663ffffffff1681526020019081526020016000206134cb90919063ffffffff16565b905080156114e3576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050600101611435565b507fce105e156370093e6600169f7c01277f740d45fbcf95435227ce6f43ad0c3abd858585604051611521939291906154e4565b60405180910390a15050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055505050565b60065473ffffffffffffffffffffffffffffffffffffffff163381146115c1576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115ca82613954565b60006115d6338461398c565b905080600160158282829054906101000a900467ffffffffffffffff166115fd9190615557565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa064a2faa279f4d67c85c8fc69d4ebb7de2739a9e6dd864dfdd1b9e066d4bfd081604051611662919067ffffffffffffffff91909116815260200190565b60405180910390a1505050565b604080518082019091526000808252602082015260006116928460400135613705565b90508067ffffffffffffffff166000036116d8576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116ea610cc760c087018761507c565b9050801561177f5760035473ffffffffffffffffffffffffffffffffffffffff16633292cf0261171a878561384a565b866040518363ffffffff1660e01b8152600401611738929190615474565b6040805180830381865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177891906154c8565b925061193b565b6000604051806040016040528087806080019061179c919061507c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016117e360a089018961507c565b9091525060015490915060009073ffffffffffffffffffffffffffffffffffffffff1663df0810913361181960208b018b614cb4565b856040518463ffffffff1660e01b8152600401611838939291906152a7565b608060405180830381865afa158015611855573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187991906153dc565b60035490915073ffffffffffffffffffffffffffffffffffffffff1663bae02db66118da86600760006118af60208e018e614cb4565b63ffffffff90811682526020820192909252604001600020548c929161ffff9091169087906139f416565b6040518263ffffffff1660e01b81526004016118f6919061563e565b6040805180830381865afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193691906154c8565b945050505b505092915050565b61194b613af0565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff16036119b0576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff80831660009081526007602052604090206119d2918390613b7116565b6040805163ffffffff8416815282151560208201527faf6b8dd4c5a827e03f548d06181b36aaba61e22436ff1cfa9bc409d576366a60910160405180910390a15050565b611a1e613af0565b611a2b6020820182614d5b565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611a806040820160208301614d5b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611ad56060820160408301614d5b565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611b2a6080820160608301614d5b565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611b7f60a0820160808301614d5b565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611bd460c0820160a08301614d5b565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b60015460009074010000000000000000000000000000000000000000900460ff166002198101611c78576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff821601611cb6576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055611cfe83613954565b6000611d0a338561398c565b90507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8216026040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018390529194507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b158015611dce57600080fd5b505af1158015611de2573d6000803e3d6000fd5b50505063ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600760205260409020611e299250908390613c7116565b60405183815273ffffffffffffffffffffffffffffffffffffffff86169033907f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7906020015b60405180910390a35050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905592915050565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660009081526007602052604081205467ffffffffffffffff62010000909104167f00000000000000000000000000000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff8316611f4a57809150612014565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fff9190615651565b905080821161200e5781612010565b805b9250505b50919050565b612022613af0565b61202c6000613d5c565b565b612036614860565b60015460009074010000000000000000000000000000000000000000900460ff166002198101612092576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff8216016120d0576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905561211f610cc760c088018861507c565b612155576040517f2d9560be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121648760400135613705565b905060007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8316026040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b15801561222657600080fd5b505af115801561223a573d6000803e3d6000fd5b5050604051838152600092503391507f27d4634c833b7622a0acddbf7f746183625f105945e95c723ad1d5a9f2a0b6fc9060200160405180910390a36000806122bb61228960208c018c614cb4565b856122978d60600135613705565b60408051606081018252600091810182815281526020810191909152600190613dd1565b5090925090506122d86122d160208c018c614cb4565b838361407f565b60006122f36122ec368c90038c018c61566a565b60006140f4565b90506123018b82858c614149565b97507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff841602885190975033907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a61236560208f018f614cb4565b6040805163ffffffff90921682526020820189905281018b905260600160405180910390a35050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905550939792965091945050505050565b60015460009074010000000000000000000000000000000000000000900460ff166002198101612436576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff821601612474576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905560006124be85613705565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600760205260409020919250612504919083906141f916565b90507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8216026040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290529093507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b1580156125c457600080fd5b505af11580156125d8573d6000803e3d6000fd5b505050506125e6848461422d565b60405183815273ffffffffffffffffffffffffffffffffffffffff85169033907f27d4634c833b7622a0acddbf7f746183625f105945e95c723ad1d5a9f2a0b6fc90602001611e6f565b60015474010000000000000000000000000000000000000000900460ff166002198101612689576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff8216016126c7576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905560035473ffffffffffffffffffffffffffffffffffffffff16338114612758576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061276d610e0360408601602087016148be565b9050600061277e6020860186614d5b565b9050600061278c8284614272565b905060008061279e604089018961507c565b905011905060608115612816576128136127be60608d0160408e016148be565b6127cb60208e018e614cb4565b876127d960408d018d61507c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061429f92505050565b90505b821561292c5781156128c35773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637cb59012858c61287060808d0160608e0161569c565b856040518563ffffffff1660e01b815260040161289094939291906156b7565b600060405180830381600087803b1580156128aa57600080fd5b505af11580156128be573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff84168a7fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61290960208f018f614cb4565b6040805163ffffffff9092168252602082018a90520160405180910390a36129e4565b600061293e60808a0160608b0161569c565b905060008587838560405160200161295994939291906156f5565b60405160208183030381529060405290508080519060200120600860008e815260200190815260200160002060008d60ff1660ff168152602001908152602001600020819055507fb0a708e82202f7fac05dc44361fd47adf79042795add3d2ed05155d3e5e9fa7e8c8c888a86886040516129d996959493929190615773565b60405180910390a150505b5050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055505050505050505050565b60015474010000000000000000000000000000000000000000900460ff166002198101612a89576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff821601612ac7576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167402000000000000000000000000000000000000000017905560045473ffffffffffffffffffffffffffffffffffffffff16338114612b58576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83811015612bd65736858583818110612b7657612b7661524f565b9050604002019050612bcd816020016020810190612b9491906148be565b60076000612ba56020860186614cb4565b63ffffffff1663ffffffff168152602001908152602001600020613c7190919063ffffffff16565b50600101612b5b565b507f10c5f2b007767d266c6c75c86ae9ed0c74e6320b30bda231af7396a990e7263c858585604051611521939291906154e4565b60025473ffffffffffffffffffffffffffffffffffffffff16338114612c5c576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81612c68576001612c6b565b60035b600160146101000a81548160ff021916908360ff1602179055505050565b60015474010000000000000000000000000000000000000000900460ff166002198101612ce2576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff821601612d20576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055604051600090612d7b90889088908890889088906020016157cc565b60408051601f19818403018152918152815160209283012060008c81526008845282812060ff8d1682529093529120549091508114612de6576040517faba8b6ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600089815260086020908152604080832060ff8c168452909152812055612e0d878761422d565b8215612ec0576040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290612e8d908a908d908a908a908a9060040161583e565b600060405180830381600087803b158015612ea757600080fd5b505af1158015612ebb573d6000803e3d6000fd5b505050505b6040805163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020810188905273ffffffffffffffffffffffffffffffffffffffff8916918b917fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c910160405180910390a35050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905550505050505050565b612f8b614860565b6040805180820190915260008082526020820152612faa8585856130e5565b5090969095509350505050565b60065473ffffffffffffffffffffffffffffffffffffffff16338114613009576040517f5bd25eff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160158282829054906101000a900467ffffffffffffffff1661302e91906151db565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506130908361308b8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b61422d565b6040805173ffffffffffffffffffffffffffffffffffffffff8516815267ffffffffffffffff841660208201527fa46907b6b80b882da80d6e36cc905dde57fafff0a5442c8898526fe952d1e6539101611662565b6130ed614860565b604080518082019091526000808252602082015260408051808201909152600081526060602082015260015474010000000000000000000000000000000000000000900460ff16600219810161316f576040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60011960ff8216016131ad576040517f76a9ad7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055600080806131f98a6142d1565b925092509250604051806040016040528061323d8567ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff85160290529550600061328e613287368c90038c018c61566a565b88516140f4565b90506132a0610cc760c08d018d61507c565b156132b8576132b18b82858c614149565b97506132cb565b6132c58b82858c866143ee565b90985095505b875133907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a6132fd60208f018f614cb4565b8a516020808d01516040805163ffffffff90951685529184019290925282015260600160405180910390a35050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555093979296509094509092505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061340a9190615651565b905090565b613417613af0565b73ffffffffffffffffffffffffffffffffffffffff81166134bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6134c881613d5c565b50565b815460009062010000900467ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000001810161351157600191505061359d565b8267ffffffffffffffff168167ffffffffffffffff16101561355f576040517f2b4d0ad500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff16620100009184900367ffffffffffffffff16919091021783555b92915050565b60008061363d7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190615651565b613705565b6001546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152750100000000000000000000000000000000000000000090910467ffffffffffffffff16906136f3907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015613614573d6000803e3d6000fd5b6136fd91906151db565b915091509091565b600061359d7f000000000000000000000000000000000000000000000000000000000000000083816137395761373961589b565b0461451e565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156137f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016134b6565b5090565b600154600090819067ffffffffffffffff7501000000000000000000000000000000000000000000909104811690841681101561383b5780848603019250809150613842565b8492508391505b509250929050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a08101919091526040805160c0810190915233815260208082019061389e90860186614cb4565b63ffffffff1681526020858101359082015267ffffffffffffffff841660408201526060016138d060a086018661507c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001613917608086018661507c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509392505050565b34156134c8576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061399782613705565b90507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff821602915061359d7f00000000000000000000000000000000000000000000000000000000000000008430856145b8565b613a4e6040805160e081018252600080825260208083018290528284018290526060808401839052608080850184905260a0850182905285519081018652838152918201839052938101829052928301529060c082015290565b6040805160e08101909152338152602080820190613a6e90880188614cb4565b63ffffffff1681526020878101359082015267ffffffffffffffff8616604082015261ffff85166060820152608001613aaa60a088018861507c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461202c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016134b6565b815462010000900467ffffffffffffffff168115613c025767ffffffffffffffff811615613bcb576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff1669ffffffffffffffff0000178355505050565b67ffffffffffffffff81811614613c45576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff1683555b505050565b815462010000900467ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000018101613caf57505050565b613cb98282615557565b90507fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000167ffffffffffffffff821601613d1e576040517f5e10aa2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff9091161790915550565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051608081018252600080825260208201819052918101829052606081018290528190600080613e016135a3565b63ffffffff8c166000908152600760205260408120549294509092509067ffffffffffffffff620100009091048116146040805160e08101825233815263ffffffff8e16602082015267ffffffffffffffff8d81168284015286811660608301528516608082015282151560a08201528a151560c082015260015491517f07c84e390000000000000000000000000000000000000000000000000000000081529293509173ffffffffffffffffffffffffffffffffffffffff909116906307c84e3990613ed49084908c906004016158ca565b60a0604051808303816000875af1158015613ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f17919061595c565b909750945067ffffffffffffffff808c169088161015613f7a57868b03600160158282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061400f565b8a67ffffffffffffffff168767ffffffffffffffff16111561400f57613fa2878c89036137f5565b909750955067ffffffffffffffff86161561400f576001805467ffffffffffffffff750100000000000000000000000000000000000000000080830482168a9003909116027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff9091161790555b8967ffffffffffffffff168767ffffffffffffffff161080614039575067ffffffffffffffff8716155b15614070576040517fa1e8654500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050955095509592505050565b63ffffffff80841660009081526007602052604090206140a19184906134cb16565b5067ffffffffffffffff811615613c6c5763ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600760205260409020613c6c918390613c7116565b604080518082019091526000808252602082015282513414614142576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090919050565b614151614860565b602084015115614168576141688460200151614600565b600354845173ffffffffffffffffffffffffffffffffffffffff9091169063ff6fb30090614196888761384a565b87866040518563ffffffff1660e01b81526004016141b693929190615989565b60806040518083038185885af11580156141d4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061120b9190615a46565b815460009067ffffffffffffffff620100009091048116908316811061421f5782614221565b805b915061193b84836134cb565b60006142398383614272565b905080613c6c576040517f06a6167e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113037f00000000000000000000000000000000000000000000000000000000000000008484614694565b6060848484846040516020016142b89493929190615a62565b6040516020818303038152906040529050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905281906000614308610cc760c087018761507c565b905061431833866040013561398c565b9350614337604051806040016040528060608152602001600081525090565b816143a2576040805180820190915280614354608089018961507c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161439b60a089018961507c565b9091525090505b6143c76143b26020880188614cb4565b866143c08960600135613705565b8585613dd1565b9195509093506143e590506143df6020880188614cb4565b8561474d565b50509193909250565b6143f6614860565b604080518082019091526000815260606020820152602086015115614447576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354865173ffffffffffffffffffffffffffffffffffffffff909116906361ccdbfb906144ab886007600061448060208f018f614cb4565b63ffffffff90811682526020820192909252604001600020548d929161ffff909116908a906139f416565b876040518463ffffffff1660e01b81526004016144c9929190615ae0565b60006040518083038185885af11580156144e7573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526145109190810190615b18565b909890975095505050505050565b600067ffffffffffffffff8211156137f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f342062697473000000000000000000000000000000000000000000000000000060648201526084016134b6565b6145c48484848461475c565b6145fa576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60055473ffffffffffffffffffffffffffffffffffffffff1661464f576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546134c89073ffffffffffffffffffffffffffffffffffffffff16337f0000000000000000000000000000000000000000000000000000000000000000846145b8565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905260009061120e9085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526147bd565b61475882828361407f565b5050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905260009061120b9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084016146e9565b60008060008473ffffffffffffffffffffffffffffffffffffffff16846040516147e79190615c0b565b6000604051808303816000865af19150503d8060008114614824576040519150601f19603f3d011682016040523d82523d6000602084013e614829565b606091505b50915091508161483a576000614857565b805115806148575750808060200190518101906148579190615c27565b95945050505050565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016148a3604051806040016040528060008152602001600081525090565b905290565b67ffffffffffffffff811681146134c857600080fd5b6000602082840312156148d057600080fd5b8135611303816148a8565b600060e0828403121561201457600080fd5b6000602082840312156148ff57600080fd5b813567ffffffffffffffff81111561491657600080fd5b61120e848285016148db565b60005b8381101561493d578181015183820152602001614925565b50506000910152565b6000815180845261495e816020860160208601614922565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015614a0b578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400185528151805188528301518388018790526149f887890182614946565b97505093820193908201906001016149ae565b5050875160608801525050506020850151608085015250905061120e565b803563ffffffff81168114614a3d57600080fd5b919050565b60008060408385031215614a5557600080fd5b614a5e83614a29565b9150602083013561ffff81168114614a7557600080fd5b809150509250929050565b6020810160028310614abb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008083601f840112614ad357600080fd5b50813567ffffffffffffffff811115614aeb57600080fd5b602083019150836020828501011115614b0357600080fd5b9250929050565b60008060008060608587031215614b2057600080fd5b614b2985614a29565b9350602085013567ffffffffffffffff811115614b4557600080fd5b614b5187828801614ac1565b9598909750949560400135949350505050565b6080810161359d828480516fffffffffffffffffffffffffffffffff908116835260208083015182169084015260408083015182169084015260609182015116910152565b80151581146134c857600080fd5b60008060408385031215614bca57600080fd5b823567ffffffffffffffff811115614be157600080fd5b614bed858286016148db565b9250506020830135614a7581614ba9565b81518152602080830151908201526040810161359d565b600080600060408486031215614c2a57600080fd5b614c3384614a29565b9250602084013567ffffffffffffffff80821115614c5057600080fd5b818601915086601f830112614c6457600080fd5b813581811115614c7357600080fd5b8760208260061b8501011115614c8857600080fd5b6020830194508093505050509250925092565b600060208284031215614cad57600080fd5b5035919050565b600060208284031215614cc657600080fd5b61130382614a29565b60008060408385031215614ce257600080fd5b614ceb83614a29565b91506020830135614a7581614ba9565b600060c0828403121561201457600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146134c857600080fd5b60008060408385031215614d4257600080fd5b8235614d4d81614d0d565b946020939093013593505050565b600060208284031215614d6d57600080fd5b813561130381614d0d565b60008060008385036080811215614d8e57600080fd5b843567ffffffffffffffff811115614da557600080fd5b614db1878288016148db565b9450506040601f1982011215614dc657600080fd5b506020840191506060840135614ddb81614d0d565b809150509250925092565b8051825267ffffffffffffffff60208201511660208301526040810151613c6c604084018280518252602090810151910152565b60a08101614e288285614de6565b8260808301529392505050565b60008060408385031215614e4857600080fd5b823591506020830135614a7581614d0d565b803560ff81168114614a3d57600080fd5b60008060008084860360c0811215614e8257600080fd5b6060811215614e9057600080fd5b5084935060608501359250614ea760808601614e5a565b915060a085013567ffffffffffffffff811115614ec357600080fd5b850160808188031215614ed557600080fd5b939692955090935050565b600060208284031215614ef257600080fd5b813561130381614ba9565b600080600080600080600060c0888a031215614f1857600080fd5b87359650614f2860208901614e5a565b95506040880135614f3881614d0d565b945060608801359350614f4d60808901614e5a565b925060a088013567ffffffffffffffff811115614f6957600080fd5b614f758a828b01614ac1565b989b979a50959850939692959293505050565b60c08101614f968285614de6565b82516080830152602083015160a0830152611303565b60008060408385031215614fbf57600080fd5b8235614fca81614d0d565b91506020830135614a75816148a8565b614fe48185614de6565b82516080820152602083015160a082015260e060c082015266ffffffffffffff82511660e0820152600060208301516040610100840152615029610120840182614946565b9695505050505050565b6000806040838503121561504657600080fd5b8235915061505660208401614e5a565b90509250929050565b60006020828403121561507157600080fd5b815161130381614d0d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150b157600080fd5b83018035915067ffffffffffffffff8211156150cc57600080fd5b602001915036819003821315614b0357600080fd5b60e0810161359d828473ffffffffffffffffffffffffffffffffffffffff815116825263ffffffff6020820151166020830152604081015167ffffffffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a0810151151560a083015260c0810151151560c08301525050565b60006020828403121561517257600080fd5b8151611303816148a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff8281168282160390808211156151fc576151fc6151ac565b5092915050565b808202600082127f80000000000000000000000000000000000000000000000000000000000000008414161561523b5761523b6151ac565b818105831482151761359d5761359d6151ac565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151604084526152936040850182614946565b602093840151949093019390935250919050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff8316602082015260606040820152600061120b606083018461527e565b6040805190810167ffffffffffffffff811182821017156153055761530561517d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156153345761533461517d565b604052919050565b80516fffffffffffffffffffffffffffffffff81168114614a3d57600080fd5b60006080828403121561536e57600080fd5b6040516080810181811067ffffffffffffffff821117156153915761539161517d565b6040529050806153a08361533c565b81526153ae6020840161533c565b60208201526153bf6040840161533c565b60408201526153d06060840161533c565b60608201525092915050565b6000608082840312156153ee57600080fd5b611303838361535c565b73ffffffffffffffffffffffffffffffffffffffff815116825263ffffffff60208201511660208301526040810151604083015267ffffffffffffffff60608201511660608301526000608082015160c0608085015261545b60c0850182614946565b905060a083015184820360a08601526148578282614946565b60408152600061548760408301856153f8565b905082151560208301529392505050565b6000604082840312156154aa57600080fd5b6154b26152e2565b9050815181526020820151602082015292915050565b6000604082840312156154da57600080fd5b6113038383615498565b63ffffffff848116825260406020808401829052838201859052600092869160608601855b88811015615549578361551b86614a29565b1682528285013561552b816148a8565b67ffffffffffffffff16828401529385019390850190600101615509565b509998505050505050505050565b67ffffffffffffffff8181168382160190808211156151fc576151fc6151ac565b600061014073ffffffffffffffffffffffffffffffffffffffff835116845263ffffffff60208401511660208501526040830151604085015267ffffffffffffffff606084015116606085015261ffff608084015116608085015260a08301518160a08601526155ea82860182614946565b91505060c083015161563660c086018280516fffffffffffffffffffffffffffffffff908116835260208083015182169084015260408083015182169084015260609182015116910152565b509392505050565b6020815260006113036020830184615578565b60006020828403121561566357600080fd5b5051919050565b60006040828403121561567c57600080fd5b6156846152e2565b82358152602083013560208201528091505092915050565b6000602082840312156156ae57600080fd5b61130382614e5a565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260ff831660408201526080606082015260006150296080830184614946565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1681528360148201527fff000000000000000000000000000000000000000000000000000000000000008360f81b16603482015260008251615763816035850160208701614922565b9190910160350195945050505050565b86815260ff8616602082015273ffffffffffffffffffffffffffffffffffffffff8516604082015283606082015260ff8316608082015260c060a082015260006157c060c0830184614946565b98975050505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528460148201527fff000000000000000000000000000000000000000000000000000000000000008460f81b1660348201528183603583013760009101603501908152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260ff8416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061010061594a838673ffffffffffffffffffffffffffffffffffffffff815116825263ffffffff6020820151166020830152604081015167ffffffffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a0810151151560a083015260c0810151151560c08301525050565b8060e08401526148578184018561527e565b60008060a0838503121561596f57600080fd5b825161597a816148a8565b9150615056846020850161535c565b60808152600061599c60808301866153f8565b90506159b5602083018580518252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b6000608082840312156159eb57600080fd5b6040516060810181811067ffffffffffffffff82111715615a0e57615a0e61517d565b8060405250809150825181526020830151615a28816148a8565b6020820152615a3a8460408501615498565b60408201525092915050565b600060808284031215615a5857600080fd5b61130383836159d9565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c82015260008251615ad081602c850160208701614922565b91909101602c0195945050505050565b604081526000615af36040830185615578565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060a08385031215615b2b57600080fd5b615b3584846159d9565b9150608083015167ffffffffffffffff80821115615b5257600080fd5b9084019060408287031215615b6657600080fd5b615b6e6152e2565b825166ffffffffffffff81168114615b8557600080fd5b815260208381015183811115615b9a57600080fd5b80850194505087601f850112615baf57600080fd5b835183811115615bc157615bc161517d565b615bd382601f19601f8401160161530b565b93508084528882828701011115615be957600080fd5b615bf881838601848801614922565b5081019190915292959294509192505050565b60008251615c1d818460208701614922565b9190910192915050565b600060208284031215615c3957600080fd5b815161130381614ba956fea2646970667358221220f172ea2bb53def1b83308ecdabc708ae589c1baf075fbf05bfc3a57659dfecde64736f6c63430008160033",
1746
+ "linkReferences": {},
1747
+ "deployedLinkReferences": {}
1748
+ }