@super-protocol/sdk-js 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/build/BlockchainConnector.d.ts +48 -0
  2. package/build/BlockchainConnector.js +259 -0
  3. package/build/TIIGenerator.d.ts +21 -0
  4. package/build/TIIGenerator.js +251 -0
  5. package/build/constants.d.ts +7 -0
  6. package/build/constants.js +10 -0
  7. package/build/contracts/ActiveOffersList.json +131 -0
  8. package/build/contracts/ActiveOrdersList.json +74 -0
  9. package/build/contracts/Marks.json +79 -0
  10. package/build/contracts/Offers.json +999 -0
  11. package/build/contracts/Orders.json +984 -0
  12. package/build/contracts/Providers.json +440 -0
  13. package/build/contracts/ProvidersOffers.json +254 -0
  14. package/build/contracts/Staking.json +323 -0
  15. package/build/contracts/Superpro.json +197 -0
  16. package/build/contracts/SuperproToken.json +356 -0
  17. package/build/crypto/Crypto.d.ts +37 -0
  18. package/build/crypto/Crypto.js +181 -0
  19. package/build/crypto/index.d.ts +2 -0
  20. package/build/crypto/index.js +7 -0
  21. package/build/crypto/nodejs/AES.d.ts +24 -0
  22. package/build/crypto/nodejs/AES.js +152 -0
  23. package/build/crypto/nodejs/ARIA.d.ts +24 -0
  24. package/build/crypto/nodejs/ARIA.js +151 -0
  25. package/build/crypto/nodejs/ECIES.d.ts +6 -0
  26. package/build/crypto/nodejs/ECIES.js +94 -0
  27. package/build/crypto/nodejs/NativeCrypto.d.ts +54 -0
  28. package/build/crypto/nodejs/NativeCrypto.js +214 -0
  29. package/build/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
  30. package/build/crypto/nodejs/RSA-Hybrid.js +153 -0
  31. package/build/index.d.ts +65 -0
  32. package/build/index.js +117 -0
  33. package/build/logger.d.ts +4 -0
  34. package/build/logger.js +8 -0
  35. package/build/models/Ballot.d.ts +13 -0
  36. package/build/models/Ballot.js +76 -0
  37. package/build/models/Offer.d.ts +70 -0
  38. package/build/models/Offer.js +273 -0
  39. package/build/models/Order.d.ts +125 -0
  40. package/build/models/Order.js +540 -0
  41. package/build/models/Provider.d.ts +40 -0
  42. package/build/models/Provider.js +167 -0
  43. package/build/models/TCB.d.ts +80 -0
  44. package/build/models/TCB.js +315 -0
  45. package/build/models/TeeOffer.d.ts +118 -0
  46. package/build/models/TeeOffer.js +436 -0
  47. package/build/proto/Compression.d.ts +33 -0
  48. package/build/proto/Compression.js +146 -0
  49. package/build/proto/TRI.d.ts +122 -0
  50. package/build/proto/TRI.js +316 -0
  51. package/build/providers/storage/ChunksDownloadDecorator.d.ts +38 -0
  52. package/build/providers/storage/ChunksDownloadDecorator.js +284 -0
  53. package/build/providers/storage/IStorageProvider.d.ts +17 -0
  54. package/build/providers/storage/IStorageProvider.js +2 -0
  55. package/build/providers/storage/StorjStorageProvider.d.ts +26 -0
  56. package/build/providers/storage/StorjStorageProvider.js +389 -0
  57. package/build/providers/storage/getStorageProvider.d.ts +4 -0
  58. package/build/providers/storage/getStorageProvider.js +16 -0
  59. package/build/staticModels/ActiveOffers.d.ts +29 -0
  60. package/build/staticModels/ActiveOffers.js +144 -0
  61. package/build/staticModels/ActiveOrders.d.ts +21 -0
  62. package/build/staticModels/ActiveOrders.js +120 -0
  63. package/build/staticModels/Consensus.d.ts +63 -0
  64. package/build/staticModels/Consensus.js +373 -0
  65. package/build/staticModels/Epochs.d.ts +23 -0
  66. package/build/staticModels/Epochs.js +97 -0
  67. package/build/staticModels/LastBlocks.d.ts +25 -0
  68. package/build/staticModels/LastBlocks.js +96 -0
  69. package/build/staticModels/Marks.d.ts +13 -0
  70. package/build/staticModels/Marks.js +113 -0
  71. package/build/staticModels/OffersFactory.d.ts +37 -0
  72. package/build/staticModels/OffersFactory.js +227 -0
  73. package/build/staticModels/OrdersFactory.d.ts +137 -0
  74. package/build/staticModels/OrdersFactory.js +539 -0
  75. package/build/staticModels/ProviderRegistry.d.ts +81 -0
  76. package/build/staticModels/ProviderRegistry.js +311 -0
  77. package/build/staticModels/Staking.d.ts +26 -0
  78. package/build/staticModels/Staking.js +132 -0
  79. package/build/staticModels/Superpro.d.ts +20 -0
  80. package/build/staticModels/Superpro.js +99 -0
  81. package/build/staticModels/SuperproToken.d.ts +30 -0
  82. package/build/staticModels/SuperproToken.js +125 -0
  83. package/build/staticModels/Suspicious.d.ts +26 -0
  84. package/build/staticModels/Suspicious.js +99 -0
  85. package/build/staticModels/TeeOffersFactory.d.ts +36 -0
  86. package/build/staticModels/TeeOffersFactory.js +206 -0
  87. package/build/staticModels/Voting.d.ts +35 -0
  88. package/build/staticModels/Voting.js +111 -0
  89. package/build/store.d.ts +12 -0
  90. package/build/store.js +13 -0
  91. package/build/types/Ballot.d.ts +75 -0
  92. package/build/types/Ballot.js +49 -0
  93. package/build/types/Epoch.d.ts +21 -0
  94. package/build/types/Epoch.js +18 -0
  95. package/build/types/Events.d.ts +18 -0
  96. package/build/types/Events.js +2 -0
  97. package/build/types/Marks.d.ts +5 -0
  98. package/build/types/Marks.js +9 -0
  99. package/build/types/Offer.d.ts +63 -0
  100. package/build/types/Offer.js +41 -0
  101. package/build/types/Order.d.ts +61 -0
  102. package/build/types/Order.js +36 -0
  103. package/build/types/Origins.d.ts +12 -0
  104. package/build/types/Origins.js +10 -0
  105. package/build/types/Provider.d.ts +25 -0
  106. package/build/types/Provider.js +19 -0
  107. package/build/types/Staking.d.ts +27 -0
  108. package/build/types/Staking.js +22 -0
  109. package/build/types/Superpro.d.ts +24 -0
  110. package/build/types/Superpro.js +29 -0
  111. package/build/types/TcbData.d.ts +26 -0
  112. package/build/types/TcbData.js +21 -0
  113. package/build/types/TeeOffer.d.ts +22 -0
  114. package/build/types/TeeOffer.js +15 -0
  115. package/build/types/Web3.d.ts +26 -0
  116. package/build/types/Web3.js +2 -0
  117. package/build/types/blockchainConnector/StorageAccess.d.ts +8 -0
  118. package/build/types/blockchainConnector/StorageAccess.js +2 -0
  119. package/build/types/storage/StorageAccess.d.ts +6 -0
  120. package/build/types/storage/StorageAccess.js +2 -0
  121. package/build/types/storage/StorageFileAccess.d.ts +5 -0
  122. package/build/types/storage/StorageFileAccess.js +2 -0
  123. package/build/types/storage/StorageObject.d.ts +8 -0
  124. package/build/types/storage/StorageObject.js +2 -0
  125. package/build/utils/NonceTracker.d.ts +12 -0
  126. package/build/utils/NonceTracker.js +84 -0
  127. package/build/utils/TxManager.d.ts +21 -0
  128. package/build/utils/TxManager.js +159 -0
  129. package/build/utils.d.ts +38 -0
  130. package/build/utils.js +195 -0
  131. package/package.json +68 -0
  132. package/readme.md +40 -0
