aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/artifacts/Exchange.json
blob: 290b32839cd9427c6552ca6bcc48e622c5c5c531 (plain) (blame)
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
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
{
    "contract_name": "Exchange",
    "networks": {
        "50": {
            "solc_version": "0.4.11",
            "keccak256": "0xe925fcb92c168f0d222c72b13a4668736b2b4701962b9d59374c421f0e54c996",
            "optimizer_enabled": 0,
            "abi": [
                {
                    "constant": true,
                    "inputs": [
                        {
                            "name": "numerator",
                            "type": "uint256"
                        },
                        {
                            "name": "denominator",
                            "type": "uint256"
                        },
                        {
                            "name": "target",
                            "type": "uint256"
                        }
                    ],
                    "name": "isRoundingError",
                    "outputs": [
                        {
                            "name": "",
                            "type": "bool"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [
                        {
                            "name": "",
                            "type": "bytes32"
                        }
                    ],
                    "name": "filled",
                    "outputs": [
                        {
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [
                        {
                            "name": "",
                            "type": "bytes32"
                        }
                    ],
                    "name": "cancelled",
                    "outputs": [
                        {
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": false,
                    "inputs": [
                        {
                            "name": "orderAddresses",
                            "type": "address[5][]"
                        },
                        {
                            "name": "orderValues",
                            "type": "uint256[6][]"
                        },
                        {
                            "name": "fillTakerTokenAmount",
                            "type": "uint256"
                        },
                        {
                            "name": "shouldThrowOnInsufficientBalanceOrAllowance",
                            "type": "bool"
                        },
                        {
                            "name": "v",
                            "type": "uint8[]"
                        },
                        {
                            "name": "r",
                            "type": "bytes32[]"
                        },
                        {
                            "name": "s",
                            "type": "bytes32[]"
                        }
                    ],
                    "name": "fillOrdersUpTo",
                    "outputs": [
                        {
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": false,
                    "inputs": [
                        {
                            "name": "orderAddresses",
                            "type": "address[5]"
                        },
                        {
                            "name": "orderValues",
                            "type": "uint256[6]"
                        },
                        {
                            "name": "cancelTakerTokenAmount",
                            "type": "uint256"
                        }
                    ],
                    "name": "cancelOrder",
                    "outputs": [
                        {
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [],
                    "name": "ZRX_TOKEN_CONTRACT",
                    "outputs": [
                        {
                            "name": "",
                            "type": "address"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": false,
                    "inputs": [
                        {
                            "name": "orderAddresses",
                            "type": "address[5][]"
                        },
                        {
                            "name": "orderValues",
                            "type": "uint256[6][]"
                        },
                        {
                            "name": "fillTakerTokenAmounts",
                            "type": "uint256[]"
                        },
                        {
                            "name": "v",
                            "type": "uint8[]"
                        },
                        {
                            "name": "r",
                            "type": "bytes32[]"
                        },
                        {
                            "name": "s",
                            "type": "bytes32[]"
                        }
                    ],
                    "name": "batchFillOrKillOrders",
                    "outputs": [],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": false,
                    "inputs": [
                        {
                            "name": "orderAddresses",
                            "type": "address[5]"
                        },
                        {
                            "name": "orderValues",
                            "type": "uint256[6]"
                        },
                        {
                            "name": "fillTakerTokenAmount",
                            "type": "uint256"
                        },
                        {
                            "name": "v",
                            "type": "uint8"
                        },
                        {
                            "name": "r",
                            "type": "bytes32"
                        },
                        {
                            "name": "s",
                            "type": "bytes32"
                        }
                    ],
                    "name": "fillOrKillOrder",
                    "outputs": [],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [
                        {
                            "name": "orderHash",
                            "type": "bytes32"
                        }
                    ],
                    "name": "getUnavailableTakerTokenAmount",
                    "outputs": [
                        {
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [
                        {
                            "name": "signer",
                            "type": "address"
                        },
                        {
                            "name": "hash",
                            "type": "bytes32"
                        },
                        {
                            "name": "v",
                            "type": "uint8"
                        },
                        {
                            "name": "r",
                            "type": "bytes32"
                        },
                        {
                            "name": "s",
                            "type": "bytes32"
                        }
                    ],
                    "name": "isValidSignature",
                    "outputs": [
                        {
                            "name": "",
                            "type": "bool"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [
                        {
                            "name": "numerator",
                            "type": "uint256"
                        },
                        {
                            "name": "denominator",
                            "type": "uint256"
                        },
                        {
                            "name": "target",
                            "type": "uint256"
                        }
                    ],
                    "name": "getPartialAmount",
                    "outputs": [
                        {
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [],
                    "name": "TOKEN_TRANSFER_PROXY_CONTRACT",
                    "outputs": [
                        {
                            "name": "",
                            "type": "address"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": false,
                    "inputs": [
                        {
                            "name": "orderAddresses",
                            "type": "address[5][]"
                        },
                        {
                            "name": "orderValues",
                            "type": "uint256[6][]"
                        },
                        {
                            "name": "fillTakerTokenAmounts",
                            "type": "uint256[]"
                        },
                        {
                            "name": "shouldThrowOnInsufficientBalanceOrAllowance",
                            "type": "bool"
                        },
                        {
                            "name": "v",
                            "type": "uint8[]"
                        },
                        {
                            "name": "r",
                            "type": "bytes32[]"
                        },
                        {
                            "name": "s",
                            "type": "bytes32[]"
                        }
                    ],
                    "name": "batchFillOrders",
                    "outputs": [],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": false,
                    "inputs": [
                        {
                            "name": "orderAddresses",
                            "type": "address[5][]"
                        },
                        {
                            "name": "orderValues",
                            "type": "uint256[6][]"
                        },
                        {
                            "name": "cancelTakerTokenAmounts",
                            "type": "uint256[]"
                        }
                    ],
                    "name": "batchCancelOrders",
                    "outputs": [],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": false,
                    "inputs": [
                        {
                            "name": "orderAddresses",
                            "type": "address[5]"
                        },
                        {
                            "name": "orderValues",
                            "type": "uint256[6]"
                        },
                        {
                            "name": "fillTakerTokenAmount",
                            "type": "uint256"
                        },
                        {
                            "name": "shouldThrowOnInsufficientBalanceOrAllowance",
                            "type": "bool"
                        },
                        {
                            "name": "v",
                            "type": "uint8"
                        },
                        {
                            "name": "r",
                            "type": "bytes32"
                        },
                        {
                            "name": "s",
                            "type": "bytes32"
                        }
                    ],
                    "name": "fillOrder",
                    "outputs": [
                        {
                            "name": "filledTakerTokenAmount",
                            "type": "uint256"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [
                        {
                            "name": "orderAddresses",
                            "type": "address[5]"
                        },
                        {
                            "name": "orderValues",
                            "type": "uint256[6]"
                        }
                    ],
                    "name": "getOrderHash",
                    "outputs": [
                        {
                            "name": "",
                            "type": "bytes32"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [],
                    "name": "EXTERNAL_QUERY_GAS_LIMIT",
                    "outputs": [
                        {
                            "name": "",
                            "type": "uint16"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "constant": true,
                    "inputs": [],
                    "name": "VERSION",
                    "outputs": [
                        {
                            "name": "",
                            "type": "string"
                        }
                    ],
                    "payable": false,
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "name": "_zrxToken",
                            "type": "address"
                        },
                        {
                            "name": "_tokenTransferProxy",
                            "type": "address"
                        }
                    ],
                    "payable": false,
                    "type": "constructor"
                },
                {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "name": "maker",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "name": "taker",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "name": "feeRecipient",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "name": "makerToken",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "name": "takerToken",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "name": "filledMakerTokenAmount",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "name": "filledTakerTokenAmount",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "name": "paidMakerFee",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "name": "paidTakerFee",
                            "type": "uint256"
                        },
                        {
                            "indexed": true,
                            "name": "tokens",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "name": "orderHash",
                            "type": "bytes32"
                        }
                    ],
                    "name": "LogFill",
                    "type": "event"
                },
                {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "name": "maker",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "name": "feeRecipient",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "name": "makerToken",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "name": "takerToken",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "name": "cancelledMakerTokenAmount",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "name": "cancelledTakerTokenAmount",
                            "type": "uint256"
                        },
                        {
                            "indexed": true,
                            "name": "tokens",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "name": "orderHash",
                            "type": "bytes32"
                        }
                    ],
                    "name": "LogCancel",
                    "type": "event"
                },
                {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "name": "errorId",
                            "type": "uint8"
                        },
                        {
                            "indexed": true,
                            "name": "orderHash",
                            "type": "bytes32"
                        }
                    ],
                    "name": "LogError",
                    "type": "event"
                }
            ],
            "unlinked_binary": "0x6060604052341561000c57fe5b604051604080612c43833981016040528080519060200190919080519060200190919050505b81600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505b612b7c806100c76000396000f300606060405236156100fa576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314df96ee146100fc578063288cdc91146101465780632ac126221461017e578063363349be146101b6578063394c21e7146103ad5780633b30ba59146104395780634f1507871461048b578063741bcc931461069a5780637e9abb50146107385780638163681e1461077057806398024a8b146107f1578063add1cbc514610837578063b7b2c7d614610889578063baa0181d14610aa3578063bc61394a14610bf2578063cfc4d0ec14610caf578063f06bbf7514610d3a578063ffa1ad7414610d68575bfe5b341561010457fe5b61012c6004808035906020019091908035906020019091908035906020019091905050610e01565b604051808215151515815260200191505060405180910390f35b341561014e57fe5b610168600480803560001916906020019091905050610e51565b6040518082815260200191505060405180910390f35b341561018657fe5b6101a0600480803560001916906020019091905050610e69565b6040518082815260200191505060405180910390f35b34156101be57fe5b61039760048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561023957848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906101f4565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156102b557848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610270565b5050505050919080359060200190919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610e81565b6040518082815260200191505060405180910390f35b34156103b557fe5b6104236004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091908035906020019091905050610feb565b6040518082815260200191505060405180910390f35b341561044157fe5b6104496114dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561049357fe5b61069860048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561050e57848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906104c9565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561058a57848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610545565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611502565b005b34156106a257fe5b6107366004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506115c2565b005b341561074057fe5b61075a6004808035600019169060200190919050506115e9565b6040518082815260200191505060405180910390f35b341561077857fe5b6107d7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611633565b604051808215151515815260200191505060405180910390f35b34156107f957fe5b6108216004808035906020019091908035906020019091908035906020019091905050611738565b6040518082815260200191505060405180910390f35b341561083f57fe5b610847611757565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561089157fe5b610aa160048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561090c57848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906108c7565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561098857848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610943565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035151590602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061177d565b005b3415610aab57fe5b610bf060048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610b2657848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610ae1565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610ba257848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610b5d565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611840565b005b3415610bfa57fe5b610c996004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091908035906020019091908035151590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506118b6565b6040518082815260200191505060405180910390f35b3415610cb757fe5b610d1c6004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190505061206e565b60405180826000191660001916815260200191505060405180910390f35b3415610d4257fe5b610d4a61231a565b604051808261ffff1661ffff16815260200191505060405180910390f35b3415610d7057fe5b610d78612320565b6040518080602001828103825283818151815260200191508051906020019080838360008314610dc7575b805182526020831115610dc757602082019150602081019050602083039250610da3565b505050905090810190601f168015610df35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600060008486850991506000821415610e1f5760009250610e48565b610e3e610e2f83620f424061235a565b610e39888761235a565b61238f565b90506103e8811192505b50509392505050565b60026020528060005260406000206000915090505481565b60036020528060005260406000206000915090505481565b60006000600060009150600090505b8951811015610fda57896000815181101515610ea857fe5b906020019060200201516003600581101515610ec057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a82815181101515610ee957fe5b906020019060200201516003600581101515610f0157fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16141515610f295760006000fd5b610fbd82610fb88c84815181101515610f3e57fe5b906020019060200201518c85815181101515610f5657fe5b90602001906020020151610f6a8d886123ac565b8c8c88815181101515610f7957fe5b906020019060200201518c89815181101515610f9157fe5b906020019060200201518c8a815181101515610fa957fe5b906020019060200201516118b6565b6123c6565b915087821415610fcc57610fda565b5b8080600101915050610e90565b8192505b5050979650505050505050565b6000610ff5612a83565b600060006101606040519081016040528088600060058110151561101557fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600160058110151561104457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600260058110151561107357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860036005811015156110a257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860046005811015156110d157fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200187600060068110151561110057fe5b6020020151815260200187600160068110151561111957fe5b6020020151815260200187600260068110151561113257fe5b6020020151815260200187600360068110151561114b57fe5b6020020151815260200187600460068110151561116457fe5b60200201518152602001611178898961206e565b6000191681525092503373ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161415156111c05760006000fd5b60008360a001511180156111d8575060008360c00151115b80156111e45750600085115b15156111f05760006000fd5b8261012001514210151561125057826101400151600019166000600381111561121557fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405180905060405180910390a3600093506114d2565b61126b8360c001516112668561014001516115e9565b6123ac565b915061127785836123e6565b905060008114156112d457826101400151600019166001600381111561129957fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405180905060405180910390a3600093506114d2565b6112fe600360008561014001516000191660001916815260200190815260200160002054826123c6565b60036000856101400151600019166000191681526020019081526020016000208190555082604001518360600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916836080015173ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff167f67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b0458713186604001518760600151611436878a60c001518b60a00151611738565b878a6101400151604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182600019166000191681526020019550505050505060405180910390a48093505b5050509392505050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600090505b86518110156115b8576115aa878281518110151561152357fe5b90602001906020020151878381518110151561153b57fe5b90602001906020020151878481518110151561155357fe5b90602001906020020151878581518110151561156b57fe5b90602001906020020151878681518110151561158357fe5b90602001906020020151878781518110151561159b57fe5b906020019060200201516115c2565b5b8080600101915050611509565b5b50505050505050565b836115d387878760008888886118b6565b1415156115e05760006000fd5b5b505050505050565b600061162b60026000846000191660001916815260200190815260200160002054600360008560001916600019168152602001908152602001600020546123c6565b90505b919050565b600060018560405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020858585604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f115156116f557fe5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490505b95945050505050565b600061174d611747858461235a565b8461238f565b90505b9392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600090505b875181101561183557611826888281518110151561179e57fe5b9060200190602002015188838151811015156117b657fe5b9060200190602002015188848151811015156117ce57fe5b906020019060200201518888868151811015156117e757fe5b9060200190602002015188878151811015156117ff57fe5b90602001906020020151888881518110151561181757fe5b906020019060200201516118b6565b505b8080600101915050611784565b5b5050505050505050565b6000600090505b83518110156118af576118a0848281518110151561186157fe5b90602001906020020151848381518110151561187957fe5b90602001906020020151848481518110151561189157fe5b90602001906020020151610feb565b505b8080600101915050611847565b5b50505050565b60006118c0612a83565b6000600060006000610160604051908101604052808e60006005811015156118e457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600160058110151561191357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600260058110151561194257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600360058110151561197157fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e60046005811015156119a057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018d60006006811015156119cf57fe5b602002015181526020018d60016006811015156119e857fe5b602002015181526020018d6002600681101515611a0157fe5b602002015181526020018d6003600681101515611a1a57fe5b602002015181526020018d6004600681101515611a3357fe5b60200201518152602001611a478f8f61206e565b600019168152509450600073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161480611abe57503373ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16145b1515611aca5760006000fd5b60008560a00151118015611ae2575060008560c00151115b8015611aee575060008b115b1515611afa5760006000fd5b611b1085600001518661014001518b8b8b611633565b1515611b1c5760006000fd5b84610120015142101515611b7c578461014001516000191660006003811115611b4157fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405180905060405180910390a36000955061205e565b611b978560c00151611b928761014001516115e9565b6123ac565b9350611ba38b856123e6565b95506000861415611c00578461014001516000191660016003811115611bc557fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405180905060405180910390a36000955061205e565b611c13868660c001518760a00151610e01565b15611c6a578461014001516000191660026003811115611c2f57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405180905060405180910390a36000955061205e565b89158015611c7f5750611c7d8587612400565b155b15611cd6578461014001516000191660036003811115611c9b57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405180905060405180910390a36000955061205e565b611ce9868660c001518760a00151611738565b9250611d15600260008761014001516000191660001916815260200190815260200160002054876123c6565b600260008761014001516000191660001916815260200190815260200160002081905550611d4d85604001518660000151338661275a565b1515611d595760006000fd5b611d6d85606001513387600001518961275a565b1515611d795760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff16856080015173ffffffffffffffffffffffffffffffffffffffff16141515611e7c5760008560e001511115611e1857611dd3868660c001518760e00151611738565b9150611e0b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866000015187608001518561275a565b1515611e175760006000fd5b5b60008561010001511115611e7b57611e3a868660c00151876101000151611738565b9050611e6e600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163387608001518461275a565b1515611e7a5760006000fd5b5b5b84604001518560600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916856080015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb33389604001518a60600151898d8a8a8f6101400151604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815260200183815260200182600019166000191681526020019850505050505050505060405180910390a48595505b5050505050979650505050505050565b60003083600060058110151561208057fe5b602002015184600160058110151561209457fe5b60200201518560026005811015156120a857fe5b60200201518660036005811015156120bc57fe5b60200201518760046005811015156120d057fe5b60200201518760006006811015156120e457fe5b60200201518860016006811015156120f857fe5b602002015189600260068110151561210c57fe5b60200201518a600360068110151561212057fe5b60200201518b600460068110151561213457fe5b60200201518c600560068110151561214857fe5b6020020151604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018681526020018581526020018481526020018381526020018281526020019c50505050505050505050505050604051809103902090505b92915050565b61138781565b604060405190810160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b600060008284029050600084148061237c575082848281151561237957fe5b04145b151561238457fe5b8091505b5092915050565b60006000828481151561239e57fe5b0490508091505b5092915050565b60008282111515156123ba57fe5b81830390505b92915050565b6000600082840190508381101515156123db57fe5b8091505b5092915050565b60008183106123f557816123f7565b825b90505b92915050565b6000600060006000600060006000600060003397506124288a8c60c001518d60a00151611738565b9650600073ffffffffffffffffffffffffffffffffffffffff168b6080015173ffffffffffffffffffffffffffffffffffffffff161415156126db57600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6040015173ffffffffffffffffffffffffffffffffffffffff16149550600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6060015173ffffffffffffffffffffffffffffffffffffffff161494506125258a8c60c001518d60e00151611738565b935061253b8a8c60c001518d6101000151611738565b9250856125485783612553565b61255287856123c6565b5b915084612560578261256b565b61256a8a846123c6565b5b90508161259e600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d600001516128b1565b10806125d85750816125d6600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161296f565b105b8061260d57508061260b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6128b1565b105b80612642575080612640600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61296f565b105b15612650576000985061274c565b8515801561268957508661266c8c604001518d600001516128b1565b10806126885750866126868c604001518d6000015161296f565b105b5b15612697576000985061274c565b841580156126c85750896126af8c606001518a6128b1565b10806126c75750896126c58c606001518a61296f565b105b5b156126d6576000985061274c565b612747565b866126ee8c604001518d600001516128b1565b108061270a5750866127088c604001518d6000015161296f565b105b8061272157508961271f8c606001518a6128b1565b105b806127385750896127368c606001518a61296f565b105b15612746576000985061274c565b5b600198505b505050505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea868686866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b151561288e57fe5b6102c65a03f1151561289c57fe5b5050506040518051905090505b949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff166370a0823161138761ffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600088803b151561295157fe5b87f1151561295b57fe5b505050506040518051905090505b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e61138761ffff1684600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600088803b1515612a6557fe5b87f11515612a6f57fe5b505050506040518051905090505b92915050565b61016060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600060001916815250905600a165627a7a72305820511cdcb212b57d98055695fd03263929d2536f3fab5a94fc62b6c9b8ca407aa60029",
            "updated_at": 1517527797804
        }
    }
}