-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.json
468 lines (468 loc) · 51.4 KB
/
config.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
{
"contractABI": [
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "channels",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "channelId",
"type": "uint256"
},
{
"indexed": false,
"name": "publisher",
"type": "address"
}
],
"name": "ChannelCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "channelId",
"type": "uint256"
},
{
"indexed": false,
"name": "publisher",
"type": "address"
}
],
"name": "PublisherJoined",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "channelId",
"type": "uint256"
},
{
"indexed": false,
"name": "publisher",
"type": "address"
},
{
"indexed": false,
"name": "messageId",
"type": "uint256"
}
],
"name": "MessagePublished",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "channelId",
"type": "uint256"
},
{
"indexed": false,
"name": "consumerGroupId",
"type": "bytes32"
},
{
"indexed": false,
"name": "subscriber",
"type": "address"
}
],
"name": "ConsumerJoined",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "channelId",
"type": "uint256"
},
{
"indexed": false,
"name": "consumerGroupId",
"type": "bytes32"
},
{
"indexed": false,
"name": "subscriber",
"type": "address"
},
{
"indexed": false,
"name": "messageId",
"type": "uint256"
}
],
"name": "MessagePopped",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "channelId",
"type": "uint256"
},
{
"indexed": false,
"name": "consumerGroupId",
"type": "bytes32"
},
{
"indexed": false,
"name": "subscriber",
"type": "address"
},
{
"indexed": false,
"name": "messageId",
"type": "uint256"
}
],
"name": "MessageSkipped",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "channelId",
"type": "uint256"
},
{
"indexed": false,
"name": "consumerGroupId",
"type": "bytes32"
},
{
"indexed": false,
"name": "subscriber",
"type": "address"
},
{
"indexed": false,
"name": "messageId",
"type": "uint256"
}
],
"name": "MessageRead",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "_xpub",
"type": "bytes"
},
{
"name": "_index",
"type": "uint256"
},
{
"name": "_channelMetadata",
"type": "string"
}
],
"name": "createChannel",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_index",
"type": "uint256"
}
],
"name": "join",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_message",
"type": "bytes"
}
],
"name": "publish",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_xpub",
"type": "bytes"
},
{
"name": "_index",
"type": "uint256"
},
{
"name": "_messageTimeout",
"type": "uint256"
},
{
"name": "_numOfRetry",
"type": "uint256"
}
],
"name": "subscribe",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_skipDepth",
"type": "uint256"
}
],
"name": "getNext",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_messageId",
"type": "uint256"
}
],
"name": "skip",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_messageId",
"type": "uint256"
}
],
"name": "confirm",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_publisher",
"type": "address"
}
],
"name": "isPublisher",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_subscriber",
"type": "address"
}
],
"name": "isSubscriber",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
},
{
"name": "_messageId",
"type": "uint256"
}
],
"name": "getMessage",
"outputs": [
{
"name": "message",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_channelId",
"type": "uint256"
}
],
"name": "getChannelMetadata",
"outputs": [
{
"name": "channelMetadata",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"contractCode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506154c3806100606000396000f300608060405260043610620000d3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631b23619e14620000d85780632e8461f114620001265780632e98c031146200018e5780633a05f11714620001f657806366fa324a14620002a257806379e66b461462000376578063807b989a14620003c85780638651dc1e1462000474578063da0632ad14620004c6578063e5949b5d146200057c578063e5d5494a14620005ec578063f2a18cd8146200063e578063f851a44014620006cc575b600080fd5b348015620000e557600080fd5b5062000110600480360381019080803590602001909291908035906020019092919050505062000726565b6040518082815260200191505060405180910390f35b3480156200013357600080fd5b506200017460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000b14565b604051808215151515815260200191505060405180910390f35b3480156200019b57600080fd5b50620001dc60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000c01565b604051808215151515815260200191505060405180910390f35b3480156200020357600080fd5b506200028860048036038101908080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190803590602001909291908035906020019092919050505062000cee565b604051808215151515815260200191505060405180910390f35b348015620002af57600080fd5b506200035c600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000fb9565b604051808215151515815260200191505060405180910390f35b3480156200038357600080fd5b50620003ae6004803603810190808035906020019092919080359060200190929190505050620011dc565b604051808215151515815260200191505060405180910390f35b348015620003d557600080fd5b50620003f6600480360381019080803590602001909291905050506200143c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620004385780820151818401526020810190506200041b565b50505050905090810190601f168015620004665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200048157600080fd5b50620004ac6004803603810190808035906020019092919080359060200190929190505050620015cf565b604051808215151515815260200191505060405180910390f35b348015620004d357600080fd5b50620004fe600480360381019080803590602001909291908035906020019092919050505062001827565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200054057808201518184015260208101905062000523565b50505050905090810190601f1680156200056e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200058957600080fd5b50620005aa6004803603810190808035906020019092919050505062001941565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620005f957600080fd5b5062000624600480360381019080803590602001909291908035906020019092919050505062001980565b604051808215151515815260200191505060405180910390f35b3480156200064b57600080fd5b50620006b260048036038101908080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062001bd8565b604051808215151515815260200191505060405180910390f35b348015620006d957600080fd5b50620006e462001da9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600080620007378662001dce565b92508273ffffffffffffffffffffffffffffffffffffffff166328424f3133876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b158015620007dc57600080fd5b505af1158015620007f1573d6000803e3d6000fd5b505050506040513d60408110156200080857600080fd5b810190808051906020019092919080519060200190929190505050915091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141515620009ad577f8b8d698d891fe0a35a70f1359cfcde21144b52278367ccb54ca1ed99d72ce256868473ffffffffffffffffffffffffffffffffffffffff16636ab732ea336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156200090f57600080fd5b505af115801562000924573d6000803e3d6000fd5b505050506040513d60208110156200093b57600080fd5b810190808051906020019092919050505033856040518085815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390a15b7fd5f2b81679fb1a24517a47a41f8eb19c8f0d778a957e8ceddb6c91035c80e929868473ffffffffffffffffffffffffffffffffffffffff16636ab732ea336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562000a6b57600080fd5b505af115801562000a80573d6000803e3d6000fd5b505050506040513d602081101562000a9757600080fd5b810190808051906020019092919050505033846040518085815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390a180935050505092915050565b600062000b218362001dce565b73ffffffffffffffffffffffffffffffffffffffff1663c4804ef0836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562000bbc57600080fd5b505af115801562000bd1573d6000803e3d6000fd5b505050506040513d602081101562000be857600080fd5b8101908080519060200190929190505050905092915050565b600062000c0e8362001dce565b73ffffffffffffffffffffffffffffffffffffffff166341859ac8836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562000ca957600080fd5b505af115801562000cbe573d6000803e3d6000fd5b505050506040513d602081101562000cd557600080fd5b8101908080519060200190929190505050905092915050565b60008062000cfc8762001dce565b90508073ffffffffffffffffffffffffffffffffffffffff1663069acc99873387876040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101562000dc957808201518184015260208101905062000dac565b50505050905090810190601f16801562000df75780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801562000e1a57600080fd5b505af115801562000e2f573d6000803e3d6000fd5b505050506040513d602081101562000e4657600080fd5b8101908080519060200190929190505050507f23a0d39151b79ce07bed17c46566848724470256a53e9911976b192e737818d1878273ffffffffffffffffffffffffffffffffffffffff16636ab732ea336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562000f1657600080fd5b505af115801562000f2b573d6000803e3d6000fd5b505050506040513d602081101562000f4257600080fd5b8101908080519060200190929190505050336040518084815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1600191505095945050505050565b6000600133858462000fca62001e91565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156200103f57808201518184015260208101905062001022565b50505050905090810190601f1680156200106d5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015620010a85780820151818401526020810190506200108b565b50505050905090810190601f168015620010d65780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f080158015620010fb573d6000803e3d6000fd5b5090806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fc362c5c91addfd4025af505902d9e6cd9762829a8dc1cef8e37bbf6b94d31622600180805490500333604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600190509392505050565b6000806060620011ec8562001dce565b91508173ffffffffffffffffffffffffffffffffffffffff1663eddb99866040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156200125357600080fd5b505af115801562001268573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156200129357600080fd5b810190808051640100000000811115620012ac57600080fd5b82810190506020810184811115620012c357600080fd5b8151856001820283011164010000000082111715620012e157600080fd5b505092919050505090508173ffffffffffffffffffffffffffffffffffffffff166328ffe6c8336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156200138757600080fd5b505af11580156200139c573d6000803e3d6000fd5b505050506040513d6020811015620013b357600080fd5b8101908080519060200190929190505050507f566cb7af33c20ffc3f3c1ad9276c97f374c21231b83207af478f239e778e34b38533604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a160019250505092915050565b606060008280600180549050111515620014be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4368616e6e656c20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b620014c98462001dce565b91508173ffffffffffffffffffffffffffffffffffffffff1663b56a4a796040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156200153057600080fd5b505af115801562001545573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156200157057600080fd5b8101908080516401000000008111156200158957600080fd5b82810190506020810184811115620015a057600080fd5b8151856001820283011164010000000082111715620015be57600080fd5b505092919050505092505050919050565b600080620015dd8462001dce565b90508073ffffffffffffffffffffffffffffffffffffffff1663d7ca01b533856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156200168357600080fd5b505af115801562001698573d6000803e3d6000fd5b505050506040513d6020811015620016af57600080fd5b8101908080519060200190929190505050507f7f8af0b4d8dcd51f9fbfa10558e63a565ae905cf85086a903f11c09d42f3e0e7848273ffffffffffffffffffffffffffffffffffffffff16636ab732ea336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156200177f57600080fd5b505af115801562001794573d6000803e3d6000fd5b505050506040513d6020811015620017ab57600080fd5b810190808051906020019092919050505033866040518085815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390a1600191505092915050565b6060620018348362001dce565b73ffffffffffffffffffffffffffffffffffffffff166386f79edb836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015620018a357600080fd5b505af1158015620018b8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015620018e357600080fd5b810190808051640100000000811115620018fc57600080fd5b828101905060208101848111156200191357600080fd5b81518560018202830111640100000000821117156200193157600080fd5b5050929190505050905092915050565b6001818154811015156200195157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806200198e8462001dce565b90508073ffffffffffffffffffffffffffffffffffffffff16633a8593f233856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801562001a3457600080fd5b505af115801562001a49573d6000803e3d6000fd5b505050506040513d602081101562001a6057600080fd5b8101908080519060200190929190505050507f8b8d698d891fe0a35a70f1359cfcde21144b52278367ccb54ca1ed99d72ce256848273ffffffffffffffffffffffffffffffffffffffff16636ab732ea336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562001b3057600080fd5b505af115801562001b45573d6000803e3d6000fd5b505050506040513d602081101562001b5c57600080fd5b810190808051906020019092919050505033866040518085815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390a1600191505092915050565b60007f1d0d19cc6b93c10d864e3337dac848ce9ada74c3944a88acc6f68b7bc9d00af2833362001c088662001dce565b73ffffffffffffffffffffffffffffffffffffffff1663502596be86336040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b8381101562001cc457808201518184015260208101905062001ca7565b50505050905090810190601f16801562001cf25780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801562001d1357600080fd5b505af115801562001d28573d6000803e3d6000fd5b505050506040513d602081101562001d3f57600080fd5b8101908080519060200190929190505050604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a16001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000818060018054905011151562001e4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4368616e6e656c20646f6573206e6f742065786973742e00000000000000000081525060200191505060405180910390fd5b60018381548110151562001e5e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6040516135f58062001ea383390190560060806040523480156200001157600080fd5b50604051620035f5380380620035f583398101806040528101908080519060200190929190805182019291906020018051820192919050505060018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160029080519060200190620000b992919062000169565b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806003908051906020019062000112929190620001f0565b50620001316200014964010000000002620032d4176401000000009004565b600660008201518160010155905050505050620002b3565b6200015362000277565b6020604051908101604052806000815250905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ac57805160ff1916838001178555620001dd565b82800160010185558215620001dd579182015b82811115620001dc578251825591602001919060010190620001bf565b5b509050620001ec91906200028b565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200023357805160ff191683800117855562000264565b8280016001018555821562000264579182015b828111156200026357825182559160200191906001019062000246565b5b5090506200027391906200028b565b5090565b602060405190810160405280600081525090565b620002b091905b80821115620002ac57600081600090555060010162000292565b5090565b90565b61333280620002c36000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063069acc99146100d55780630a4d85cd1461018a57806328424f31146101e557806328ffe6c81461024d5780633a8593f2146102a857806341859ac81461030d578063502596be146103685780636ab732ea1461040557806386f79edb14610464578063b56a4a791461050a578063c4804ef01461059a578063d1d451ca146105f5578063d7ca01b51461064c578063eddb9986146106b1575b600080fd5b3480156100e157600080fd5b50610170600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610741565b604051808215151515815260200191505060405180910390f35b34801561019657600080fd5b506101cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b45565b604051808215151515815260200191505060405180910390f35b3480156101f157600080fd5b50610230600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b65565b604051808381526020018281526020019250505060405180910390f35b34801561025957600080fd5b5061028e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e81565b604051808215151515815260200191505060405180910390f35b3480156102b457600080fd5b506102f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fcd565b604051808215151515815260200191505060405180910390f35b34801561031957600080fd5b5061034e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611264565b604051808215151515815260200191505060405180910390f35b34801561037457600080fd5b506103ef600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a4565b6040518082815260200191505060405180910390f35b34801561041157600080fd5b50610446600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061159a565b60405180826000191660001916815260200191505060405180910390f35b34801561047057600080fd5b5061048f600480360381019080803590602001909291905050506116cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104cf5780820151818401526020810190506104b4565b50505050905090810190601f1680156104fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561051657600080fd5b5061051f6117d4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561055f578082015181840152602081019050610544565b50505050905090810190601f16801561058c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105a657600080fd5b506105db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611872565b604051808215151515815260200191505060405180910390f35b34801561060157600080fd5b5061060a6119b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b50610697600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119d9565b604051808215151515815260200191505060405180910390f35b3480156106bd57600080fd5b506106c6611c70565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107065780820151818401526020810190506106eb565b50505050905090810190601f1680156107335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b866040518082805190602001908083835b6020831015156108665780518252602082019150602081019050602083039250610841565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915081600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081600019169055506005600083600019166000191681526020019081526020016000209050600085111515610972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206d6573736167652074696d656f75742e000000000000000081525060200191505060405180910390fd5b8481600b01819055508381600c018190555080600d0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff161515610a67576109e4611d0e565b81600d0160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816003015560608201518160040160006101000a81548160ff0219169083151502179055509050505b8060120160009054906101000a900460ff161515610b3757610a87611d0e565b8160010160008201518160000155602082015181600101556040820151816003015560608201518160040160006101000a81548160ff021916908315150217905550905050610ad4611d0e565b8160060160008201518160000155602082015181600101556040820151816003015560608201518160040160006101000a81548160ff02191690831515021790555090505060018160120160006101000a81548160ff0219169083151502179055505b600192505050949350505050565b60016020528060005260406000206000915054906101000a900460ff1681565b6000806000803373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b85610c5f81611872565b1515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4f6e6c79207375627363726962657220697320616c6c6f77656420746f206d6181526020017f6b652074686973207472616e73616374696f6e2e00000000000000000000000081525060400191505060405180910390fd5b60056000600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000191660001916815260200190815260200160002092508260120160009054906101000a900460ff161515610ddb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f436f6e73756d65722067726f7570206e6f7420637265617465642e000000000081525060200191505060405180910390fd5b610df38388886006611d81909392919063ffffffff16565b915082600c015483600f016000848152602001908152602001600020541115610e5057610e2e8388846006612617909392919063ffffffff16565b81610e478489896006611d81909392919063ffffffff16565b94509450610e77565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82945094505b5050509250929050565b60003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000803373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b836110c481611872565b151561115e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4f6e6c79207375627363726962657220697320616c6c6f77656420746f206d6181526020017f6b652074686973207472616e73616374696f6e2e00000000000000000000000081525060400191505060405180910390fd5b60056000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000191660001916815260200190815260200160002091508160120160009054906101000a900460ff161515611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f436f6e73756d65722067726f7570206e6f7420637265617465642e000000000081525060200191505060405180910390fd5b6112588286866006612617909392919063ffffffff16565b60019250505092915050565b60003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000803373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611491576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b82600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4f6e6c79207075626c6973686572732061726520616c6c6f77656420746f206d81526020017f616b652074686973207472616e73616374696f6e2e000000000000000000000081525060400191505060405180910390fd5b61158d85600661288e90919063ffffffff16565b9150819250505092915050565b60003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611686576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60603373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b6117cd82600661297b90919063ffffffff16565b9050919050565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561186a5780601f1061183f5761010080835404028352916020019161186a565b820191906000526020600020905b81548152906001019060200180831161184d57829003601f168201915b505050505081565b60003373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561195e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b600060010260001916600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000191614159050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ac6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4f6e6c79206368616e6e656c206d616e6167657220697320616c6c6f7765642081526020017f746f20616363657373206368616e6e656c2e000000000000000000000000000081525060400191505060405180910390fd5b83611ad081611872565b1515611b6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4f6e6c79207375627363726962657220697320616c6c6f77656420746f206d6181526020017f6b652074686973207472616e73616374696f6e2e00000000000000000000000081525060400191505060405180910390fd5b60056000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000191660001916815260200190815260200160002091508160120160009054906101000a900460ff161515611c4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f436f6e73756d65722067726f7570206e6f7420637265617465642e000000000081525060200191505060405180910390fd5b611c648286866006612ab1909392919063ffffffff16565b60019250505092915050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d065780601f10611cdb57610100808354040283529160200191611d06565b820191906000526020600020905b815481529060010190602001808311611ce957829003601f168201915b505050505081565b611d166131bf565b6080604051908101604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81526020016000815260200160011515815250905090565b6000806000611d8e6131ea565b6000611d986131ea565b6000808a60100160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ea9578a60110160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549650611e49878c600101612ca090919063ffffffff16565b611e5f878c600101612f6690919063ffffffff16565b428c6000016000898152602001908152602001600020600101819055508a600f01600088815260200190815260200160002060008154809291906001019190505550869750612608565b611eb58b6006016131af565b1515612103578a6006016000015495508b6000016000878152602001908152602001600020604080519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f7e5780601f10611f5357610100808354040283529160200191611f7e565b820191906000526020600020905b815481529060010190602001808311611f6157829003601f168201915b505050505081526020016001820154815250509450888560200151420310151561210257611fb8868c600601612ca090919063ffffffff16565b611fce868c600101612f6690919063ffffffff16565b428c600001600088815260200190815260200160002060010181905550898b600e01600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018b60100160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550858b60110160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060018b600f01600088815260200190815260200160002081905550859750612608565b5b61210f8b6001016131af565b15156123fd578a6001016000015493508b6000016000858152602001908152602001600020604080519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121d85780601f106121ad576101008083540402835291602001916121d8565b820191906000526020600020905b8154815290600101906020018083116121bb57829003601f168201915b5050505050815260200160018201548152505092508a600b0154836020015142031015156123fc57612216848c600101612ca090919063ffffffff16565b61222c848c600101612f6690919063ffffffff16565b428c6000016000868152602001908152602001600020600101819055508a600e01600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060008b60100160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550898b600e01600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838b60110160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060018b60100160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508a600f01600085815260200190815260200160002060008154809291906001019190505550839750612608565b5b8b600101548b60000154141515156124a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f416c6c206d6573736167657320617265207265616420666f7220746865206d6f81526020017f6d656e742e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8a60000160008154809291906001019190505590506124ce818c600101612f6690919063ffffffff16565b808b60110160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060018b60100160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550898b600e01600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a600f01600082815260200190815260200160002060008154809291906001019190505550428c6000016000838152602001908152602001600020600101819055508097505b50505050505050949350505050565b808460010154111515612692576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e76616c6964206d6573736167652049442e0000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1683600e01600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f53756273637269626572206e6f7420616c6c6f77656420746f20736b6970207481526020017f686973206d6573736167652e000000000000000000000000000000000000000081525060400191505060405180910390fd5b6127a68184600101612ca090919063ffffffff16565b60008360100160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600083600e01600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061286b8184600601612f6690919063ffffffff16565b428460000160008381526020019081526020016000206001018190555050505050565b6000808251111515612908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4d6573736167652063616e6e6f7420626520656d7074792e000000000000000081525060200191505060405180910390fd5b604080519081016040528083815260200142815250836000016000856001015481526020019081526020016000206000820151816000019080519060200190612952929190613204565b506020820151816001015590505082600101600081548092919060010191905055905092915050565b60608183600101541115156129f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e76616c6964206d6573736167652049442e0000000000000000000000000081525060200191505060405180910390fd5b8260000160008381526020019081526020016000206000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612aa45780601f10612a7957610100808354040283529160200191612aa4565b820191906000526020600020905b815481529060010190602001808311612a8757829003601f168201915b5050505050905092915050565b808460010154111515612b2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e76616c6964206d6573736167652049442e0000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1683600e01600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001807f53756273637269626572206e6f7420616c6c6f77656420746f20636f6e66697281526020017f6d2074686973206d6573736167652e000000000000000000000000000000000081525060400191505060405180910390fd5b612c408184600101612ca090919063ffffffff16565b60008360100160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b612ca8613284565b82600201600083815260200190815260200160002060030160009054906101000a900460ff161515612d42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4944206265696e672072656d6f76656420646f6573206e6f742065786973742e81525060200191505060405180910390fd5b8260000154821415612dd157826002016000846002016000866000015481526020019081526020016000206002015481526020019081526020016000206000015483600001819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360020160008560000154815260200190815260200160002060010181905550612f08565b8260010154821415612e6057826002016000846002016000866001015481526020019081526020016000206001015481526020019081526020016000206000015483600101819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360020160008560010154815260200190815260200160002060020181905550612f07565b826002016000838152602001908152602001600020608060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905080604001518360020160008360200151815260200190815260200160002060020181905550806020015183600201600083604001518152602001908152602001600020600101819055505b5b826002016000838152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff02191690555050826003016000815480929190600190039190505550505050565b81600201600082815260200190815260200160002060030160009054906101000a900460ff16151515613001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4944206265696e6720616464656420616c7265616479206578697374732e000081525060200191505060405180910390fd5b80826002016000838152602001908152602001600020600001819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826002016000838152602001908152602001600020600101819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82600201600083815260200190815260200160002060020181905550600182600201600083815260200190815260200160002060030160006101000a81548160ff0219169083151502179055506000826003015414156130ed57808260000181905550808260010181905550613197565b60018260030154141561314a57808260020160008460000154815260200190815260200160002060020181905550816000015482600201600083815260200190815260200160002060010181905550808260010181905550613196565b8082600201600084600101548152602001908152602001600020600201819055508160010154826002016000838152602001908152602001600020600101819055508082600101819055505b5b81600301600081548092919060010191905055505050565b6000808260030154149050919050565b6080604051908101604052806000815260200160008152602001600081526020016000151581525090565b604080519081016040528060608152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061324557805160ff1916838001178555613273565b82800160010185558215613273579182015b82811115613272578251825591602001919060010190613257565b5b50905061328091906132af565b5090565b6080604051908101604052806000815260200160008152602001600081526020016000151581525090565b6132d191905b808211156132cd5760008160009055506001016132b5565b5090565b90565b6132dc6132f2565b6020604051908101604052806000815250905090565b6020604051908101604052806000815250905600a165627a7a723058205d166ba2c85b8bb816e1c147b782a2eb0ae5a6765fa306a3b68817c5549552cc0029a165627a7a72305820f68588517edea1029234fffc01e93a48d0329afe88e3acea783a504bdf78b6c60029"
}