@@ -0,0 +1,984 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Orders",
4
+ "sourceName": "contracts/Orders.sol",
5
+ "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": true,
11
+ "internalType": "address",
12
+ "name": "consumer",
13
+ "type": "address"
14
+ },
15
+ {
16
+ "indexed": true,
17
+ "internalType": "uint256",
18
+ "name": "orderId",
19
+ "type": "uint256"
20
+ },
21
+ {
22
+ "indexed": false,
23
+ "internalType": "bool",
24
+ "name": "value",
25
+ "type": "bool"
26
+ }
27
+ ],
28
+ "name": "OrderAwaitingPaymentChanged",
29
+ "type": "event"
30
+ },
31
+ {
32
+ "anonymous": false,
33
+ "inputs": [
34
+ {
35
+ "indexed": true,
36
+ "internalType": "address",
37
+ "name": "consumer",
38
+ "type": "address"
39
+ },
40
+ {
41
+ "indexed": true,
42
+ "internalType": "uint256",
43
+ "name": "orderId",
44
+ "type": "uint256"
45
+ },
46
+ {
47
+ "indexed": false,
48
+ "internalType": "uint256",
49
+ "name": "change",
50
+ "type": "uint256"
51
+ }
52
+ ],
53
+ "name": "OrderChangedWithdrawn",
54
+ "type": "event"
55
+ },
56
+ {
57
+ "anonymous": false,
58
+ "inputs": [
59
+ {
60
+ "indexed": true,
61
+ "internalType": "address",
62
+ "name": "consumer",
63
+ "type": "address"
64
+ },
65
+ {
66
+ "indexed": true,
67
+ "internalType": "bytes32",
68
+ "name": "externalId",
69
+ "type": "bytes32"
70
+ },
71
+ {
72
+ "indexed": true,
73
+ "internalType": "uint256",
74
+ "name": "offerId",
75
+ "type": "uint256"
76
+ },
77
+ {
78
+ "indexed": false,
79
+ "internalType": "uint256",
80
+ "name": "orderId",
81
+ "type": "uint256"
82
+ }
83
+ ],
84
+ "name": "OrderCreated",
85
+ "type": "event"
86
+ },
87
+ {
88
+ "anonymous": false,
89
+ "inputs": [
90
+ {
91
+ "indexed": true,
92
+ "internalType": "address",
93
+ "name": "consumer",
94
+ "type": "address"
95
+ },
96
+ {
97
+ "indexed": true,
98
+ "internalType": "uint256",
99
+ "name": "orderId",
100
+ "type": "uint256"
101
+ },
102
+ {
103
+ "indexed": false,
104
+ "internalType": "uint256",
105
+ "name": "amount",
106
+ "type": "uint256"
107
+ }
108
+ ],
109
+ "name": "OrderDepositRefilled",
110
+ "type": "event"
111
+ },
112
+ {
113
+ "anonymous": false,
114
+ "inputs": [
115
+ {
116
+ "indexed": true,
117
+ "internalType": "address",
118
+ "name": "consumer",
119
+ "type": "address"
120
+ },
121
+ {
122
+ "indexed": true,
123
+ "internalType": "uint256",
124
+ "name": "orderId",
125
+ "type": "uint256"
126
+ },
127
+ {
128
+ "indexed": false,
129
+ "internalType": "uint256",
130
+ "name": "value",
131
+ "type": "uint256"
132
+ }
133
+ ],
134
+ "name": "OrderDepositSpentChanged",
135
+ "type": "event"
136
+ },
137
+ {
138
+ "anonymous": false,
139
+ "inputs": [
140
+ {
141
+ "indexed": true,
142
+ "internalType": "address",
143
+ "name": "consumer",
144
+ "type": "address"
145
+ },
146
+ {
147
+ "indexed": true,
148
+ "internalType": "uint256",
149
+ "name": "orderId",
150
+ "type": "uint256"
151
+ },
152
+ {
153
+ "indexed": false,
154
+ "internalType": "string",
155
+ "name": "encryptedResult",
156
+ "type": "string"
157
+ }
158
+ ],
159
+ "name": "OrderEncryptedResultUpdated",
160
+ "type": "event"
161
+ },
162
+ {
163
+ "anonymous": false,
164
+ "inputs": [
165
+ {
166
+ "indexed": true,
167
+ "internalType": "uint256",
168
+ "name": "orderId",
169
+ "type": "uint256"
170
+ },
171
+ {
172
+ "indexed": false,
173
+ "internalType": "uint256",
174
+ "name": "price",
175
+ "type": "uint256"
176
+ }
177
+ ],
178
+ "name": "OrderPriceUpdated",
179
+ "type": "event"
180
+ },
181
+ {
182
+ "anonymous": false,
183
+ "inputs": [
184
+ {
185
+ "indexed": true,
186
+ "internalType": "address",
187
+ "name": "tokenReceiver",
188
+ "type": "address"
189
+ },
190
+ {
191
+ "indexed": true,
192
+ "internalType": "uint256",
193
+ "name": "orderId",
194
+ "type": "uint256"
195
+ },
196
+ {
197
+ "indexed": false,
198
+ "internalType": "uint256",
199
+ "name": "profit",
200
+ "type": "uint256"
201
+ }
202
+ ],
203
+ "name": "OrderProfitWithdrawn",
204
+ "type": "event"
205
+ },
206
+ {
207
+ "anonymous": false,
208
+ "inputs": [
209
+ {
210
+ "indexed": true,
211
+ "internalType": "address",
212
+ "name": "consumer",
213
+ "type": "address"
214
+ },
215
+ {
216
+ "indexed": true,
217
+ "internalType": "uint256",
218
+ "name": "orderId",
219
+ "type": "uint256"
220
+ }
221
+ ],
222
+ "name": "OrderStarted",
223
+ "type": "event"
224
+ },
225
+ {
226
+ "anonymous": false,
227
+ "inputs": [
228
+ {
229
+ "indexed": true,
230
+ "internalType": "uint256",
231
+ "name": "orderId",
232
+ "type": "uint256"
233
+ },
234
+ {
235
+ "indexed": true,
236
+ "internalType": "enum OrderStatus",
237
+ "name": "status",
238
+ "type": "uint8"
239
+ }
240
+ ],
241
+ "name": "OrderStatusUpdated",
242
+ "type": "event"
243
+ },
244
+ {
245
+ "anonymous": false,
246
+ "inputs": [
247
+ {
248
+ "indexed": true,
249
+ "internalType": "uint256",
250
+ "name": "subOrderId",
251
+ "type": "uint256"
252
+ },
253
+ {
254
+ "indexed": true,
255
+ "internalType": "uint256",
256
+ "name": "parentOrderId",
257
+ "type": "uint256"
258
+ }
259
+ ],
260
+ "name": "SubOrderCreated",
261
+ "type": "event"
262
+ },
263
+ {
264
+ "inputs": [
265
+ {
266
+ "internalType": "uint256",
267
+ "name": "orderId",
268
+ "type": "uint256"
269
+ }
270
+ ],
271
+ "name": "cancelOrder",
272
+ "outputs": [],
273
+ "stateMutability": "nonpayable",
274
+ "type": "function"
275
+ },
276
+ {
277
+ "inputs": [
278
+ {
279
+ "internalType": "uint256",
280
+ "name": "orderId",
281
+ "type": "uint256"
282
+ },
283
+ {
284
+ "internalType": "enum OrderStatus",
285
+ "name": "status",
286
+ "type": "uint8"
287
+ },
288
+ {
289
+ "internalType": "string",
290
+ "name": "encryptedResult",
291
+ "type": "string"
292
+ }
293
+ ],
294
+ "name": "completeOrder",
295
+ "outputs": [],
296
+ "stateMutability": "nonpayable",
297
+ "type": "function"
298
+ },
299
+ {
300
+ "inputs": [
301
+ {
302
+ "components": [
303
+ {
304
+ "internalType": "uint256",
305
+ "name": "offerId",
306
+ "type": "uint256"
307
+ },
308
+ {
309
+ "internalType": "string",
310
+ "name": "resultPublicKey",
311
+ "type": "string"
312
+ },
313
+ {
314
+ "internalType": "string",
315
+ "name": "encryptedRequirements",
316
+ "type": "string"
317
+ },
318
+ {
319
+ "internalType": "string",
320
+ "name": "encryptedArgs",
321
+ "type": "string"
322
+ },
323
+ {
324
+ "internalType": "enum OrderStatus",
325
+ "name": "status",
326
+ "type": "uint8"
327
+ },
328
+ {
329
+ "components": [
330
+ {
331
+ "internalType": "uint256",
332
+ "name": "slots",
333
+ "type": "uint256"
334
+ },
335
+ {
336
+ "internalType": "uint256[]",
337
+ "name": "inputOffers",
338
+ "type": "uint256[]"
339
+ },
340
+ {
341
+ "internalType": "uint256[]",
342
+ "name": "selectedOffers",
343
+ "type": "uint256[]"
344
+ }
345
+ ],
346
+ "internalType": "struct OrderArgs",
347
+ "name": "args",
348
+ "type": "tuple"
349
+ }
350
+ ],
351
+ "internalType": "struct OrderInfo",
352
+ "name": "info",
353
+ "type": "tuple"
354
+ },
355
+ {
356
+ "internalType": "uint256",
357
+ "name": "holdDeposit",
358
+ "type": "uint256"
359
+ },
360
+ {
361
+ "internalType": "bool",
362
+ "name": "suspended",
363
+ "type": "bool"
364
+ },
365
+ {
366
+ "internalType": "bytes32",
367
+ "name": "externalId",
368
+ "type": "bytes32"
369
+ }
370
+ ],
371
+ "name": "createOrder",
372
+ "outputs": [],
373
+ "stateMutability": "nonpayable",
374
+ "type": "function"
375
+ },
376
+ {
377
+ "inputs": [
378
+ {
379
+ "internalType": "uint256",
380
+ "name": "parentOrderId",
381
+ "type": "uint256"
382
+ },
383
+ {
384
+ "components": [
385
+ {
386
+ "internalType": "uint256",
387
+ "name": "offerId",
388
+ "type": "uint256"
389
+ },
390
+ {
391
+ "internalType": "string",
392
+ "name": "resultPublicKey",
393
+ "type": "string"
394
+ },
395
+ {
396
+ "internalType": "string",
397
+ "name": "encryptedRequirements",
398
+ "type": "string"
399
+ },
400
+ {
401
+ "internalType": "string",
402
+ "name": "encryptedArgs",
403
+ "type": "string"
404
+ },
405
+ {
406
+ "internalType": "enum OrderStatus",
407
+ "name": "status",
408
+ "type": "uint8"
409
+ },
410
+ {
411
+ "components": [
412
+ {
413
+ "internalType": "uint256",
414
+ "name": "slots",
415
+ "type": "uint256"
416
+ },
417
+ {
418
+ "internalType": "uint256[]",
419
+ "name": "inputOffers",
420
+ "type": "uint256[]"
421
+ },
422
+ {
423
+ "internalType": "uint256[]",
424
+ "name": "selectedOffers",
425
+ "type": "uint256[]"
426
+ }
427
+ ],
428
+ "internalType": "struct OrderArgs",
429
+ "name": "args",
430
+ "type": "tuple"
431
+ }
432
+ ],
433
+ "internalType": "struct OrderInfo",
434
+ "name": "suborderInfo",
435
+ "type": "tuple"
436
+ },
437
+ {
438
+ "components": [
439
+ {
440
+ "internalType": "bool",
441
+ "name": "blockParentOrder",
442
+ "type": "bool"
443
+ },
444
+ {
445
+ "internalType": "bytes32",
446
+ "name": "externalId",
447
+ "type": "bytes32"
448
+ },
449
+ {
450
+ "internalType": "uint256",
451
+ "name": "holdSum",
452
+ "type": "uint256"
453
+ }
454
+ ],
455
+ "internalType": "struct SubOrderParams",
456
+ "name": "params",
457
+ "type": "tuple"
458
+ }
459
+ ],
460
+ "name": "createSubOrder",
461
+ "outputs": [],
462
+ "stateMutability": "nonpayable",
463
+ "type": "function"
464
+ },
465
+ {
466
+ "inputs": [
467
+ {
468
+ "internalType": "uint256",
469
+ "name": "orderId",
470
+ "type": "uint256"
471
+ }
472
+ ],
473
+ "name": "getAwaitingPayment",
474
+ "outputs": [
475
+ {
476
+ "internalType": "bool",
477
+ "name": "",
478
+ "type": "bool"
479
+ }
480
+ ],
481
+ "stateMutability": "view",
482
+ "type": "function"
483
+ },
484
+ {
485
+ "inputs": [
486
+ {
487
+ "internalType": "uint256",
488
+ "name": "orderId",
489
+ "type": "uint256"
490
+ }
491
+ ],
492
+ "name": "getDepositSpent",
493
+ "outputs": [
494
+ {
495
+ "internalType": "uint256",
496
+ "name": "",
497
+ "type": "uint256"
498
+ }
499
+ ],
500
+ "stateMutability": "view",
501
+ "type": "function"
502
+ },
503
+ {
504
+ "inputs": [
505
+ {
506
+ "internalType": "uint256",
507
+ "name": "orderId",
508
+ "type": "uint256"
509
+ }
510
+ ],
511
+ "name": "getOrder",
512
+ "outputs": [
513
+ {
514
+ "internalType": "address",
515
+ "name": "",
516
+ "type": "address"
517
+ },
518
+ {
519
+ "components": [
520
+ {
521
+ "internalType": "uint256",
522
+ "name": "offerId",
523
+ "type": "uint256"
524
+ },
525
+ {
526
+ "internalType": "string",
527
+ "name": "resultPublicKey",
528
+ "type": "string"
529
+ },
530
+ {
531
+ "internalType": "string",
532
+ "name": "encryptedRequirements",
533
+ "type": "string"
534
+ },
535
+ {
536
+ "internalType": "string",
537
+ "name": "encryptedArgs",
538
+ "type": "string"
539
+ },
540
+ {
541
+ "internalType": "enum OrderStatus",
542
+ "name": "status",
543
+ "type": "uint8"
544
+ },
545
+ {
546
+ "components": [
547
+ {
548
+ "internalType": "uint256",
549
+ "name": "slots",
550
+ "type": "uint256"
551
+ },
552
+ {
553
+ "internalType": "uint256[]",
554
+ "name": "inputOffers",
555
+ "type": "uint256[]"
556
+ },
557
+ {
558
+ "internalType": "uint256[]",
559
+ "name": "selectedOffers",
560
+ "type": "uint256[]"
561
+ }
562
+ ],
563
+ "internalType": "struct OrderArgs",
564
+ "name": "args",
565
+ "type": "tuple"
566
+ }
567
+ ],
568
+ "internalType": "struct OrderInfo",
569
+ "name": "",
570
+ "type": "tuple"
571
+ },
572
+ {
573
+ "components": [
574
+ {
575
+ "internalType": "string",
576
+ "name": "encryptedResult",
577
+ "type": "string"
578
+ },
579
+ {
580
+ "internalType": "uint256",
581
+ "name": "orderPrice",
582
+ "type": "uint256"
583
+ }
584
+ ],
585
+ "internalType": "struct OrderResult",
586
+ "name": "",
587
+ "type": "tuple"
588
+ }
589
+ ],
590
+ "stateMutability": "view",
591
+ "type": "function"
592
+ },
593
+ {
594
+ "inputs": [
595
+ {
596
+ "internalType": "uint256",
597
+ "name": "orderId",
598
+ "type": "uint256"
599
+ }
600
+ ],
601
+ "name": "getOrderChangeWithdrawn",
602
+ "outputs": [
603
+ {
604
+ "internalType": "bool",
605
+ "name": "",
606
+ "type": "bool"
607
+ }
608
+ ],
609
+ "stateMutability": "view",
610
+ "type": "function"
611
+ },
612
+ {
613
+ "inputs": [
614
+ {
615
+ "internalType": "uint256",
616
+ "name": "orderId",
617
+ "type": "uint256"
618
+ }
619
+ ],
620
+ "name": "getOrderHoldDeposit",
621
+ "outputs": [
622
+ {
623
+ "internalType": "uint256",
624
+ "name": "",
625
+ "type": "uint256"
626
+ }
627
+ ],
628
+ "stateMutability": "view",
629
+ "type": "function"
630
+ },
631
+ {
632
+ "inputs": [
633
+ {
634
+ "internalType": "uint256",
635
+ "name": "orderId",
636
+ "type": "uint256"
637
+ }
638
+ ],
639
+ "name": "getOrderOrigins",
640
+ "outputs": [
641
+ {
642
+ "components": [
643
+ {
644
+ "internalType": "uint256",
645
+ "name": "createdDate",
646
+ "type": "uint256"
647
+ },
648
+ {
649
+ "internalType": "address",
650
+ "name": "createdBy",
651
+ "type": "address"
652
+ },
653
+ {
654
+ "internalType": "uint256",
655
+ "name": "modifiedDate",
656
+ "type": "uint256"
657
+ },
658
+ {
659
+ "internalType": "address",
660
+ "name": "modifiedBy",
661
+ "type": "address"
662
+ }
663
+ ],
664
+ "internalType": "struct Origins",
665
+ "name": "",
666
+ "type": "tuple"
667
+ }
668
+ ],
669
+ "stateMutability": "view",
670
+ "type": "function"
671
+ },
672
+ {
673
+ "inputs": [
674
+ {
675
+ "internalType": "uint256",
676
+ "name": "orderId",
677
+ "type": "uint256"
678
+ }
679
+ ],
680
+ "name": "getOrderParentOrder",
681
+ "outputs": [
682
+ {
683
+ "internalType": "uint256",
684
+ "name": "",
685
+ "type": "uint256"
686
+ }
687
+ ],
688
+ "stateMutability": "view",
689
+ "type": "function"
690
+ },
691
+ {
692
+ "inputs": [
693
+ {
694
+ "internalType": "uint256",
695
+ "name": "orderId",
696
+ "type": "uint256"
697
+ }
698
+ ],
699
+ "name": "getOrderPrice",
700
+ "outputs": [
701
+ {
702
+ "internalType": "uint256",
703
+ "name": "",
704
+ "type": "uint256"
705
+ }
706
+ ],
707
+ "stateMutability": "view",
708
+ "type": "function"
709
+ },
710
+ {
711
+ "inputs": [
712
+ {
713
+ "internalType": "uint256",
714
+ "name": "orderId",
715
+ "type": "uint256"
716
+ }
717
+ ],
718
+ "name": "getOrderProfitWithdrawn",
719
+ "outputs": [
720
+ {
721
+ "internalType": "bool",
722
+ "name": "",
723
+ "type": "bool"
724
+ }
725
+ ],
726
+ "stateMutability": "view",
727
+ "type": "function"
728
+ },
729
+ {
730
+ "inputs": [
731
+ {
732
+ "internalType": "uint256",
733
+ "name": "orderId",
734
+ "type": "uint256"
735
+ }
736
+ ],
737
+ "name": "getOrderSubOrders",
738
+ "outputs": [
739
+ {
740
+ "internalType": "uint256[]",
741
+ "name": "",
742
+ "type": "uint256[]"
743
+ }
744
+ ],
745
+ "stateMutability": "view",
746
+ "type": "function"
747
+ },
748
+ {
749
+ "inputs": [],
750
+ "name": "getOrdersCount",
751
+ "outputs": [
752
+ {
753
+ "internalType": "uint256",
754
+ "name": "",
755
+ "type": "uint256"
756
+ }
757
+ ],
758
+ "stateMutability": "view",
759
+ "type": "function"
760
+ },
761
+ {
762
+ "inputs": [
763
+ {
764
+ "internalType": "uint256",
765
+ "name": "orderId",
766
+ "type": "uint256"
767
+ }
768
+ ],
769
+ "name": "getStartDate",
770
+ "outputs": [
771
+ {
772
+ "internalType": "uint256",
773
+ "name": "",
774
+ "type": "uint256"
775
+ }
776
+ ],
777
+ "stateMutability": "view",
778
+ "type": "function"
779
+ },
780
+ {
781
+ "inputs": [
782
+ {
783
+ "internalType": "uint256",
784
+ "name": "orderId",
785
+ "type": "uint256"
786
+ }
787
+ ],
788
+ "name": "isOrderCompleted",
789
+ "outputs": [
790
+ {
791
+ "internalType": "bool",
792
+ "name": "",
793
+ "type": "bool"
794
+ }
795
+ ],
796
+ "stateMutability": "view",
797
+ "type": "function"
798
+ },
799
+ {
800
+ "inputs": [
801
+ {
802
+ "internalType": "uint256",
803
+ "name": "orderId",
804
+ "type": "uint256"
805
+ }
806
+ ],
807
+ "name": "isOrderStarted",
808
+ "outputs": [
809
+ {
810
+ "internalType": "bool",
811
+ "name": "",
812
+ "type": "bool"
813
+ }
814
+ ],
815
+ "stateMutability": "view",
816
+ "type": "function"
817
+ },
818
+ {
819
+ "inputs": [
820
+ {
821
+ "internalType": "uint256",
822
+ "name": "orderId",
823
+ "type": "uint256"
824
+ }
825
+ ],
826
+ "name": "isOrderValid",
827
+ "outputs": [
828
+ {
829
+ "internalType": "bool",
830
+ "name": "",
831
+ "type": "bool"
832
+ }
833
+ ],
834
+ "stateMutability": "view",
835
+ "type": "function"
836
+ },
837
+ {
838
+ "inputs": [
839
+ {
840
+ "internalType": "uint256",
841
+ "name": "orderId",
842
+ "type": "uint256"
843
+ }
844
+ ],
845
+ "name": "processOrder",
846
+ "outputs": [],
847
+ "stateMutability": "nonpayable",
848
+ "type": "function"
849
+ },
850
+ {
851
+ "inputs": [
852
+ {
853
+ "internalType": "uint256",
854
+ "name": "orderId",
855
+ "type": "uint256"
856
+ },
857
+ {
858
+ "internalType": "uint256",
859
+ "name": "amount",
860
+ "type": "uint256"
861
+ }
862
+ ],
863
+ "name": "refillOrder",
864
+ "outputs": [],
865
+ "stateMutability": "nonpayable",
866
+ "type": "function"
867
+ },
868
+ {
869
+ "inputs": [
870
+ {
871
+ "internalType": "uint256",
872
+ "name": "orderId",
873
+ "type": "uint256"
874
+ },
875
+ {
876
+ "internalType": "bool",
877
+ "name": "value",
878
+ "type": "bool"
879
+ }
880
+ ],
881
+ "name": "setAwaitingPayment",
882
+ "outputs": [],
883
+ "stateMutability": "nonpayable",
884
+ "type": "function"
885
+ },
886
+ {
887
+ "inputs": [
888
+ {
889
+ "internalType": "uint256",
890
+ "name": "orderId",
891
+ "type": "uint256"
892
+ },
893
+ {
894
+ "internalType": "uint256",
895
+ "name": "value",
896
+ "type": "uint256"
897
+ }
898
+ ],
899
+ "name": "setDepositSpent",
900
+ "outputs": [],
901
+ "stateMutability": "nonpayable",
902
+ "type": "function"
903
+ },
904
+ {
905
+ "inputs": [
906
+ {
907
+ "internalType": "uint256",
908
+ "name": "orderId",
909
+ "type": "uint256"
910
+ }
911
+ ],
912
+ "name": "startOrder",
913
+ "outputs": [],
914
+ "stateMutability": "nonpayable",
915
+ "type": "function"
916
+ },
917
+ {
918
+ "inputs": [
919
+ {
920
+ "internalType": "uint256",
921
+ "name": "orderId",
922
+ "type": "uint256"
923
+ },
924
+ {
925
+ "internalType": "uint256",
926
+ "name": "orderPrice",
927
+ "type": "uint256"
928
+ }
929
+ ],
930
+ "name": "updateOrderPrice",
931
+ "outputs": [],
932
+ "stateMutability": "nonpayable",
933
+ "type": "function"
934
+ },
935
+ {
936
+ "inputs": [
937
+ {
938
+ "internalType": "uint256",
939
+ "name": "orderId",
940
+ "type": "uint256"
941
+ },
942
+ {
943
+ "internalType": "string",
944
+ "name": "encryptedResult",
945
+ "type": "string"
946
+ }
947
+ ],
948
+ "name": "updateOrderResult",
949
+ "outputs": [],
950
+ "stateMutability": "nonpayable",
951
+ "type": "function"
952
+ },
953
+ {
954
+ "inputs": [
955
+ {
956
+ "internalType": "uint256",
957
+ "name": "orderId",
958
+ "type": "uint256"
959
+ }
960
+ ],
961
+ "name": "withdrawChange",
962
+ "outputs": [],
963
+ "stateMutability": "nonpayable",
964
+ "type": "function"
965
+ },
966
+ {
967
+ "inputs": [
968
+ {
969
+ "internalType": "uint256",
970
+ "name": "orderId",
971
+ "type": "uint256"
972
+ }
973
+ ],
974
+ "name": "withdrawProfit",
975
+ "outputs": [],
976
+ "stateMutability": "nonpayable",
977
+ "type": "function"
978
+ }
979
+ ],
980
+ "bytecode": "0x608060405234801561001057600080fd5b50615aee80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063920fba4f116100f9578063ba92763a11610097578063d54f807611610071578063d54f80761461051b578063d82a2bea1461052e578063df305d5914610541578063e0ab5ae01461055457600080fd5b8063ba92763a146104b6578063c9bd9ff0146104e6578063d09ef241146104f957600080fd5b8063a0a23849116100d3578063a0a2384914610436578063a90f3a2d14610469578063ab74e6421461047c578063b5b3b0511461048f57600080fd5b8063920fba4f146103e0578063975c4727146103f35780639959a56b1461042357600080fd5b80636eb691f4116101665780637a62b924116101405780637a62b9241461032d5780637d41fdd914610365578063835055c31461037857806388f4a6ba146103cd57600080fd5b80636eb691f41461029a578063752895dd146102ca578063779e423f146102ea57600080fd5b80632e5187fb116101a25780632e5187fb1461024e5780632f191ee814610261578063514fcac7146102745780635e9e78d01461028757600080fd5b80630f251358146101c957806319fed3981461020c5780631a02dc9214610221575b600080fd5b6101f96101d736600461512c565b6000908152600080516020615a9983398151915260205260409020600d015490565b6040519081526020015b60405180910390f35b61021f61021a366004615156565b610567565b005b6101f961022f36600461512c565b6000908152600080516020615a99833981519152602052604090205490565b61021f61025c36600461512c565b6107fb565b61021f61026f36600461529d565b610b32565b61021f61028236600461512c565b611096565b61021f6102953660046152f4565b611366565b6101f96102a836600461512c565b6000908152600080516020615a99833981519152602052604090206018015490565b6102dd6102d836600461512c565b6115dd565b6040516102039190615316565b61031d6102f836600461512c565b6000908152600080516020615a99833981519152602052604090206013015460ff1690565b6040519015158152602001610203565b61031d61033b36600461512c565b6000908152600080516020615a998339815191526020526040902060130154610100900460ff1690565b61021f61037336600461512c565b611654565b61038b61038636600461512c565b6117de565b6040516102039190815181526020808301516001600160a01b039081169183019190915260408084015190830152606092830151169181019190915260800190565b61031d6103db36600461512c565b611869565b61021f6103ee366004615527565b6118cb565b6101f961040136600461512c565b6000908152600080516020615a9983398151915260205260409020601a015490565b61021f61043136600461512c565b611e22565b61031d61044436600461512c565b6000908152600080516020615a99833981519152602052604090206019015460ff1690565b61021f610477366004615588565b612329565b61031d61048a36600461512c565b6129ec565b7ff68437791109705d2e300a0b0cfc858fedffc7438da1d9bf937e2f34afa0df76546101f9565b6101f96104c436600461512c565b6000908152600080516020615a99833981519152602052604090206002015490565b61031d6104f436600461512c565b612a53565b61050c61050736600461512c565b612a8a565b604051610203939291906156ea565b61021f6105293660046152f4565b612e76565b61021f61053c36600461512c565b613150565b61021f61054f3660046152f4565b613633565b61021f6105623660046157de565b61396b565b6000828152600080516020615a9983398151915260205260408120839150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156105cd57600080fd5b505afa1580156105e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610605919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b15801561064d57600080fd5b505afa158015610661573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610685919061583a565b90506001600160a01b03811633146106ee5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084015b60405180910390fd5b6000868152600080516020615a9983398151915260205260409020600881015460019060ff16600781111561072557610725615660565b146107985760405162461bcd60e51b815260206004820152602360248201527f4f72646572206d75737420626520696e20612070726f63657373696e6720737460448201527f617465000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b60198101805460ff1916871515908117909155600182015460405191825288916001600160a01b03909116907fb10fd7c76991a3f5a6ddad3affbfd91cba71af0ecf74de0aea2f04655f869133906020015b60405180910390a350505050505050565b6000818152600080516020615a9983398151915260205260408120829150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b15801561086157600080fd5b505afa158015610875573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610899919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b1580156108e157600080fd5b505afa1580156108f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610919919061583a565b90506001600160a01b038116331461097d5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b610986856129ec565b156109f95760405162461bcd60e51b815260206004820152602c60248201527f436f6d706c65746564206f726465722063616e27742062652072657475726e6560448201527f6420746f2070726f63657373000000000000000000000000000000000000000060648201526084016106e5565b610a0285611869565b610a4e5760405162461bcd60e51b815260206004820152601960248201527f4f72646572206861736e2774206265656e20737461727465640000000000000060448201526064016106e5565b6000858152600080516020615a99833981519152602052604090206008810154610a7c9060ff166001613c36565b610aed5760405162461bcd60e51b8152602060048201526024808201527f4e6f7420616c6c6f77656420746f207365742050726f63657373696e6720737460448201527f617475730000000000000000000000000000000000000000000000000000000060648201526084016106e5565b610b0f81600f0142600282015560030180546001600160a01b03191633179055565b610b1a866001613cd0565b6002810154610b2a574260028201555b505050505050565b6000838152600080516020615a9983398151915260205260408120849150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b158015610b9857600080fd5b505afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd0919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b158015610c1857600080fd5b505afa158015610c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c50919061583a565b90506001600160a01b0381163314610cb45760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b86610cbe81612a53565b610cfa5760405162461bcd60e51b815260206004820152600d60248201526c2ab735b737bbb71037b93232b960991b60448201526064016106e5565b610d03886129ec565b15610d505760405162461bcd60e51b815260206004820152601160248201527f416c726561647920636f6d706c6574656400000000000000000000000000000060448201526064016106e5565b6005876007811115610d6457610d64615660565b1480610d8157506004876007811115610d7f57610d7f615660565b145b80610d9d57506003876007811115610d9b57610d9b615660565b145b610e0f5760405162461bcd60e51b815260206004820152603560248201527f43616e20636f6d706c657465206f6e6c7920776974682073746174757320457260448201527f726f722c2043616e63656c6564206f7220446f6e65000000000000000000000060648201526084016106e5565b6000888152600080516020615a9983398151915260205260409020600881015460019060ff166007811115610e4657610e46615660565b1480610e6a57506002600882015460ff166007811115610e6857610e68615660565b145b610edc5760405162461bcd60e51b815260206004820152602d60248201527f43616e277420636f6d706c657465206265666f72652070726f63657373696e6760448201527f206f722063616e63656c696e670000000000000000000000000000000000000060648201526084016106e5565b610efe81600f0142600282015560030180546001600160a01b03191633179055565b8651610f1390600c83019060208a0190614ff1565b506005886007811115610f2857610f28615660565b1415610f405760138101805461ff0019166101001790555b6003886007811115610f5457610f54615660565b1415610ffc576002600882015460ff166007811115610f7557610f75615660565b14610fc25760405162461bcd60e51b815260206004820181905260248201527f4f72646572206d75737420626520696e2063616e63656c696e6720737461746560448201526064016106e5565b6000600e82015460ff166003811115610fdd57610fdd615660565b14610ff157601a810154600d820155610ffc565b600d810154601a8201555b6110068989613cd0565b6110248960058a600781111561101e5761101e615660565b14613d53565b306004808301546040516336dac04f60e21b81529182018c905260248201526001600160a01b03919091169063db6b013c90604401600060405180830381600087803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b50505050505050505050505050565b6000818152600080516020615a998339815191526020526040902060018101548291906001600160a01b031633146111105760405162461bcd60e51b815260206004820152601b60248201527f417661696c61626c65206f6e6c7920666f7220636f6e73756d6572000000000060448201526064016106e5565b6000838152600080516020615a99833981519152602052604090204260118201556012810180546001600160a01b0319163317905561114e846129ec565b156111a55760405162461bcd60e51b815260206004820152602160248201527f436f6d706c65746564206f726465722063616e27742062652063616e63656c656044820152601960fa1b60648201526084016106e5565b6002600882015460ff1660078111156111c0576111c0615660565b141561120e5760405162461bcd60e51b815260206004820152601160248201527f416c72656164792063616e63656c696e6700000000000000000000000000000060448201526064016106e5565b6002810154158015906112de57611226856002613cd0565b306004838101546002850154600d8601546040517fb98c9f3e00000000000000000000000000000000000000000000000000000000815293840192909252602483015260448201526001600160a01b03919091169063b98c9f3e9060640160206040518083038186803b15801561129c57600080fd5b505afa1580156112b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d49190615857565b600d8301556112f8565b6112e9856003613cd0565b6000600d8301819055601a8301555b306004808401546040516336dac04f60e21b815291820188905260248201526001600160a01b03919091169063db6b013c90604401600060405180830381600087803b15801561134757600080fd5b505af115801561135b573d6000803e3d6000fd5b505050505050505050565b6000828152600080516020615a9983398151915260205260408120839150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156113cc57600080fd5b505afa1580156113e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611404919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b15801561144c57600080fd5b505afa158015611460573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611484919061583a565b90506001600160a01b03811633146114e85760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b6114f186613df9565b6115635760405162461bcd60e51b815260206004820152602e60248201527f4f72646572207072696365206d757374206265206368616e676520696e20707260448201527f6f63657373696e6720737461746500000000000000000000000000000000000060648201526084016106e5565b6000868152600080516020615a99833981519152602052604090204260118201556012810180546001600160a01b03191633179055600d810186905560405186815287907fddcfcd158ba340cec1297a0d825aaf047af03d3fabcc01b151a6e1d09a7160f59060200160405180910390a250505050505050565b6000818152600080516020615a9983398151915260205260408120606091906003810180546040805160208084028201810190925282815293945083018282801561164757602002820191906000526020600020905b815481526020019060010190808311611633575b5050505050915050919050565b6000818152600080516020615a998339815191526020526040902060018101548291906001600160a01b031633146116ce5760405162461bcd60e51b815260206004820152601b60248201527f417661696c61626c65206f6e6c7920666f7220636f6e73756d6572000000000060448201526064016106e5565b6000838152600080516020615a9983398151915260205260409020600881015460079060ff168181111561170457611704615660565b146117515760405162461bcd60e51b815260206004820152601760248201527f4f72646572206d7573742062652073757370656e64656400000000000000000060448201526064016106e5565b61177381600f0142600282015560030180546001600160a01b03191633179055565b601781015480611784576000611787565b60065b60088301805460ff191660018360078111156117a5576117a5615660565b0217905550604051859033907fe83be2bd6985a0345b14c74f91632c816560fb0543defd73982467563c4b598990600090a35050505050565b604080516080810182526000808252602082018190529181018290526060810182905290611824836000908152600080516020615a998339815191526020526040902090565b60408051608081018252600f830154815260108301546001600160a01b0390811660208301526011840154928201929092526012909201541660608201529392505050565b6000818152600080516020615a99833981519152602052604081206000600882015460ff16600781111561189f5761189f615660565b14806118c4575060015b600882015460ff1660078111156118c2576118c2615660565b145b9392505050565b33308551604051634202334f60e01b815260048101919091526001600160a01b0383811660248301529190911690634202334f9060440160206040518083038186803b15801561191a57600080fd5b505afa15801561192e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119529190615870565b61198c5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016106e5565b8451604051631e5dd86b60e01b81523091631e5dd86b916119b3919060009060040161588d565b60206040518083038186803b1580156119cb57600080fd5b505afa1580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a039190615870565b15611a505760405162461bcd60e51b815260206004820181905260248201527f4f6666657220646973616c6c6f77207374616e64616c6f6e65206f726465727360448201526064016106e5565b84516040516308e161a160e21b81526004810191909152600090309063238586849060240160206040518083038186803b158015611a8d57600080fd5b505afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac59190615857565b905080851015611ad3578094505b60405163897ce7cf60e01b8152600090309063897ce7cf90611af99084906004016158b1565b60206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190615857565b905080861015611b57578095505b611b5f613ef8565b604051636eb1769f60e11b81526001600160a01b038581166004830152306024830152919091169063dd62ed3e9060440160206040518083038186803b158015611ba857600080fd5b505afa158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190615857565b861115611c3b5760405162461bcd60e51b8152602060048201526024808201527f416c6c6f77656420746f6b656e73206c657373207468616e20686f6c644465706044820152631bdcda5d60e21b60648201526084016106e5565b611c43613ef8565b6040516323b872dd60e01b81526001600160a01b0385811660048301523060248301526044820189905291909116906323b872dd90606401602060405180830381600087803b158015611c9557600080fd5b505af1158015611ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccd9190615870565b50600080611cdc898989613f70565b601881018a90558a51604051630624204f60e01b8152600481019190915291935091503090630624204f9060240160206040518083038186803b158015611d2257600080fd5b505afa158015611d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5a9190615870565b15611d6d57611d6882614633565b611dd5565b30895160405163d7208bb160e01b81526004810185905260248101919091526001600160a01b03919091169063d7208bb190604401600060405180830381600087803b158015611dbc57600080fd5b505af1158015611dd0573d6000803e3d6000fd5b505050505b885160405183815287906001600160a01b038816907fcdad6ab97fde7ccd3b74637bbb09ac75c9a4bf8b5684d210c9e61869bc67ac9b9060200160405180910390a4505050505050505050565b6000818152600080516020615a9983398151915260205260409020601381015460ff1615611e925760405162461bcd60e51b815260206004820152601860248201527f4368616e676520616c72656164792077697468647261776e000000000000000060448201526064016106e5565b60018101546001600160a01b03163314611f145760405162461bcd60e51b815260206004820152602160248201527f417661696c61626c65206f6e6c7920666f72204f7264657220636f6e73756d6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b60006002600883015460ff166007811115611f3157611f31615660565b148015611fb7575030600483810154604051634221048560e11b8152918201526001600160a01b039190911690638442090a9060240160206040518083038186803b158015611f7f57600080fd5b505afa158015611f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb79190615870565b9050611fc2836129ec565b80611fca5750805b6120275760405162461bcd60e51b815260206004820152602860248201527f57697468647261776e20617661696c61626c65207768656e206f7264657220636044820152671bdb5c1b195d195960c21b60648201526084016106e5565b6000811561217c5760005b600b84015481101561217a57600b840180546000919083908110612058576120586158c4565b600091825260209091200154604051633835b0d360e01b8152600481018290529091506001903090633835b0d39060240160206040518083038186803b1580156120a157600080fd5b505afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906158da565b60038111156120ea576120ea615660565b1415612167576040516308e161a160e21b815260048101829052309063238586849060240160206040518083038186803b15801561212757600080fd5b505afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f9190615857565b92505061217a565b508061217281615911565b915050612032565b505b6013830154600090610100900460ff16156121985760006121a8565b8184601a01546121a8919061592c565b905080846018015410156121fe5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f756768206465706f736974000000000000000000000000000060448201526064016106e5565b60008185601801546122109190615944565b905061221a613ef8565b60018601546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561228257600080fd5b505af1158015612296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ba9190615870565b50808560180160008282546122cf9190615944565b909155505060138501805460ff19166001179055604051869033907ff2104e05a949a0a0c1f4b384977e9a631ddeccc6a9f14f878ca3d0510c763601906123199085815260200190565b60405180910390a3505050505050565b612332836129ec565b1561237f5760405162461bcd60e51b815260206004820152601960248201527f506172656e74206f7264657220697320636f6d706c657465640000000000000060448201526064016106e5565b6000838152600080516020615a99833981519152602052604081209050600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156123e457600080fd5b505afa1580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b15801561246457600080fd5b505afa158015612478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249c919061583a565b905060006124a987611869565b90508080156124c05750336001600160a01b038316145b806124e05750801580156124e0575060018401546001600160a01b031633145b61252c5760405162461bcd60e51b815260206004820152600d60248201527f4163636573732064656e6965640000000000000000000000000000000000000060448201526064016106e5565b308651604051634202334f60e01b815260048101919091523360248201526001600160a01b039190911690634202334f9060440160206040518083038186803b15801561257857600080fd5b505afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190615870565b6125ea5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016106e5565b8551604051636165696f60e01b815260048101919091526000903090636165696f9060240160206040518083038186803b15801561262757600080fd5b505afa15801561263b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265f919061595b565b9050600185601401600083600281111561267b5761267b615660565b600281111561268c5761268c615660565b815260200190815260200160002060008282546126a9919061592c565b909155505086516126bc90869083614698565b505060008460400151600014156127445785516040516308e161a160e21b81526004810191909152309063238586849060240160206040518083038186803b15801561270757600080fd5b505afa15801561271b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273f9190615857565b61274a565b84604001515b90506000808061275b898585613f70565b6001808a015481830180546001600160a01b0319166001600160a01b039092169190911790558c825560038a01805491820181556000908152602090200182905590925090506127c3600f880142600282015560030180546001600160a01b03191633179055565b83876018015410156128175760405162461bcd60e51b815260206004820152601f60248201527f4e6f7420656e6f75676820706172656e74206f72646572206465706f7369740060448201526064016106e5565b8387601801600082825461282b9190615944565b9250508190555083816018016000828254612846919061592c565b909155505087511561288357600082815260168801602052604081206001908190556017890180549192909161287d90849061592c565b90915550505b8851602089015160405133907fcdad6ab97fde7ccd3b74637bbb09ac75c9a4bf8b5684d210c9e61869bc67ac9b906128be9087815260200190565b60405180910390a46040518a9083907f862f137e7eeb5c8accaf91684d1f4344b5cdd331f887278389821125e4a1dab990600090a38851604051630624204f60e01b815260048101919091523090630624204f9060240160206040518083038186803b15801561292d57600080fd5b505afa158015612941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129659190615870565b156129785761297382614633565b6129e0565b30895160405163d7208bb160e01b81526004810185905260248101919091526001600160a01b03919091169063d7208bb190604401600060405180830381600087803b1580156129c757600080fd5b505af11580156129db573d6000803e3d6000fd5b505050505b50505050505050505050565b6000818152600080516020615a99833981519152602052604081206004600882015460ff166007811115612a2257612a22615660565b1480612a4657506005600882015460ff166007811115612a4457612a44615660565b145b806118c4575060036118a9565b60007ff68437791109705d2e300a0b0cfc858fedffc7438da1d9bf937e2f34afa0df7682158015906118c457505490911115919050565b6000612a94615075565b6040805180820190915260608152600060208201526000612acd856000908152600080516020615a998339815191526020526040902090565b90508060010160009054906101000a90046001600160a01b03168160040182600c01816040518060c001604052908160008201548152602001600182018054612b159061597c565b80601f0160208091040260200160405190810160405280929190818152602001828054612b419061597c565b8015612b8e5780601f10612b6357610100808354040283529160200191612b8e565b820191906000526020600020905b815481529060010190602001808311612b7157829003601f168201915b50505050508152602001600282018054612ba79061597c565b80601f0160208091040260200160405190810160405280929190818152602001828054612bd39061597c565b8015612c205780601f10612bf557610100808354040283529160200191612c20565b820191906000526020600020905b815481529060010190602001808311612c0357829003601f168201915b50505050508152602001600382018054612c399061597c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c659061597c565b8015612cb25780601f10612c8757610100808354040283529160200191612cb2565b820191906000526020600020905b815481529060010190602001808311612c9557829003601f168201915b5050509183525050600482015460209091019060ff166007811115612cd957612cd9615660565b6007811115612cea57612cea615660565b8152602001600582016040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015612d5757602002820191906000526020600020905b815481526020019060010190808311612d43575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015612daf57602002820191906000526020600020905b815481526020019060010190808311612d9b575b50505050508152505081525050915080604051806040016040529081600082018054612dda9061597c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e069061597c565b8015612e535780601f10612e2857610100808354040283529160200191612e53565b820191906000526020600020905b815481529060010190602001808311612e3657829003601f168201915b505050505081526020016001820154815250509050935093509350509193909250565b6000828152600080516020615a9983398151915260205260408120839150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b158015612edc57600080fd5b505afa158015612ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f14919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b158015612f5c57600080fd5b505afa158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f94919061583a565b90506001600160a01b0381163314612ff85760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b6000868152600080516020615a998339815191526020526040902061301c87613df9565b61308e5760405162461bcd60e51b815260206004820152603060248201527f5370656e74206465706f736974206d757374206265206368616e676520696e2060448201527f70726f63657373696e672073746174650000000000000000000000000000000060648201526084016106e5565b80601801548611156131085760405162461bcd60e51b815260206004820152603860248201527f4465706f736974207370656e74206d757374206265206c657373207468616e2060448201527f6f7220657175616c20746f20686f6c64206465706f736974000000000000000060648201526084016106e5565b601a8101869055600181015460405187815288916001600160a01b0316907f25d1f8deb5c0aaa3f1c70a4e07b3ad34335ee864f47de8c0dca68a7c91dd0542906020016107ea565b6000818152600080516020615a99833981519152602052604081209050600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156131b557600080fd5b505afa1580156131c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ed919061583a565b90506000306040517f0cc079f30000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529190911690630cc079f39060240160206040518083038186803b15801561324e57600080fd5b505afa158015613262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613286919061583a565b60405163897ce7cf60e01b8152909150600090309063897ce7cf906132b0906001906004016158b1565b60206040518083038186803b1580156132c857600080fd5b505afa1580156132dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133009190615857565b601a850154909150613311866129ec565b61336e5760405162461bcd60e51b815260206004820152602860248201527f57697468647261776e20617661696c61626c65207768656e206f7264657220636044820152671bdb5c1b195d195960c21b60648201526084016106e5565b336001600160a01b038416146133ec5760405162461bcd60e51b815260206004820152603160248201527f417661696c61626c65206f6e6c7920666f722070726f766964657220746f6b6560448201527f6e2072656369766572206163636f756e7400000000000000000000000000000060648201526084016106e5565b6013850154610100900460ff16156134465760405162461bcd60e51b815260206004820152601860248201527f50726f66697420616c72656164792077697468647261776e000000000000000060448201526064016106e5565b61344e613ef8565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000008152306004820152602481018390526001600160a01b03919091169063095ea7b390604401602060405180830381600087803b1580156134b157600080fd5b505af11580156134c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e99190615870565b50306040517f2ee409080000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018490529190911690632ee4090890604401600060405180830381600087803b15801561355057600080fd5b505af1158015613564573d6000803e3d6000fd5b5050505061356f3090565b6001600160a01b031663d719a90d60018584866040518563ffffffff1660e01b81526004016135a194939291906159b7565b600060405180830381600087803b1580156135bb57600080fd5b505af11580156135cf573d6000803e3d6000fd5b50505050808560180160008282546135e79190615944565b909155505060138501805461ff001916610100179055604051869033907fe2350354b45acad228120b59d977f2e487571e8d75fb3b74252a1034464449b8906123199085815260200190565b8161363d81612a53565b6136795760405162461bcd60e51b815260206004820152600d60248201526c2ab735b737bbb71037b93232b960991b60448201526064016106e5565b6000838152600080516020615a9983398151915260205260409020339061369f856129ec565b1580156136c557506002600882015460ff1660078111156136c2576136c2615660565b14155b61371b5760405162461bcd60e51b815260206004820152602160248201527f436f6d706c65746564206f726465722063616e277420626520726566696c6c656044820152601960fa1b60648201526084016106e5565b60018101546001600160a01b0383811691161461377a5760405162461bcd60e51b815260206004820152600e60248201527f4f776e6572206d69736d6174636800000000000000000000000000000000000060448201526064016106e5565b613782613ef8565b604051636eb1769f60e11b81526001600160a01b038481166004830152306024830152919091169063dd62ed3e9060440160206040518083038186803b1580156137cb57600080fd5b505afa1580156137df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138039190615857565b8411156138785760405162461bcd60e51b815260206004820152602660248201527f416c6c6f77656420746f6b656e73206c657373207468616e20726566696c6c2060448201527f616d6f756e74000000000000000000000000000000000000000000000000000060648201526084016106e5565b613880613ef8565b6040516323b872dd60e01b81526001600160a01b0384811660048301523060248301526044820187905291909116906323b872dd90606401602060405180830381600087803b1580156138d257600080fd5b505af11580156138e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390a9190615870565b508381601801600082825461391f919061592c565b909155505060405184815285906001600160a01b038416907f5dd58c11f2973d8fca72f1cffb326b5af815e81232ff1e581a7d534344fad71f9060200160405180910390a35050505050565b6000828152600080516020615a9983398151915260205260408120839150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156139d157600080fd5b505afa1580156139e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a09919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b158015613a5157600080fd5b505afa158015613a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a89919061583a565b90506001600160a01b0381163314613aed5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b6000868152600080516020615a9983398151915260205260409020600881015460019060ff166007811115613b2457613b24615660565b1480613b4857506002600882015460ff166007811115613b4657613b46615660565b145b613bba5760405162461bcd60e51b815260206004820152603060248201527f4f72646572206d75737420626520696e20612070726f63657373696e67206f7260448201527f2063616e63656c696e672073746174650000000000000000000000000000000060648201526084016106e5565b613bdc81600f0142600282015560030180546001600160a01b03191633179055565b8551613bf190600c8301906020890190614ff1565b50600181015460405188916001600160a01b0316907fc3727ad3658a9131981b1b617e2928362ba398c4c5e7f3044ad2cadd44325568906107ea90600c8601906159f0565b6000806002846007811115613c4d57613c4d615660565b148015613c6b57506003836007811115613c6957613c69615660565b145b9050600080856007811115613c8257613c82615660565b1480613c9f57506001856007811115613c9d57613c9d615660565b145b8015613cbc57506001846007811115613cba57613cba615660565b145b90508180613cc75750805b95945050505050565b6000828152600080516020615a998339815191526020526040902060088101805483919060ff19166001836007811115613d0c57613d0c615660565b0217905550816007811115613d2357613d23615660565b60405184907fd9a86b644eb5f5b43cc8a700849852481080361c7a4b00ba646d1b46c5585f9590600090a3505050565b6000828152600080516020615a99833981519152602052604090208054613d7957505050565b80546000908152600080516020615a998339815191526020526040812060008581526016820160205260408120546017830180549394509092839290613dc0908490615944565b9091555084905080613dd457506017820154155b15613df2578254613df29085613deb576000614eec565b6005614eec565b5050505050565b6000818152600080516020615a99833981519152602052604081206001600882015460ff166007811115613e2f57613e2f615660565b1415613e3e5750600192915050565b6002600882015460ff166007811115613e5957613e59615660565b148015613ee1575030600482810154604051634221048560e11b8152918201526001600160a01b039190911690638442090a9060240160206040518083038186803b158015613ea757600080fd5b505afa158015613ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613edf9190615870565b155b15613eef5750600192915050565b50600092915050565b6000306001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b158015613f3357600080fd5b505afa158015613f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6b919061583a565b905090565b8251604051634e6e04f760e01b815260048101919091526000908190339082903090634e6e04f79060240160206040518083038186803b158015613fb357600080fd5b505afa158015613fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613feb919061583a565b8751604051633835b0d360e01b815260048101919091529091506000903090633835b0d39060240160206040518083038186803b15801561402b57600080fd5b505afa15801561403f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406391906158da565b905060008082600381111561407a5761407a615660565b8a516040517fe51334fb000000000000000000000000000000000000000000000000000000008152600481019190915291149150309063e51334fb9060240160206040518083038186803b1580156140d157600080fd5b505afa1580156140e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141099190615870565b6141555760405162461bcd60e51b815260206004820152601460248201527f4f66666572206d7573742062652061637469766500000000000000000000000060448201526064016106e5565b306040517fded116690000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152919091169063ded116699060240160206040518083038186803b1580156141b257600080fd5b505afa1580156141c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ea9190615870565b6142425760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682070726f7669646572207365637572697479206465706044820152631bdcda5d60e21b60648201526084016106e5565b8015806142d7575088516040517f3d8e40e200000000000000000000000000000000000000000000000000000000815260048101919091523090633d8e40e29060240160206040518083038186803b15801561429d57600080fd5b505afa1580156142b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d59190615870565b155b6143485760405162461bcd60e51b8152602060048201526024808201527f544545206f666665722062656e63686d61726b206d757374206265207665726960448201527f666965640000000000000000000000000000000000000000000000000000000060648201526084016106e5565b6000614352614fb2565b6000818152600080516020615a9983398151915260205260408120919250906001810180546001600160a01b0319166001600160a01b0389161790558b51600482019081556020808e015180519394508e936143b49260058701920190614ff1565b50604082015180516143d0916002840191602090910190614ff1565b50606082015180516143ec916003840191602090910190614ff1565b50608082015160048201805460ff1916600183600781111561441057614410615660565b021790555060a0820151805160058301908155602080830151805161443b92600687019201906150dd565b50604082015180516144579160028401916020909101906150dd565b505042600f8501819055601085018054336001600160a01b03199182168117909255601187019290925560128601805490921617905550614496915050565b600e8101805485919060ff191660018360038111156144b7576144b7615660565b0217905550600d81018a9055886144cf5760006144d2565b60075b60088201805460ff191660018360078111156144f0576144f0615660565b021790555060a08b01516020015151156146235760005b8b60a0015160200151518110156146215760008c60a00151602001518281518110614534576145346158c4565b60200260200101519050600183601501600061454d3090565b6001600160a01b0316633835b0d3856040518263ffffffff1660e01b815260040161457a91815260200190565b60206040518083038186803b15801561459257600080fd5b505afa1580156145a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ca91906158da565b60038111156145db576145db615660565b60038111156145ec576145ec615660565b81526020019081526020016000206000828254614609919061592c565b9091555061461a9150829050615911565b9050614507565b505b909a909950975050505050505050565b61463e816004613cd0565b6000818152600080516020615a99833981519152602052604090204260118201556012810180546001600160a01b0319163317905560408051602081019182905260009081905261469391600c840191614ff1565b505050565b600030600485810154604051636165696f60e01b8152918201526001600160a01b039190911690636165696f9060240160206040518083038186803b1580156146e057600080fd5b505afa1580156146f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614718919061595b565b9050600281600281111561472e5761472e615660565b14156147a25760405162461bcd60e51b815260206004820152602b60248201527f5375626f726465727320666f7220276f7574707574272067726f75702069732060448201527f6e6f7420616c6c6f77656400000000000000000000000000000000000000000060648201526084016106e5565b60028260028111156147b6576147b6615660565b1480156147c65750600b84015415155b1561489d576000805b600b86015481101561482557600b8601805460009190839081106147f5576147f56158c4565b9060005260206000200154905085811415614814576001925050614825565b5061481e81615911565b90506147cf565b508061489b576040805162461bcd60e51b81526020600482015260248101919091527f4f6666657220646f6573206e6f74207361746973667920706172656e74206f7260448201527f6465722073656c65637465644f66666572732073706563696669636174696f6e60648201526084016106e5565b505b60008260028111156148b1576148b1615660565b1415614a7c576000805b600a860154811015614a0657600a8601805460009190839081106148e1576148e16158c4565b906000526020600020015490506148f53090565b60405163cc04f00360e01b815260048101889052602481018390526001600160a01b03919091169063cc04f0039060440160206040518083038186803b15801561493e57600080fd5b505afa158015614952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149769190615870565b6149e85760405162461bcd60e51b815260206004820152603c60248201527f4f66666572207265737472696374696f6e7320636f6e666c696374732077697460448201527f6820706172656e74206f726465722073706563696669636174696f6e0000000060648201526084016106e5565b858114156149f557600192505b506149ff81615911565b90506148bb565b5080614a7a5760405162461bcd60e51b815260206004820152603d60248201527f4f6666657220646f6573206e6f74207361746973667920706172656e74206f7260448201527f64657220696e7075744f66666572732073706563696669636174696f6e00000060648201526084016106e5565b505b604051631e5dd86b60e01b81523090631e5dd86b90614aa290869060029060040161588d565b60206040518083038186803b158015614aba57600080fd5b505afa158015614ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614af29190615870565b15614b865760026000908152601585016020526040902054614b865760405162461bcd60e51b815260206004820152604160248201527f506172656e74206f726465722073706563696669636174696f6e20646f65732060448201527f6e6f742073617469736679207375626f66666572207265737472696374696f6e6064820152607360f81b608482015260a4016106e5565b604051631e5dd86b60e01b81523090631e5dd86b90614bac90869060039060040161588d565b60206040518083038186803b158015614bc457600080fd5b505afa158015614bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bfc9190615870565b15614c905760036000908152601585016020526040902054614c905760405162461bcd60e51b815260206004820152604160248201527f506172656e74206f726465722073706563696669636174696f6e20646f65732060448201527f6e6f742073617469736679207375626f66666572207265737472696374696f6e6064820152607360f81b608482015260a4016106e5565b604051631e5dd86b60e01b81523090631e5dd86b90614cb690869060019060040161588d565b60206040518083038186803b158015614cce57600080fd5b505afa158015614ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d069190615870565b15614d9a5760016000908152601585016020526040902054614d9a5760405162461bcd60e51b815260206004820152604160248201527f506172656e74206f726465722073706563696669636174696f6e20646f65732060448201527f6e6f742073617469736679207375626f66666572207265737472696374696f6e6064820152607360f81b608482015260a4016106e5565b604051631e5dd86b60e01b81523090631e5dd86b90614dc090869060009060040161588d565b60206040518083038186803b158015614dd857600080fd5b505afa158015614dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e109190615870565b15614ee6573060048086015460405163cc04f00360e01b815291820186905260248201526001600160a01b03919091169063cc04f0039060440160206040518083038186803b158015614e6257600080fd5b505afa158015614e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e9a9190615870565b614ee65760405162461bcd60e51b815260206004820152601f60248201527f4f6666657220646973616c6c6f7720706172656e7420544545206f666665720060448201526064016106e5565b50505050565b6000828152600080516020615a99833981519152602052604090204260118201556012810180546001600160a01b0319163317905560006005836007811115614f3757614f37615660565b14905060006006600884015460ff166007811115614f5757614f57615660565b148015614f7557506000846007811115614f7357614f73615660565b145b90508180614f805750805b15613df25760088301805485919060ff19166001836007811115614fa657614fa6615660565b02179055505050505050565b7ff68437791109705d2e300a0b0cfc858fedffc7438da1d9bf937e2f34afa0df7680546000919081908390614fe690615911565b918290555092915050565b828054614ffd9061597c565b90600052602060002090601f01602090048101928261501f5760008555615065565b82601f1061503857805160ff1916838001178555615065565b82800160010185558215615065579182015b8281111561506557825182559160200191906001019061504a565b50615071929150615117565b5090565b6040518060c0016040528060008152602001606081526020016060815260200160608152602001600060078111156150af576150af615660565b81526020016150d860405180606001604052806000815260200160608152602001606081525090565b905290565b828054828255906000526020600020908101928215615065579160200282018281111561506557825182559160200191906001019061504a565b5b808211156150715760008155600101615118565b60006020828403121561513e57600080fd5b5035919050565b801515811461515357600080fd5b50565b6000806040838503121561516957600080fd5b82359150602083013561517b81615145565b809150509250929050565b80356008811061519557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156151d3576151d361519a565b60405290565b60405160c0810167ffffffffffffffff811182821017156151d3576151d361519a565b604051601f8201601f1916810167ffffffffffffffff811182821017156152255761522561519a565b604052919050565b600082601f83011261523e57600080fd5b813567ffffffffffffffff8111156152585761525861519a565b61526b601f8201601f19166020016151fc565b81815284602083860101111561528057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156152b257600080fd5b833592506152c260208501615186565b9150604084013567ffffffffffffffff8111156152de57600080fd5b6152ea8682870161522d565b9150509250925092565b6000806040838503121561530757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561534e57835183529284019291840191600101615332565b50909695505050505050565b600082601f83011261536b57600080fd5b8135602067ffffffffffffffff8211156153875761538761519a565b8160051b6153968282016151fc565b92835284810182019282810190878511156153b057600080fd5b83870192505b848310156153cf578235825291830191908301906153b6565b979650505050505050565b6000606082840312156153ec57600080fd5b6153f46151b0565b905081358152602082013567ffffffffffffffff8082111561541557600080fd5b6154218583860161535a565b6020840152604084013591508082111561543a57600080fd5b506154478482850161535a565b60408301525092915050565b600060c0828403121561546557600080fd5b61546d6151d9565b905081358152602082013567ffffffffffffffff8082111561548e57600080fd5b61549a8583860161522d565b602084015260408401359150808211156154b357600080fd5b6154bf8583860161522d565b604084015260608401359150808211156154d857600080fd5b6154e48583860161522d565b60608401526154f560808501615186565b608084015260a084013591508082111561550e57600080fd5b5061551b848285016153da565b60a08301525092915050565b6000806000806080858703121561553d57600080fd5b843567ffffffffffffffff81111561555457600080fd5b61556087828801615453565b94505060208501359250604085013561557881615145565b9396929550929360600135925050565b600080600083850360a081121561559e57600080fd5b84359350602085013567ffffffffffffffff8111156155bc57600080fd5b6155c887828801615453565b9350506060603f19820112156155dd57600080fd5b506155e66151b0565b60408501356155f481615145565b8152606085013560208201526080909401356040850152509093909250565b6000815180845260005b818110156156395760208185018101518683018201520161561d565b8181111561564b576000602083870101525b50601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6008811061515357615153615660565b600081518084526020808501945080840160005b838110156156b65781518752958201959082019060010161569a565b509495945050505050565b60008151604084526156d66040850182615613565b602093840151949093019390935250919050565b6001600160a01b038416815260606020820152825160608201526000602084015160c06080840152615720610120840182615613565b90506040850151605f19808584030160a086015261573e8383615613565b925060608701519150808584030160c086015261575b8383615613565b92506080870151915061576d82615676565b8160e086015260a08701519150808584030161010086015250805182526020810151606060208401526157a36060840182615686565b90506040820151915082810360408401526157be8183615686565b9250505082810360408401526157d481856156c1565b9695505050505050565b600080604083850312156157f157600080fd5b82359150602083013567ffffffffffffffff81111561580f57600080fd5b61581b8582860161522d565b9150509250929050565b6001600160a01b038116811461515357600080fd5b60006020828403121561584c57600080fd5b81516118c481615825565b60006020828403121561586957600080fd5b5051919050565b60006020828403121561588257600080fd5b81516118c481615145565b82815260408101600483106158a4576158a4615660565b8260208301529392505050565b602081016158be83615676565b91905290565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156158ec57600080fd5b8151600481106118c457600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415615925576159256158fb565b5060010190565b6000821982111561593f5761593f6158fb565b500190565b600082821015615956576159566158fb565b500390565b60006020828403121561596d57600080fd5b8151600381106118c457600080fd5b600181811c9082168061599057607f821691505b602082108114156159b157634e487b7160e01b600052602260045260246000fd5b50919050565b60808101600386106159cb576159cb615660565b9481526001600160a01b03939093166020840152604083019190915260609091015290565b600060208083526000845481600182811c915080831680615a1257607f831692505b858310811415615a3057634e487b7160e01b85526022600452602485fd5b878601838152602001818015615a4d5760018114615a5e57615a89565b60ff19861682528782019650615a89565b60008b81526020902060005b86811015615a8357815484820152908501908901615a6a565b83019750505b5094999850505050505050505056fef68437791109705d2e300a0b0cfc858fedffc7438da1d9bf937e2f34afa0df77a2646970667358221220ac167d64b387133a1c13433cf78decf2b32f4091ef94480bda87c033d8233bbe64736f6c63430008090033",
981
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063920fba4f116100f9578063ba92763a11610097578063d54f807611610071578063d54f80761461051b578063d82a2bea1461052e578063df305d5914610541578063e0ab5ae01461055457600080fd5b8063ba92763a146104b6578063c9bd9ff0146104e6578063d09ef241146104f957600080fd5b8063a0a23849116100d3578063a0a2384914610436578063a90f3a2d14610469578063ab74e6421461047c578063b5b3b0511461048f57600080fd5b8063920fba4f146103e0578063975c4727146103f35780639959a56b1461042357600080fd5b80636eb691f4116101665780637a62b924116101405780637a62b9241461032d5780637d41fdd914610365578063835055c31461037857806388f4a6ba146103cd57600080fd5b80636eb691f41461029a578063752895dd146102ca578063779e423f146102ea57600080fd5b80632e5187fb116101a25780632e5187fb1461024e5780632f191ee814610261578063514fcac7146102745780635e9e78d01461028757600080fd5b80630f251358146101c957806319fed3981461020c5780631a02dc9214610221575b600080fd5b6101f96101d736600461512c565b6000908152600080516020615a9983398151915260205260409020600d015490565b6040519081526020015b60405180910390f35b61021f61021a366004615156565b610567565b005b6101f961022f36600461512c565b6000908152600080516020615a99833981519152602052604090205490565b61021f61025c36600461512c565b6107fb565b61021f61026f36600461529d565b610b32565b61021f61028236600461512c565b611096565b61021f6102953660046152f4565b611366565b6101f96102a836600461512c565b6000908152600080516020615a99833981519152602052604090206018015490565b6102dd6102d836600461512c565b6115dd565b6040516102039190615316565b61031d6102f836600461512c565b6000908152600080516020615a99833981519152602052604090206013015460ff1690565b6040519015158152602001610203565b61031d61033b36600461512c565b6000908152600080516020615a998339815191526020526040902060130154610100900460ff1690565b61021f61037336600461512c565b611654565b61038b61038636600461512c565b6117de565b6040516102039190815181526020808301516001600160a01b039081169183019190915260408084015190830152606092830151169181019190915260800190565b61031d6103db36600461512c565b611869565b61021f6103ee366004615527565b6118cb565b6101f961040136600461512c565b6000908152600080516020615a9983398151915260205260409020601a015490565b61021f61043136600461512c565b611e22565b61031d61044436600461512c565b6000908152600080516020615a99833981519152602052604090206019015460ff1690565b61021f610477366004615588565b612329565b61031d61048a36600461512c565b6129ec565b7ff68437791109705d2e300a0b0cfc858fedffc7438da1d9bf937e2f34afa0df76546101f9565b6101f96104c436600461512c565b6000908152600080516020615a99833981519152602052604090206002015490565b61031d6104f436600461512c565b612a53565b61050c61050736600461512c565b612a8a565b604051610203939291906156ea565b61021f6105293660046152f4565b612e76565b61021f61053c36600461512c565b613150565b61021f61054f3660046152f4565b613633565b61021f6105623660046157de565b61396b565b6000828152600080516020615a9983398151915260205260408120839150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156105cd57600080fd5b505afa1580156105e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610605919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b15801561064d57600080fd5b505afa158015610661573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610685919061583a565b90506001600160a01b03811633146106ee5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084015b60405180910390fd5b6000868152600080516020615a9983398151915260205260409020600881015460019060ff16600781111561072557610725615660565b146107985760405162461bcd60e51b815260206004820152602360248201527f4f72646572206d75737420626520696e20612070726f63657373696e6720737460448201527f617465000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b60198101805460ff1916871515908117909155600182015460405191825288916001600160a01b03909116907fb10fd7c76991a3f5a6ddad3affbfd91cba71af0ecf74de0aea2f04655f869133906020015b60405180910390a350505050505050565b6000818152600080516020615a9983398151915260205260408120829150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b15801561086157600080fd5b505afa158015610875573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610899919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b1580156108e157600080fd5b505afa1580156108f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610919919061583a565b90506001600160a01b038116331461097d5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b610986856129ec565b156109f95760405162461bcd60e51b815260206004820152602c60248201527f436f6d706c65746564206f726465722063616e27742062652072657475726e6560448201527f6420746f2070726f63657373000000000000000000000000000000000000000060648201526084016106e5565b610a0285611869565b610a4e5760405162461bcd60e51b815260206004820152601960248201527f4f72646572206861736e2774206265656e20737461727465640000000000000060448201526064016106e5565b6000858152600080516020615a99833981519152602052604090206008810154610a7c9060ff166001613c36565b610aed5760405162461bcd60e51b8152602060048201526024808201527f4e6f7420616c6c6f77656420746f207365742050726f63657373696e6720737460448201527f617475730000000000000000000000000000000000000000000000000000000060648201526084016106e5565b610b0f81600f0142600282015560030180546001600160a01b03191633179055565b610b1a866001613cd0565b6002810154610b2a574260028201555b505050505050565b6000838152600080516020615a9983398151915260205260408120849150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b158015610b9857600080fd5b505afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd0919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b158015610c1857600080fd5b505afa158015610c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c50919061583a565b90506001600160a01b0381163314610cb45760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b86610cbe81612a53565b610cfa5760405162461bcd60e51b815260206004820152600d60248201526c2ab735b737bbb71037b93232b960991b60448201526064016106e5565b610d03886129ec565b15610d505760405162461bcd60e51b815260206004820152601160248201527f416c726561647920636f6d706c6574656400000000000000000000000000000060448201526064016106e5565b6005876007811115610d6457610d64615660565b1480610d8157506004876007811115610d7f57610d7f615660565b145b80610d9d57506003876007811115610d9b57610d9b615660565b145b610e0f5760405162461bcd60e51b815260206004820152603560248201527f43616e20636f6d706c657465206f6e6c7920776974682073746174757320457260448201527f726f722c2043616e63656c6564206f7220446f6e65000000000000000000000060648201526084016106e5565b6000888152600080516020615a9983398151915260205260409020600881015460019060ff166007811115610e4657610e46615660565b1480610e6a57506002600882015460ff166007811115610e6857610e68615660565b145b610edc5760405162461bcd60e51b815260206004820152602d60248201527f43616e277420636f6d706c657465206265666f72652070726f63657373696e6760448201527f206f722063616e63656c696e670000000000000000000000000000000000000060648201526084016106e5565b610efe81600f0142600282015560030180546001600160a01b03191633179055565b8651610f1390600c83019060208a0190614ff1565b506005886007811115610f2857610f28615660565b1415610f405760138101805461ff0019166101001790555b6003886007811115610f5457610f54615660565b1415610ffc576002600882015460ff166007811115610f7557610f75615660565b14610fc25760405162461bcd60e51b815260206004820181905260248201527f4f72646572206d75737420626520696e2063616e63656c696e6720737461746560448201526064016106e5565b6000600e82015460ff166003811115610fdd57610fdd615660565b14610ff157601a810154600d820155610ffc565b600d810154601a8201555b6110068989613cd0565b6110248960058a600781111561101e5761101e615660565b14613d53565b306004808301546040516336dac04f60e21b81529182018c905260248201526001600160a01b03919091169063db6b013c90604401600060405180830381600087803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b50505050505050505050505050565b6000818152600080516020615a998339815191526020526040902060018101548291906001600160a01b031633146111105760405162461bcd60e51b815260206004820152601b60248201527f417661696c61626c65206f6e6c7920666f7220636f6e73756d6572000000000060448201526064016106e5565b6000838152600080516020615a99833981519152602052604090204260118201556012810180546001600160a01b0319163317905561114e846129ec565b156111a55760405162461bcd60e51b815260206004820152602160248201527f436f6d706c65746564206f726465722063616e27742062652063616e63656c656044820152601960fa1b60648201526084016106e5565b6002600882015460ff1660078111156111c0576111c0615660565b141561120e5760405162461bcd60e51b815260206004820152601160248201527f416c72656164792063616e63656c696e6700000000000000000000000000000060448201526064016106e5565b6002810154158015906112de57611226856002613cd0565b306004838101546002850154600d8601546040517fb98c9f3e00000000000000000000000000000000000000000000000000000000815293840192909252602483015260448201526001600160a01b03919091169063b98c9f3e9060640160206040518083038186803b15801561129c57600080fd5b505afa1580156112b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d49190615857565b600d8301556112f8565b6112e9856003613cd0565b6000600d8301819055601a8301555b306004808401546040516336dac04f60e21b815291820188905260248201526001600160a01b03919091169063db6b013c90604401600060405180830381600087803b15801561134757600080fd5b505af115801561135b573d6000803e3d6000fd5b505050505050505050565b6000828152600080516020615a9983398151915260205260408120839150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156113cc57600080fd5b505afa1580156113e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611404919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b15801561144c57600080fd5b505afa158015611460573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611484919061583a565b90506001600160a01b03811633146114e85760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b6114f186613df9565b6115635760405162461bcd60e51b815260206004820152602e60248201527f4f72646572207072696365206d757374206265206368616e676520696e20707260448201527f6f63657373696e6720737461746500000000000000000000000000000000000060648201526084016106e5565b6000868152600080516020615a99833981519152602052604090204260118201556012810180546001600160a01b03191633179055600d810186905560405186815287907fddcfcd158ba340cec1297a0d825aaf047af03d3fabcc01b151a6e1d09a7160f59060200160405180910390a250505050505050565b6000818152600080516020615a9983398151915260205260408120606091906003810180546040805160208084028201810190925282815293945083018282801561164757602002820191906000526020600020905b815481526020019060010190808311611633575b5050505050915050919050565b6000818152600080516020615a998339815191526020526040902060018101548291906001600160a01b031633146116ce5760405162461bcd60e51b815260206004820152601b60248201527f417661696c61626c65206f6e6c7920666f7220636f6e73756d6572000000000060448201526064016106e5565b6000838152600080516020615a9983398151915260205260409020600881015460079060ff168181111561170457611704615660565b146117515760405162461bcd60e51b815260206004820152601760248201527f4f72646572206d7573742062652073757370656e64656400000000000000000060448201526064016106e5565b61177381600f0142600282015560030180546001600160a01b03191633179055565b601781015480611784576000611787565b60065b60088301805460ff191660018360078111156117a5576117a5615660565b0217905550604051859033907fe83be2bd6985a0345b14c74f91632c816560fb0543defd73982467563c4b598990600090a35050505050565b604080516080810182526000808252602082018190529181018290526060810182905290611824836000908152600080516020615a998339815191526020526040902090565b60408051608081018252600f830154815260108301546001600160a01b0390811660208301526011840154928201929092526012909201541660608201529392505050565b6000818152600080516020615a99833981519152602052604081206000600882015460ff16600781111561189f5761189f615660565b14806118c4575060015b600882015460ff1660078111156118c2576118c2615660565b145b9392505050565b33308551604051634202334f60e01b815260048101919091526001600160a01b0383811660248301529190911690634202334f9060440160206040518083038186803b15801561191a57600080fd5b505afa15801561192e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119529190615870565b61198c5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016106e5565b8451604051631e5dd86b60e01b81523091631e5dd86b916119b3919060009060040161588d565b60206040518083038186803b1580156119cb57600080fd5b505afa1580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a039190615870565b15611a505760405162461bcd60e51b815260206004820181905260248201527f4f6666657220646973616c6c6f77207374616e64616c6f6e65206f726465727360448201526064016106e5565b84516040516308e161a160e21b81526004810191909152600090309063238586849060240160206040518083038186803b158015611a8d57600080fd5b505afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac59190615857565b905080851015611ad3578094505b60405163897ce7cf60e01b8152600090309063897ce7cf90611af99084906004016158b1565b60206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190615857565b905080861015611b57578095505b611b5f613ef8565b604051636eb1769f60e11b81526001600160a01b038581166004830152306024830152919091169063dd62ed3e9060440160206040518083038186803b158015611ba857600080fd5b505afa158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190615857565b861115611c3b5760405162461bcd60e51b8152602060048201526024808201527f416c6c6f77656420746f6b656e73206c657373207468616e20686f6c644465706044820152631bdcda5d60e21b60648201526084016106e5565b611c43613ef8565b6040516323b872dd60e01b81526001600160a01b0385811660048301523060248301526044820189905291909116906323b872dd90606401602060405180830381600087803b158015611c9557600080fd5b505af1158015611ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccd9190615870565b50600080611cdc898989613f70565b601881018a90558a51604051630624204f60e01b8152600481019190915291935091503090630624204f9060240160206040518083038186803b158015611d2257600080fd5b505afa158015611d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5a9190615870565b15611d6d57611d6882614633565b611dd5565b30895160405163d7208bb160e01b81526004810185905260248101919091526001600160a01b03919091169063d7208bb190604401600060405180830381600087803b158015611dbc57600080fd5b505af1158015611dd0573d6000803e3d6000fd5b505050505b885160405183815287906001600160a01b038816907fcdad6ab97fde7ccd3b74637bbb09ac75c9a4bf8b5684d210c9e61869bc67ac9b9060200160405180910390a4505050505050505050565b6000818152600080516020615a9983398151915260205260409020601381015460ff1615611e925760405162461bcd60e51b815260206004820152601860248201527f4368616e676520616c72656164792077697468647261776e000000000000000060448201526064016106e5565b60018101546001600160a01b03163314611f145760405162461bcd60e51b815260206004820152602160248201527f417661696c61626c65206f6e6c7920666f72204f7264657220636f6e73756d6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016106e5565b60006002600883015460ff166007811115611f3157611f31615660565b148015611fb7575030600483810154604051634221048560e11b8152918201526001600160a01b039190911690638442090a9060240160206040518083038186803b158015611f7f57600080fd5b505afa158015611f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb79190615870565b9050611fc2836129ec565b80611fca5750805b6120275760405162461bcd60e51b815260206004820152602860248201527f57697468647261776e20617661696c61626c65207768656e206f7264657220636044820152671bdb5c1b195d195960c21b60648201526084016106e5565b6000811561217c5760005b600b84015481101561217a57600b840180546000919083908110612058576120586158c4565b600091825260209091200154604051633835b0d360e01b8152600481018290529091506001903090633835b0d39060240160206040518083038186803b1580156120a157600080fd5b505afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906158da565b60038111156120ea576120ea615660565b1415612167576040516308e161a160e21b815260048101829052309063238586849060240160206040518083038186803b15801561212757600080fd5b505afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f9190615857565b92505061217a565b508061217281615911565b915050612032565b505b6013830154600090610100900460ff16156121985760006121a8565b8184601a01546121a8919061592c565b905080846018015410156121fe5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f756768206465706f736974000000000000000000000000000060448201526064016106e5565b60008185601801546122109190615944565b905061221a613ef8565b60018601546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561228257600080fd5b505af1158015612296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ba9190615870565b50808560180160008282546122cf9190615944565b909155505060138501805460ff19166001179055604051869033907ff2104e05a949a0a0c1f4b384977e9a631ddeccc6a9f14f878ca3d0510c763601906123199085815260200190565b60405180910390a3505050505050565b612332836129ec565b1561237f5760405162461bcd60e51b815260206004820152601960248201527f506172656e74206f7264657220697320636f6d706c657465640000000000000060448201526064016106e5565b6000838152600080516020615a99833981519152602052604081209050600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156123e457600080fd5b505afa1580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b15801561246457600080fd5b505afa158015612478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249c919061583a565b905060006124a987611869565b90508080156124c05750336001600160a01b038316145b806124e05750801580156124e0575060018401546001600160a01b031633145b61252c5760405162461bcd60e51b815260206004820152600d60248201527f4163636573732064656e6965640000000000000000000000000000000000000060448201526064016106e5565b308651604051634202334f60e01b815260048101919091523360248201526001600160a01b039190911690634202334f9060440160206040518083038186803b15801561257857600080fd5b505afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190615870565b6125ea5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016106e5565b8551604051636165696f60e01b815260048101919091526000903090636165696f9060240160206040518083038186803b15801561262757600080fd5b505afa15801561263b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265f919061595b565b9050600185601401600083600281111561267b5761267b615660565b600281111561268c5761268c615660565b815260200190815260200160002060008282546126a9919061592c565b909155505086516126bc90869083614698565b505060008460400151600014156127445785516040516308e161a160e21b81526004810191909152309063238586849060240160206040518083038186803b15801561270757600080fd5b505afa15801561271b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273f9190615857565b61274a565b84604001515b90506000808061275b898585613f70565b6001808a015481830180546001600160a01b0319166001600160a01b039092169190911790558c825560038a01805491820181556000908152602090200182905590925090506127c3600f880142600282015560030180546001600160a01b03191633179055565b83876018015410156128175760405162461bcd60e51b815260206004820152601f60248201527f4e6f7420656e6f75676820706172656e74206f72646572206465706f7369740060448201526064016106e5565b8387601801600082825461282b9190615944565b9250508190555083816018016000828254612846919061592c565b909155505087511561288357600082815260168801602052604081206001908190556017890180549192909161287d90849061592c565b90915550505b8851602089015160405133907fcdad6ab97fde7ccd3b74637bbb09ac75c9a4bf8b5684d210c9e61869bc67ac9b906128be9087815260200190565b60405180910390a46040518a9083907f862f137e7eeb5c8accaf91684d1f4344b5cdd331f887278389821125e4a1dab990600090a38851604051630624204f60e01b815260048101919091523090630624204f9060240160206040518083038186803b15801561292d57600080fd5b505afa158015612941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129659190615870565b156129785761297382614633565b6129e0565b30895160405163d7208bb160e01b81526004810185905260248101919091526001600160a01b03919091169063d7208bb190604401600060405180830381600087803b1580156129c757600080fd5b505af11580156129db573d6000803e3d6000fd5b505050505b50505050505050505050565b6000818152600080516020615a99833981519152602052604081206004600882015460ff166007811115612a2257612a22615660565b1480612a4657506005600882015460ff166007811115612a4457612a44615660565b145b806118c4575060036118a9565b60007ff68437791109705d2e300a0b0cfc858fedffc7438da1d9bf937e2f34afa0df7682158015906118c457505490911115919050565b6000612a94615075565b6040805180820190915260608152600060208201526000612acd856000908152600080516020615a998339815191526020526040902090565b90508060010160009054906101000a90046001600160a01b03168160040182600c01816040518060c001604052908160008201548152602001600182018054612b159061597c565b80601f0160208091040260200160405190810160405280929190818152602001828054612b419061597c565b8015612b8e5780601f10612b6357610100808354040283529160200191612b8e565b820191906000526020600020905b815481529060010190602001808311612b7157829003601f168201915b50505050508152602001600282018054612ba79061597c565b80601f0160208091040260200160405190810160405280929190818152602001828054612bd39061597c565b8015612c205780601f10612bf557610100808354040283529160200191612c20565b820191906000526020600020905b815481529060010190602001808311612c0357829003601f168201915b50505050508152602001600382018054612c399061597c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c659061597c565b8015612cb25780601f10612c8757610100808354040283529160200191612cb2565b820191906000526020600020905b815481529060010190602001808311612c9557829003601f168201915b5050509183525050600482015460209091019060ff166007811115612cd957612cd9615660565b6007811115612cea57612cea615660565b8152602001600582016040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015612d5757602002820191906000526020600020905b815481526020019060010190808311612d43575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015612daf57602002820191906000526020600020905b815481526020019060010190808311612d9b575b50505050508152505081525050915080604051806040016040529081600082018054612dda9061597c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e069061597c565b8015612e535780601f10612e2857610100808354040283529160200191612e53565b820191906000526020600020905b815481529060010190602001808311612e3657829003601f168201915b505050505081526020016001820154815250509050935093509350509193909250565b6000828152600080516020615a9983398151915260205260408120839150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b158015612edc57600080fd5b505afa158015612ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f14919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b158015612f5c57600080fd5b505afa158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f94919061583a565b90506001600160a01b0381163314612ff85760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b6000868152600080516020615a998339815191526020526040902061301c87613df9565b61308e5760405162461bcd60e51b815260206004820152603060248201527f5370656e74206465706f736974206d757374206265206368616e676520696e2060448201527f70726f63657373696e672073746174650000000000000000000000000000000060648201526084016106e5565b80601801548611156131085760405162461bcd60e51b815260206004820152603860248201527f4465706f736974207370656e74206d757374206265206c657373207468616e2060448201527f6f7220657175616c20746f20686f6c64206465706f736974000000000000000060648201526084016106e5565b601a8101869055600181015460405187815288916001600160a01b0316907f25d1f8deb5c0aaa3f1c70a4e07b3ad34335ee864f47de8c0dca68a7c91dd0542906020016107ea565b6000818152600080516020615a99833981519152602052604081209050600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156131b557600080fd5b505afa1580156131c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ed919061583a565b90506000306040517f0cc079f30000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529190911690630cc079f39060240160206040518083038186803b15801561324e57600080fd5b505afa158015613262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613286919061583a565b60405163897ce7cf60e01b8152909150600090309063897ce7cf906132b0906001906004016158b1565b60206040518083038186803b1580156132c857600080fd5b505afa1580156132dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133009190615857565b601a850154909150613311866129ec565b61336e5760405162461bcd60e51b815260206004820152602860248201527f57697468647261776e20617661696c61626c65207768656e206f7264657220636044820152671bdb5c1b195d195960c21b60648201526084016106e5565b336001600160a01b038416146133ec5760405162461bcd60e51b815260206004820152603160248201527f417661696c61626c65206f6e6c7920666f722070726f766964657220746f6b6560448201527f6e2072656369766572206163636f756e7400000000000000000000000000000060648201526084016106e5565b6013850154610100900460ff16156134465760405162461bcd60e51b815260206004820152601860248201527f50726f66697420616c72656164792077697468647261776e000000000000000060448201526064016106e5565b61344e613ef8565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000008152306004820152602481018390526001600160a01b03919091169063095ea7b390604401602060405180830381600087803b1580156134b157600080fd5b505af11580156134c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e99190615870565b50306040517f2ee409080000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018490529190911690632ee4090890604401600060405180830381600087803b15801561355057600080fd5b505af1158015613564573d6000803e3d6000fd5b5050505061356f3090565b6001600160a01b031663d719a90d60018584866040518563ffffffff1660e01b81526004016135a194939291906159b7565b600060405180830381600087803b1580156135bb57600080fd5b505af11580156135cf573d6000803e3d6000fd5b50505050808560180160008282546135e79190615944565b909155505060138501805461ff001916610100179055604051869033907fe2350354b45acad228120b59d977f2e487571e8d75fb3b74252a1034464449b8906123199085815260200190565b8161363d81612a53565b6136795760405162461bcd60e51b815260206004820152600d60248201526c2ab735b737bbb71037b93232b960991b60448201526064016106e5565b6000838152600080516020615a9983398151915260205260409020339061369f856129ec565b1580156136c557506002600882015460ff1660078111156136c2576136c2615660565b14155b61371b5760405162461bcd60e51b815260206004820152602160248201527f436f6d706c65746564206f726465722063616e277420626520726566696c6c656044820152601960fa1b60648201526084016106e5565b60018101546001600160a01b0383811691161461377a5760405162461bcd60e51b815260206004820152600e60248201527f4f776e6572206d69736d6174636800000000000000000000000000000000000060448201526064016106e5565b613782613ef8565b604051636eb1769f60e11b81526001600160a01b038481166004830152306024830152919091169063dd62ed3e9060440160206040518083038186803b1580156137cb57600080fd5b505afa1580156137df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138039190615857565b8411156138785760405162461bcd60e51b815260206004820152602660248201527f416c6c6f77656420746f6b656e73206c657373207468616e20726566696c6c2060448201527f616d6f756e74000000000000000000000000000000000000000000000000000060648201526084016106e5565b613880613ef8565b6040516323b872dd60e01b81526001600160a01b0384811660048301523060248301526044820187905291909116906323b872dd90606401602060405180830381600087803b1580156138d257600080fd5b505af11580156138e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390a9190615870565b508381601801600082825461391f919061592c565b909155505060405184815285906001600160a01b038416907f5dd58c11f2973d8fca72f1cffb326b5af815e81232ff1e581a7d534344fad71f9060200160405180910390a35050505050565b6000828152600080516020615a9983398151915260205260408120839150600030600483810154604051634e6e04f760e01b8152918201526001600160a01b039190911690634e6e04f79060240160206040518083038186803b1580156139d157600080fd5b505afa1580156139e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a09919061583a565b905060003060405163071ddd6760e11b81526001600160a01b0384811660048301529190911690630e3bbace9060240160206040518083038186803b158015613a5157600080fd5b505afa158015613a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a89919061583a565b90506001600160a01b0381163314613aed5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920617661696c61626c6520666f7220616374696f6e206163636f756e6044820152601d60fa1b60648201526084016106e5565b6000868152600080516020615a9983398151915260205260409020600881015460019060ff166007811115613b2457613b24615660565b1480613b4857506002600882015460ff166007811115613b4657613b46615660565b145b613bba5760405162461bcd60e51b815260206004820152603060248201527f4f72646572206d75737420626520696e20612070726f63657373696e67206f7260448201527f2063616e63656c696e672073746174650000000000000000000000000000000060648201526084016106e5565b613bdc81600f0142600282015560030180546001600160a01b03191633179055565b8551613bf190600c8301906020890190614ff1565b50600181015460405188916001600160a01b0316907fc3727ad3658a9131981b1b617e2928362ba398c4c5e7f3044ad2cadd44325568906107ea90600c8601906159f0565b6000806002846007811115613c4d57613c4d615660565b148015613c6b57506003836007811115613c6957613c69615660565b145b9050600080856007811115613c8257613c82615660565b1480613c9f57506001856007811115613c9d57613c9d615660565b145b8015613cbc57506001846007811115613cba57613cba615660565b145b90508180613cc75750805b95945050505050565b6000828152600080516020615a998339815191526020526040902060088101805483919060ff19166001836007811115613d0c57613d0c615660565b0217905550816007811115613d2357613d23615660565b60405184907fd9a86b644eb5f5b43cc8a700849852481080361c7a4b00ba646d1b46c5585f9590600090a3505050565b6000828152600080516020615a99833981519152602052604090208054613d7957505050565b80546000908152600080516020615a998339815191526020526040812060008581526016820160205260408120546017830180549394509092839290613dc0908490615944565b9091555084905080613dd457506017820154155b15613df2578254613df29085613deb576000614eec565b6005614eec565b5050505050565b6000818152600080516020615a99833981519152602052604081206001600882015460ff166007811115613e2f57613e2f615660565b1415613e3e5750600192915050565b6002600882015460ff166007811115613e5957613e59615660565b148015613ee1575030600482810154604051634221048560e11b8152918201526001600160a01b039190911690638442090a9060240160206040518083038186803b158015613ea757600080fd5b505afa158015613ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613edf9190615870565b155b15613eef5750600192915050565b50600092915050565b6000306001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b158015613f3357600080fd5b505afa158015613f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6b919061583a565b905090565b8251604051634e6e04f760e01b815260048101919091526000908190339082903090634e6e04f79060240160206040518083038186803b158015613fb357600080fd5b505afa158015613fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613feb919061583a565b8751604051633835b0d360e01b815260048101919091529091506000903090633835b0d39060240160206040518083038186803b15801561402b57600080fd5b505afa15801561403f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406391906158da565b905060008082600381111561407a5761407a615660565b8a516040517fe51334fb000000000000000000000000000000000000000000000000000000008152600481019190915291149150309063e51334fb9060240160206040518083038186803b1580156140d157600080fd5b505afa1580156140e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141099190615870565b6141555760405162461bcd60e51b815260206004820152601460248201527f4f66666572206d7573742062652061637469766500000000000000000000000060448201526064016106e5565b306040517fded116690000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152919091169063ded116699060240160206040518083038186803b1580156141b257600080fd5b505afa1580156141c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ea9190615870565b6142425760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682070726f7669646572207365637572697479206465706044820152631bdcda5d60e21b60648201526084016106e5565b8015806142d7575088516040517f3d8e40e200000000000000000000000000000000000000000000000000000000815260048101919091523090633d8e40e29060240160206040518083038186803b15801561429d57600080fd5b505afa1580156142b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d59190615870565b155b6143485760405162461bcd60e51b8152602060048201526024808201527f544545206f666665722062656e63686d61726b206d757374206265207665726960448201527f666965640000000000000000000000000000000000000000000000000000000060648201526084016106e5565b6000614352614fb2565b6000818152600080516020615a9983398151915260205260408120919250906001810180546001600160a01b0319166001600160a01b0389161790558b51600482019081556020808e015180519394508e936143b49260058701920190614ff1565b50604082015180516143d0916002840191602090910190614ff1565b50606082015180516143ec916003840191602090910190614ff1565b50608082015160048201805460ff1916600183600781111561441057614410615660565b021790555060a0820151805160058301908155602080830151805161443b92600687019201906150dd565b50604082015180516144579160028401916020909101906150dd565b505042600f8501819055601085018054336001600160a01b03199182168117909255601187019290925560128601805490921617905550614496915050565b600e8101805485919060ff191660018360038111156144b7576144b7615660565b0217905550600d81018a9055886144cf5760006144d2565b60075b60088201805460ff191660018360078111156144f0576144f0615660565b021790555060a08b01516020015151156146235760005b8b60a0015160200151518110156146215760008c60a00151602001518281518110614534576145346158c4565b60200260200101519050600183601501600061454d3090565b6001600160a01b0316633835b0d3856040518263ffffffff1660e01b815260040161457a91815260200190565b60206040518083038186803b15801561459257600080fd5b505afa1580156145a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ca91906158da565b60038111156145db576145db615660565b60038111156145ec576145ec615660565b81526020019081526020016000206000828254614609919061592c565b9091555061461a9150829050615911565b9050614507565b505b909a909950975050505050505050565b61463e816004613cd0565b6000818152600080516020615a99833981519152602052604090204260118201556012810180546001600160a01b0319163317905560408051602081019182905260009081905261469391600c840191614ff1565b505050565b600030600485810154604051636165696f60e01b8152918201526001600160a01b039190911690636165696f9060240160206040518083038186803b1580156146e057600080fd5b505afa1580156146f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614718919061595b565b9050600281600281111561472e5761472e615660565b14156147a25760405162461bcd60e51b815260206004820152602b60248201527f5375626f726465727320666f7220276f7574707574272067726f75702069732060448201527f6e6f7420616c6c6f77656400000000000000000000000000000000000000000060648201526084016106e5565b60028260028111156147b6576147b6615660565b1480156147c65750600b84015415155b1561489d576000805b600b86015481101561482557600b8601805460009190839081106147f5576147f56158c4565b9060005260206000200154905085811415614814576001925050614825565b5061481e81615911565b90506147cf565b508061489b576040805162461bcd60e51b81526020600482015260248101919091527f4f6666657220646f6573206e6f74207361746973667920706172656e74206f7260448201527f6465722073656c65637465644f66666572732073706563696669636174696f6e60648201526084016106e5565b505b60008260028111156148b1576148b1615660565b1415614a7c576000805b600a860154811015614a0657600a8601805460009190839081106148e1576148e16158c4565b906000526020600020015490506148f53090565b60405163cc04f00360e01b815260048101889052602481018390526001600160a01b03919091169063cc04f0039060440160206040518083038186803b15801561493e57600080fd5b505afa158015614952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149769190615870565b6149e85760405162461bcd60e51b815260206004820152603c60248201527f4f66666572207265737472696374696f6e7320636f6e666c696374732077697460448201527f6820706172656e74206f726465722073706563696669636174696f6e0000000060648201526084016106e5565b858114156149f557600192505b506149ff81615911565b90506148bb565b5080614a7a5760405162461bcd60e51b815260206004820152603d60248201527f4f6666657220646f6573206e6f74207361746973667920706172656e74206f7260448201527f64657220696e7075744f66666572732073706563696669636174696f6e00000060648201526084016106e5565b505b604051631e5dd86b60e01b81523090631e5dd86b90614aa290869060029060040161588d565b60206040518083038186803b158015614aba57600080fd5b505afa158015614ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614af29190615870565b15614b865760026000908152601585016020526040902054614b865760405162461bcd60e51b815260206004820152604160248201527f506172656e74206f726465722073706563696669636174696f6e20646f65732060448201527f6e6f742073617469736679207375626f66666572207265737472696374696f6e6064820152607360f81b608482015260a4016106e5565b604051631e5dd86b60e01b81523090631e5dd86b90614bac90869060039060040161588d565b60206040518083038186803b158015614bc457600080fd5b505afa158015614bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bfc9190615870565b15614c905760036000908152601585016020526040902054614c905760405162461bcd60e51b815260206004820152604160248201527f506172656e74206f726465722073706563696669636174696f6e20646f65732060448201527f6e6f742073617469736679207375626f66666572207265737472696374696f6e6064820152607360f81b608482015260a4016106e5565b604051631e5dd86b60e01b81523090631e5dd86b90614cb690869060019060040161588d565b60206040518083038186803b158015614cce57600080fd5b505afa158015614ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d069190615870565b15614d9a5760016000908152601585016020526040902054614d9a5760405162461bcd60e51b815260206004820152604160248201527f506172656e74206f726465722073706563696669636174696f6e20646f65732060448201527f6e6f742073617469736679207375626f66666572207265737472696374696f6e6064820152607360f81b608482015260a4016106e5565b604051631e5dd86b60e01b81523090631e5dd86b90614dc090869060009060040161588d565b60206040518083038186803b158015614dd857600080fd5b505afa158015614dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e109190615870565b15614ee6573060048086015460405163cc04f00360e01b815291820186905260248201526001600160a01b03919091169063cc04f0039060440160206040518083038186803b158015614e6257600080fd5b505afa158015614e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e9a9190615870565b614ee65760405162461bcd60e51b815260206004820152601f60248201527f4f6666657220646973616c6c6f7720706172656e7420544545206f666665720060448201526064016106e5565b50505050565b6000828152600080516020615a99833981519152602052604090204260118201556012810180546001600160a01b0319163317905560006005836007811115614f3757614f37615660565b14905060006006600884015460ff166007811115614f5757614f57615660565b148015614f7557506000846007811115614f7357614f73615660565b145b90508180614f805750805b15613df25760088301805485919060ff19166001836007811115614fa657614fa6615660565b02179055505050505050565b7ff68437791109705d2e300a0b0cfc858fedffc7438da1d9bf937e2f34afa0df7680546000919081908390614fe690615911565b918290555092915050565b828054614ffd9061597c565b90600052602060002090601f01602090048101928261501f5760008555615065565b82601f1061503857805160ff1916838001178555615065565b82800160010185558215615065579182015b8281111561506557825182559160200191906001019061504a565b50615071929150615117565b5090565b6040518060c0016040528060008152602001606081526020016060815260200160608152602001600060078111156150af576150af615660565b81526020016150d860405180606001604052806000815260200160608152602001606081525090565b905290565b828054828255906000526020600020908101928215615065579160200282018281111561506557825182559160200191906001019061504a565b5b808211156150715760008155600101615118565b60006020828403121561513e57600080fd5b5035919050565b801515811461515357600080fd5b50565b6000806040838503121561516957600080fd5b82359150602083013561517b81615145565b809150509250929050565b80356008811061519557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156151d3576151d361519a565b60405290565b60405160c0810167ffffffffffffffff811182821017156151d3576151d361519a565b604051601f8201601f1916810167ffffffffffffffff811182821017156152255761522561519a565b604052919050565b600082601f83011261523e57600080fd5b813567ffffffffffffffff8111156152585761525861519a565b61526b601f8201601f19166020016151fc565b81815284602083860101111561528057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156152b257600080fd5b833592506152c260208501615186565b9150604084013567ffffffffffffffff8111156152de57600080fd5b6152ea8682870161522d565b9150509250925092565b6000806040838503121561530757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561534e57835183529284019291840191600101615332565b50909695505050505050565b600082601f83011261536b57600080fd5b8135602067ffffffffffffffff8211156153875761538761519a565b8160051b6153968282016151fc565b92835284810182019282810190878511156153b057600080fd5b83870192505b848310156153cf578235825291830191908301906153b6565b979650505050505050565b6000606082840312156153ec57600080fd5b6153f46151b0565b905081358152602082013567ffffffffffffffff8082111561541557600080fd5b6154218583860161535a565b6020840152604084013591508082111561543a57600080fd5b506154478482850161535a565b60408301525092915050565b600060c0828403121561546557600080fd5b61546d6151d9565b905081358152602082013567ffffffffffffffff8082111561548e57600080fd5b61549a8583860161522d565b602084015260408401359150808211156154b357600080fd5b6154bf8583860161522d565b604084015260608401359150808211156154d857600080fd5b6154e48583860161522d565b60608401526154f560808501615186565b608084015260a084013591508082111561550e57600080fd5b5061551b848285016153da565b60a08301525092915050565b6000806000806080858703121561553d57600080fd5b843567ffffffffffffffff81111561555457600080fd5b61556087828801615453565b94505060208501359250604085013561557881615145565b9396929550929360600135925050565b600080600083850360a081121561559e57600080fd5b84359350602085013567ffffffffffffffff8111156155bc57600080fd5b6155c887828801615453565b9350506060603f19820112156155dd57600080fd5b506155e66151b0565b60408501356155f481615145565b8152606085013560208201526080909401356040850152509093909250565b6000815180845260005b818110156156395760208185018101518683018201520161561d565b8181111561564b576000602083870101525b50601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6008811061515357615153615660565b600081518084526020808501945080840160005b838110156156b65781518752958201959082019060010161569a565b509495945050505050565b60008151604084526156d66040850182615613565b602093840151949093019390935250919050565b6001600160a01b038416815260606020820152825160608201526000602084015160c06080840152615720610120840182615613565b90506040850151605f19808584030160a086015261573e8383615613565b925060608701519150808584030160c086015261575b8383615613565b92506080870151915061576d82615676565b8160e086015260a08701519150808584030161010086015250805182526020810151606060208401526157a36060840182615686565b90506040820151915082810360408401526157be8183615686565b9250505082810360408401526157d481856156c1565b9695505050505050565b600080604083850312156157f157600080fd5b82359150602083013567ffffffffffffffff81111561580f57600080fd5b61581b8582860161522d565b9150509250929050565b6001600160a01b038116811461515357600080fd5b60006020828403121561584c57600080fd5b81516118c481615825565b60006020828403121561586957600080fd5b5051919050565b60006020828403121561588257600080fd5b81516118c481615145565b82815260408101600483106158a4576158a4615660565b8260208301529392505050565b602081016158be83615676565b91905290565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156158ec57600080fd5b8151600481106118c457600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415615925576159256158fb565b5060010190565b6000821982111561593f5761593f6158fb565b500190565b600082821015615956576159566158fb565b500390565b60006020828403121561596d57600080fd5b8151600381106118c457600080fd5b600181811c9082168061599057607f821691505b602082108114156159b157634e487b7160e01b600052602260045260246000fd5b50919050565b60808101600386106159cb576159cb615660565b9481526001600160a01b03939093166020840152604083019190915260609091015290565b600060208083526000845481600182811c915080831680615a1257607f831692505b858310811415615a3057634e487b7160e01b85526022600452602485fd5b878601838152602001818015615a4d5760018114615a5e57615a89565b60ff19861682528782019650615a89565b60008b81526020902060005b86811015615a8357815484820152908501908901615a6a565b83019750505b5094999850505050505050505056fef68437791109705d2e300a0b0cfc858fedffc7438da1d9bf937e2f34afa0df77a2646970667358221220ac167d64b387133a1c13433cf78decf2b32f4091ef94480bda87c033d8233bbe64736f6c63430008090033",
982
+ "linkReferences": {},
983
+ "deployedLinkReferences": {}
984
+ }