UNPKG

85.1 kBJSONView Raw
1{
2 "abi": [
3 {
4 "inputs": [
5 {
6 "internalType": "address",
7 "name": "factory_",
8 "type": "address"
9 },
10 {
11 "internalType": "contract IUniswapV2Router01",
12 "name": "router_",
13 "type": "address"
14 }
15 ],
16 "stateMutability": "nonpayable",
17 "type": "constructor"
18 },
19 {
20 "inputs": [
21 {
22 "internalType": "uint256",
23 "name": "truePriceTokenA",
24 "type": "uint256"
25 },
26 {
27 "internalType": "uint256",
28 "name": "truePriceTokenB",
29 "type": "uint256"
30 },
31 {
32 "internalType": "uint256",
33 "name": "reserveA",
34 "type": "uint256"
35 },
36 {
37 "internalType": "uint256",
38 "name": "reserveB",
39 "type": "uint256"
40 }
41 ],
42 "name": "computeProfitMaximizingTrade",
43 "outputs": [
44 {
45 "internalType": "bool",
46 "name": "aToB",
47 "type": "bool"
48 },
49 {
50 "internalType": "uint256",
51 "name": "amountIn",
52 "type": "uint256"
53 }
54 ],
55 "stateMutability": "pure",
56 "type": "function"
57 },
58 {
59 "inputs": [],
60 "name": "factory",
61 "outputs": [
62 {
63 "internalType": "address",
64 "name": "",
65 "type": "address"
66 }
67 ],
68 "stateMutability": "view",
69 "type": "function"
70 },
71 {
72 "inputs": [],
73 "name": "router",
74 "outputs": [
75 {
76 "internalType": "contract IUniswapV2Router01",
77 "name": "",
78 "type": "address"
79 }
80 ],
81 "stateMutability": "view",
82 "type": "function"
83 },
84 {
85 "inputs": [
86 {
87 "internalType": "address",
88 "name": "tokenA",
89 "type": "address"
90 },
91 {
92 "internalType": "address",
93 "name": "tokenB",
94 "type": "address"
95 },
96 {
97 "internalType": "uint256",
98 "name": "truePriceTokenA",
99 "type": "uint256"
100 },
101 {
102 "internalType": "uint256",
103 "name": "truePriceTokenB",
104 "type": "uint256"
105 },
106 {
107 "internalType": "uint256",
108 "name": "maxSpendTokenA",
109 "type": "uint256"
110 },
111 {
112 "internalType": "uint256",
113 "name": "maxSpendTokenB",
114 "type": "uint256"
115 },
116 {
117 "internalType": "address",
118 "name": "to",
119 "type": "address"
120 },
121 {
122 "internalType": "uint256",
123 "name": "deadline",
124 "type": "uint256"
125 }
126 ],
127 "name": "swapToPrice",
128 "outputs": [],
129 "stateMutability": "nonpayable",
130 "type": "function"
131 }
132 ],
133 "evm": {
134 "bytecode": {
135 "linkReferences": {},
136 "object": "60c060405234801561001057600080fd5b506040516111e53803806111e583398101604081905261002f9161004d565b6001600160601b0319606092831b811660a052911b1660805261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c61110f6100d66000398061014852806103855250806101d852806102be52806103a9525061110f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063bef90fd314610051578063c45a015514610066578063f887ea4014610084578063fa6531541461008c575b600080fd5b61006461005f366004610a88565b6100ad565b005b61006e610383565b60405161007b9190610d3b565b60405180910390f35b61006e6103a7565b61009f61009a366004610c16565b6103cb565b60405161007b929190610db3565b85158015906100bb57508415155b6100fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e68565b60405180910390fd5b8315158061010757508215155b61013d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610dfa565b60008060008061016e7f00000000000000000000000000000000000000000000000000000000000000008d8d6104b0565b9150915061017e8a8a84846103cb565b9094509250600091508390506101945785610196565b865b9050808211156101a4578091505b6000836101b1578a6101b3565b8b5b90506000846101c2578c6101c4565b8b5b90506101d2823330876105be565b6101fd827f0000000000000000000000000000000000000000000000000000000000000000866106eb565b6040805160028082526060808301845292602083019080368337019050509050828160008151811061022b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061027357fe5b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f38ed17390000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed1739906102fe90889060009086908e908e90600401610fc7565b600060405180830381600087803b15801561031857600080fd5b505af115801561032c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103729190810190610b03565b505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008085836103e0868863ffffffff61081516565b816103e757fe5b0410915060006103fd858563ffffffff61081516565b905060006104536104236103e586610415578a610417565b895b9063ffffffff61081516565b6104466103e861041788610437578b610439565b8c5b879063ffffffff61081516565b8161044d57fe5b0461086c565b905060006103e58561047657610471876103e863ffffffff61081516565b610488565b610488886103e863ffffffff61081516565b8161048f57fe5b0490506104a2828263ffffffff6108be16565b935050505094509492505050565b60008060006104bf85856108fb565b5090506000806104d08888886109fa565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561051557600080fd5b505afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054d9190610bc2565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146105ac5780826105af565b81815b90999098509650505050505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016105f393929190610d5c565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106419190610c81565b6000604051808303816000865af19150503d806000811461067e576040519150601f19603f3d011682016040523d82523d6000602084013e610683565b606091505b50915091508180156106ad5750805115806106ad5750808060200190518101906106ad9190610b9b565b6106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610f6a565b505050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3858560405160240161071e929190610d8d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161076c9190610c81565b6000604051808303816000865af19150503d80600081146107a9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ae565b606091505b50915091508180156107d85750805115806107d85750808060200190518101906107d89190610b9b565b61080e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e9f565b5050505050565b60008115806108305750508082028282828161082d57fe5b04145b610866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e31565b92915050565b600060038211156108af575080600160028204015b818110156108a95780915060028182858161089857fe5b0401816108a157fe5b049050610881565b506108b9565b81156108b9575060015b919050565b80820382811115610866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610dc3565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610ed6565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061099e5782846109a1565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff82166109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610f33565b9250929050565b6000806000610a0985856108fb565b91509150858282604051602001610a21929190610c47565b60405160208183030381529060405280519060200120604051602001610a48929190610cba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b600080600080600080600080610100898b031215610aa4578384fd5b8835610aaf81611098565b97506020890135610abf81611098565b965060408901359550606089013594506080890135935060a0890135925060c0890135610aeb81611098565b8092505060e089013590509295985092959890939650565b60006020808385031215610b15578182fd5b825167ffffffffffffffff811115610b2b578283fd5b80840185601f820112610b3c578384fd5b80519150610b51610b4c83611078565b611051565b8281528381019082850185850284018601891015610b6d578687fd5b8693505b84841015610b8f578051835260019390930192918501918501610b71565b50979650505050505050565b600060208284031215610bac578081fd5b81518015158114610bbb578182fd5b9392505050565b600080600060608486031215610bd6578283fd5b8351610be1816110bd565b6020850151909350610bf2816110bd565b604085015190925063ffffffff81168114610c0b578182fd5b809150509250925092565b60008060008060808587031215610c2b578384fd5b5050823594602084013594506040840135936060013592509050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015610ca15760208186018101518583015201610c87565b81811115610caf5782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527fab428a35b38b4307862d79ae79c6ec58b221c049532ba8b17045f4499da215f9603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b9115158252602082015260400190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604082015260600190565b6020808252601e908201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604082015260600190565b60208082526025908201527f556e697377617056324c6962726172793a204944454e544943414c5f4144445260408201527f4553534553000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604082015260600190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561102357845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101610ff1565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60405181810167ffffffffffffffff8111828210171561107057600080fd5b604052919050565b600067ffffffffffffffff82111561108e578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff811681146110ba57600080fd5b50565b6dffffffffffffffffffffffffffff811681146110ba57600080fdfea264697066735822122038d118129f22f3ec243f039aa30eb20250061ccda25afbefa7b17ab6e06be47464736f6c63430006060033",
137 "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x11E5 CODESIZE SUB DUP1 PUSH2 0x11E5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x4D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SHL AND PUSH1 0x80 MSTORE PUSH2 0x9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6A DUP2 PUSH2 0x86 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x7B DUP2 PUSH2 0x86 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x110F PUSH2 0xD6 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x148 MSTORE DUP1 PUSH2 0x385 MSTORE POP DUP1 PUSH2 0x1D8 MSTORE DUP1 PUSH2 0x2BE MSTORE DUP1 PUSH2 0x3A9 MSTORE POP PUSH2 0x110F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBEF90FD3 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0xF887EA40 EQ PUSH2 0x84 JUMPI DUP1 PUSH4 0xFA653154 EQ PUSH2 0x8C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0xA88 JUMP JUMPDEST PUSH2 0xAD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH2 0x383 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7B SWAP2 SWAP1 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6E PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x9F PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7B SWAP3 SWAP2 SWAP1 PUSH2 0xDB3 JUMP JUMPDEST DUP6 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBB JUMPI POP DUP5 ISZERO ISZERO JUMPDEST PUSH2 0xFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xE68 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP1 PUSH2 0x107 JUMPI POP DUP3 ISZERO ISZERO JUMPDEST PUSH2 0x13D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xDFA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x16E PUSH32 0x0 DUP14 DUP14 PUSH2 0x4B0 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x17E DUP11 DUP11 DUP5 DUP5 PUSH2 0x3CB JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP DUP4 SWAP1 POP PUSH2 0x194 JUMPI DUP6 PUSH2 0x196 JUMP JUMPDEST DUP7 JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A4 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0x1B1 JUMPI DUP11 PUSH2 0x1B3 JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH2 0x1C2 JUMPI DUP13 PUSH2 0x1C4 JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH2 0x1D2 DUP3 CALLER ADDRESS DUP8 PUSH2 0x5BE JUMP JUMPDEST PUSH2 0x1FD DUP3 PUSH32 0x0 DUP7 PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x22B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x273 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x38ED173900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x38ED1739 SWAP1 PUSH2 0x2FE SWAP1 DUP9 SWAP1 PUSH1 0x0 SWAP1 DUP7 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0xFC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x372 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB03 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP4 PUSH2 0x3E0 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST DUP2 PUSH2 0x3E7 JUMPI INVALID JUMPDEST DIV LT SWAP2 POP PUSH1 0x0 PUSH2 0x3FD DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x453 PUSH2 0x423 PUSH2 0x3E5 DUP7 PUSH2 0x415 JUMPI DUP11 PUSH2 0x417 JUMP JUMPDEST DUP10 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST PUSH2 0x446 PUSH2 0x3E8 PUSH2 0x417 DUP9 PUSH2 0x437 JUMPI DUP12 PUSH2 0x439 JUMP JUMPDEST DUP13 JUMPDEST DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST DUP2 PUSH2 0x44D JUMPI INVALID JUMPDEST DIV PUSH2 0x86C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x476 JUMPI PUSH2 0x471 DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST PUSH2 0x488 JUMP JUMPDEST PUSH2 0x488 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST DUP2 PUSH2 0x48F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x4A2 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8BE AND JUMP JUMPDEST SWAP4 POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4BF DUP6 DUP6 PUSH2 0x8FB JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x4D0 DUP9 DUP9 DUP9 PUSH2 0x9FA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x529 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0xBC2 JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5AC JUMPI DUP1 DUP3 PUSH2 0x5AF JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5F3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0xC81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x67E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x683 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x6AD JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x6AD JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x6AD SWAP2 SWAP1 PUSH2 0xB9B JUMP JUMPDEST PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xF6A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x71E SWAP3 SWAP2 SWAP1 PUSH2 0xD8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x76C SWAP2 SWAP1 PUSH2 0xC81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x7D8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x7D8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7D8 SWAP2 SWAP1 PUSH2 0xB9B JUMP JUMPDEST PUSH2 0x80E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xE9F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x830 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x82D JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x866 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xE31 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x8AF JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8A9 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x898 JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x8A1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x881 JUMP JUMPDEST POP PUSH2 0x8B9 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x8B9 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x866 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xDC3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x964 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xED6 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x99E JUMPI DUP3 DUP5 PUSH2 0x9A1 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x9F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xF33 JUMP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA09 DUP6 DUP6 PUSH2 0x8FB JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP6 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA21 SWAP3 SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA48 SWAP3 SWAP2 SWAP1 PUSH2 0xCBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0xAA4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0xAAF DUP2 PUSH2 0x1098 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0xABF DUP2 PUSH2 0x1098 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH2 0xAEB DUP2 PUSH2 0x1098 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB15 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB2B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 DUP5 ADD DUP6 PUSH1 0x1F DUP3 ADD SLT PUSH2 0xB3C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 MLOAD SWAP2 POP PUSH2 0xB51 PUSH2 0xB4C DUP4 PUSH2 0x1078 JUMP JUMPDEST PUSH2 0x1051 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP3 DUP6 ADD DUP6 DUP6 MUL DUP5 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0xB6D JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP4 POP JUMPDEST DUP5 DUP5 LT ISZERO PUSH2 0xB8F JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0xB71 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBAC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBBB JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBD6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0xBE1 DUP2 PUSH2 0x10BD JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xBF2 DUP2 PUSH2 0x10BD JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC0B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC2B JUMPI DUP4 DUP5 REVERT JUMPDEST POP POP DUP3 CALLDATALOAD SWAP5 PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0x14 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xCA1 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0xC87 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xCAF JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x1 DUP4 ADD MSTORE PUSH1 0x15 DUP3 ADD MSTORE PUSH32 0xAB428A35B38B4307862D79AE79C6EC58B221C049532BA8B17045F4499DA215F9 PUSH1 0x35 DUP3 ADD MSTORE PUSH1 0x55 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F5350454E440000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F50524943450000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A20415050524F56455F4641494C45440000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A204944454E544943414C5F41444452 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4553534553000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD DUP8 DUP4 MSTORE PUSH1 0x20 DUP8 DUP2 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP DUP3 DUP10 ADD SWAP4 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1023 JUMPI DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xFF1 JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 SWAP1 SWAP7 AND PUSH1 0x60 DUP6 ADD MSTORE POP POP POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x108E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x10BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x10BA JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0xD1 XOR SLT SWAP16 0x22 RETURN 0xEC 0x24 EXTCODEHASH SUB SWAP11 LOG3 0xE 0xB2 MUL POP MOD SHR 0xCD LOG2 GAS 0xFB 0xEF 0xA7 0xB1 PUSH27 0xB6E06BE47464736F6C634300060600330000000000000000000000 ",
138 "sourceMap": "416:3175:13:-:0;;;570:126;5:9:-1;2:2;;;27:1;24;17:12;2:2;570:126:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;645:18:13;;;;;;;;673:16;;;;;416:3175;;341:453:-1;;;500:2;488:9;479:7;475:23;471:32;468:2;;;-1:-1;;506:12;468:2;89:6;83:13;101:33;128:5;101:33;;;669:2;746:22;;251:13;558:74;;-1:-1;269:60;251:13;269:60;;;677:101;;;;462:332;;;;;;1152:117;-1:-1;;;;;1086:54;;1211:35;;1201:2;;1260:1;;1250:12;1201:2;1195:74;;;416:3175:13;;;;;;;;;;;;;;;;"
139 },
140 "deployedBytecode": {
141 "immutableReferences": {
142 "7318": [
143 {
144 "length": 32,
145 "start": 472
146 },
147 {
148 "length": 32,
149 "start": 702
150 },
151 {
152 "length": 32,
153 "start": 937
154 }
155 ],
156 "7320": [
157 {
158 "length": 32,
159 "start": 328
160 },
161 {
162 "length": 32,
163 "start": 901
164 }
165 ]
166 },
167 "linkReferences": {},
168 "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c8063bef90fd314610051578063c45a015514610066578063f887ea4014610084578063fa6531541461008c575b600080fd5b61006461005f366004610a88565b6100ad565b005b61006e610383565b60405161007b9190610d3b565b60405180910390f35b61006e6103a7565b61009f61009a366004610c16565b6103cb565b60405161007b929190610db3565b85158015906100bb57508415155b6100fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e68565b60405180910390fd5b8315158061010757508215155b61013d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610dfa565b60008060008061016e7f00000000000000000000000000000000000000000000000000000000000000008d8d6104b0565b9150915061017e8a8a84846103cb565b9094509250600091508390506101945785610196565b865b9050808211156101a4578091505b6000836101b1578a6101b3565b8b5b90506000846101c2578c6101c4565b8b5b90506101d2823330876105be565b6101fd827f0000000000000000000000000000000000000000000000000000000000000000866106eb565b6040805160028082526060808301845292602083019080368337019050509050828160008151811061022b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061027357fe5b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f38ed17390000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed1739906102fe90889060009086908e908e90600401610fc7565b600060405180830381600087803b15801561031857600080fd5b505af115801561032c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103729190810190610b03565b505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008085836103e0868863ffffffff61081516565b816103e757fe5b0410915060006103fd858563ffffffff61081516565b905060006104536104236103e586610415578a610417565b895b9063ffffffff61081516565b6104466103e861041788610437578b610439565b8c5b879063ffffffff61081516565b8161044d57fe5b0461086c565b905060006103e58561047657610471876103e863ffffffff61081516565b610488565b610488886103e863ffffffff61081516565b8161048f57fe5b0490506104a2828263ffffffff6108be16565b935050505094509492505050565b60008060006104bf85856108fb565b5090506000806104d08888886109fa565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561051557600080fd5b505afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054d9190610bc2565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146105ac5780826105af565b81815b90999098509650505050505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016105f393929190610d5c565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106419190610c81565b6000604051808303816000865af19150503d806000811461067e576040519150601f19603f3d011682016040523d82523d6000602084013e610683565b606091505b50915091508180156106ad5750805115806106ad5750808060200190518101906106ad9190610b9b565b6106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610f6a565b505050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3858560405160240161071e929190610d8d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161076c9190610c81565b6000604051808303816000865af19150503d80600081146107a9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ae565b606091505b50915091508180156107d85750805115806107d85750808060200190518101906107d89190610b9b565b61080e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e9f565b5050505050565b60008115806108305750508082028282828161082d57fe5b04145b610866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e31565b92915050565b600060038211156108af575080600160028204015b818110156108a95780915060028182858161089857fe5b0401816108a157fe5b049050610881565b506108b9565b81156108b9575060015b919050565b80820382811115610866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610dc3565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610ed6565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061099e5782846109a1565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff82166109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610f33565b9250929050565b6000806000610a0985856108fb565b91509150858282604051602001610a21929190610c47565b60405160208183030381529060405280519060200120604051602001610a48929190610cba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b600080600080600080600080610100898b031215610aa4578384fd5b8835610aaf81611098565b97506020890135610abf81611098565b965060408901359550606089013594506080890135935060a0890135925060c0890135610aeb81611098565b8092505060e089013590509295985092959890939650565b60006020808385031215610b15578182fd5b825167ffffffffffffffff811115610b2b578283fd5b80840185601f820112610b3c578384fd5b80519150610b51610b4c83611078565b611051565b8281528381019082850185850284018601891015610b6d578687fd5b8693505b84841015610b8f578051835260019390930192918501918501610b71565b50979650505050505050565b600060208284031215610bac578081fd5b81518015158114610bbb578182fd5b9392505050565b600080600060608486031215610bd6578283fd5b8351610be1816110bd565b6020850151909350610bf2816110bd565b604085015190925063ffffffff81168114610c0b578182fd5b809150509250925092565b60008060008060808587031215610c2b578384fd5b5050823594602084013594506040840135936060013592509050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015610ca15760208186018101518583015201610c87565b81811115610caf5782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527fab428a35b38b4307862d79ae79c6ec58b221c049532ba8b17045f4499da215f9603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b9115158252602082015260400190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604082015260600190565b6020808252601e908201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604082015260600190565b60208082526025908201527f556e697377617056324c6962726172793a204944454e544943414c5f4144445260408201527f4553534553000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604082015260600190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561102357845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101610ff1565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60405181810167ffffffffffffffff8111828210171561107057600080fd5b604052919050565b600067ffffffffffffffff82111561108e578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff811681146110ba57600080fd5b50565b6dffffffffffffffffffffffffffff811681146110ba57600080fdfea264697066735822122038d118129f22f3ec243f039aa30eb20250061ccda25afbefa7b17ab6e06be47464736f6c63430006060033",
169 "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBEF90FD3 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0xF887EA40 EQ PUSH2 0x84 JUMPI DUP1 PUSH4 0xFA653154 EQ PUSH2 0x8C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0xA88 JUMP JUMPDEST PUSH2 0xAD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH2 0x383 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7B SWAP2 SWAP1 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6E PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x9F PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7B SWAP3 SWAP2 SWAP1 PUSH2 0xDB3 JUMP JUMPDEST DUP6 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBB JUMPI POP DUP5 ISZERO ISZERO JUMPDEST PUSH2 0xFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xE68 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP1 PUSH2 0x107 JUMPI POP DUP3 ISZERO ISZERO JUMPDEST PUSH2 0x13D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xDFA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x16E PUSH32 0x0 DUP14 DUP14 PUSH2 0x4B0 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x17E DUP11 DUP11 DUP5 DUP5 PUSH2 0x3CB JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP DUP4 SWAP1 POP PUSH2 0x194 JUMPI DUP6 PUSH2 0x196 JUMP JUMPDEST DUP7 JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A4 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0x1B1 JUMPI DUP11 PUSH2 0x1B3 JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH2 0x1C2 JUMPI DUP13 PUSH2 0x1C4 JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH2 0x1D2 DUP3 CALLER ADDRESS DUP8 PUSH2 0x5BE JUMP JUMPDEST PUSH2 0x1FD DUP3 PUSH32 0x0 DUP7 PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x22B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x273 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x38ED173900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x38ED1739 SWAP1 PUSH2 0x2FE SWAP1 DUP9 SWAP1 PUSH1 0x0 SWAP1 DUP7 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0xFC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x372 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB03 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP4 PUSH2 0x3E0 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST DUP2 PUSH2 0x3E7 JUMPI INVALID JUMPDEST DIV LT SWAP2 POP PUSH1 0x0 PUSH2 0x3FD DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x453 PUSH2 0x423 PUSH2 0x3E5 DUP7 PUSH2 0x415 JUMPI DUP11 PUSH2 0x417 JUMP JUMPDEST DUP10 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST PUSH2 0x446 PUSH2 0x3E8 PUSH2 0x417 DUP9 PUSH2 0x437 JUMPI DUP12 PUSH2 0x439 JUMP JUMPDEST DUP13 JUMPDEST DUP8 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST DUP2 PUSH2 0x44D JUMPI INVALID JUMPDEST DIV PUSH2 0x86C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x476 JUMPI PUSH2 0x471 DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST PUSH2 0x488 JUMP JUMPDEST PUSH2 0x488 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x815 AND JUMP JUMPDEST DUP2 PUSH2 0x48F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x4A2 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8BE AND JUMP JUMPDEST SWAP4 POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4BF DUP6 DUP6 PUSH2 0x8FB JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x4D0 DUP9 DUP9 DUP9 PUSH2 0x9FA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x529 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0xBC2 JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5AC JUMPI DUP1 DUP3 PUSH2 0x5AF JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5F3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0xC81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x67E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x683 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x6AD JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x6AD JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x6AD SWAP2 SWAP1 PUSH2 0xB9B JUMP JUMPDEST PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xF6A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x71E SWAP3 SWAP2 SWAP1 PUSH2 0xD8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x76C SWAP2 SWAP1 PUSH2 0xC81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x7D8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x7D8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7D8 SWAP2 SWAP1 PUSH2 0xB9B JUMP JUMPDEST PUSH2 0x80E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xE9F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x830 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x82D JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x866 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xE31 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x8AF JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x8A9 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x898 JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x8A1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x881 JUMP JUMPDEST POP PUSH2 0x8B9 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x8B9 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x866 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xDC3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x964 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xED6 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x99E JUMPI DUP3 DUP5 PUSH2 0x9A1 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x9F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1 SWAP1 PUSH2 0xF33 JUMP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA09 DUP6 DUP6 PUSH2 0x8FB JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP6 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA21 SWAP3 SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA48 SWAP3 SWAP2 SWAP1 PUSH2 0xCBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0xAA4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0xAAF DUP2 PUSH2 0x1098 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0xABF DUP2 PUSH2 0x1098 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH2 0xAEB DUP2 PUSH2 0x1098 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB15 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB2B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 DUP5 ADD DUP6 PUSH1 0x1F DUP3 ADD SLT PUSH2 0xB3C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 MLOAD SWAP2 POP PUSH2 0xB51 PUSH2 0xB4C DUP4 PUSH2 0x1078 JUMP JUMPDEST PUSH2 0x1051 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP3 DUP6 ADD DUP6 DUP6 MUL DUP5 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0xB6D JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP4 POP JUMPDEST DUP5 DUP5 LT ISZERO PUSH2 0xB8F JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0xB71 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBAC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBBB JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBD6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0xBE1 DUP2 PUSH2 0x10BD JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xBF2 DUP2 PUSH2 0x10BD JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC0B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC2B JUMPI DUP4 DUP5 REVERT JUMPDEST POP POP DUP3 CALLDATALOAD SWAP5 PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0x14 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xCA1 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0xC87 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xCAF JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x1 DUP4 ADD MSTORE PUSH1 0x15 DUP3 ADD MSTORE PUSH32 0xAB428A35B38B4307862D79AE79C6EC58B221C049532BA8B17045F4499DA215F9 PUSH1 0x35 DUP3 ADD MSTORE PUSH1 0x55 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP2 ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F5350454E440000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F50524943450000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A20415050524F56455F4641494C45440000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A204944454E544943414C5F41444452 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4553534553000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x556E697377617056324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD DUP8 DUP4 MSTORE PUSH1 0x20 DUP8 DUP2 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP DUP3 DUP10 ADD SWAP4 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1023 JUMPI DUP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xFF1 JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 SWAP1 SWAP7 AND PUSH1 0x60 DUP6 ADD MSTORE POP POP POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x108E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x10BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x10BA JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0xD1 XOR SLT SWAP16 0x22 RETURN 0xEC 0x24 EXTCODEHASH SUB SWAP11 LOG3 0xE 0xB2 MUL POP MOD SHR 0xCD LOG2 GAS 0xFB 0xEF 0xA7 0xB1 PUSH27 0xB6E06BE47464736F6C634300060600330000000000000000000000 ",
170 "sourceMap": "416:3175:13:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;416:3175:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1831:1758:13;;;;;;;;;:::i;:::-;;531:32;;;:::i;:::-;;;;;;;;;;;;;;;;483:42;;;:::i;777:780::-;;;;;;;;;:::i;:::-;;;;;;;;;1831:1758;2186:20;;;;;:44;;-1:-1:-1;2210:20:13;;;2186:44;2178:87;;;;;;;;;;;;;;;;;;;;;;2383:19;;;;:42;;-1:-1:-1;2406:19:13;;;2383:42;2375:85;;;;;;;;;;;;;;2471:9;2490:16;2531;2549;2569:53;2598:7;2607:6;2615;2569:28;:53::i;:::-;2530:92;;;;2655:128;2701:15;2718;2751:8;2761;2655:28;:128::i;:::-;2636:147;;-1:-1:-1;2636:147:13;-1:-1:-1;2857:16:13;;-1:-1:-1;2636:147:13;;-1:-1:-1;2876:38:13;;2900:14;2876:38;;;2883:14;2876:38;2857:57;;2939:8;2928;:19;2924:69;;;2974:8;2963:19;;2924:69;3003:15;3021:4;:22;;3037:6;3021:22;;;3028:6;3021:22;3003:40;;3053:16;3072:4;:22;;3088:6;3072:22;;;3079:6;3072:22;3053:41;;3104:77;3136:7;3145:10;3165:4;3172:8;3104:31;:77::i;:::-;3191:62;3218:7;3235:6;3244:8;3191:26;:62::i;:::-;3288:16;;;3302:1;3288:16;;;3264:21;3288:16;;;;;3264:21;3288:16;;;;;109:14:-1;3288:16:13;88:42:-1;144:17;;-1:-1;3288:16:13;3264:40;;3324:7;3314:4;3319:1;3314:7;;;;;;;;;;;;;:17;;;;;;;;;;;3351:8;3341:4;3346:1;3341:7;;;;;;;;:18;;;;:7;;;;;;;;;:18;3370:212;;;;;:6;:31;;;;;;:212;;3415:8;;3437:1;;3530:4;;3548:2;;3564:8;;3370:212;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3370:212:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3370:212:13;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3370:212:13;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;3370:212:13;;;;;;;;;;1831:1758;;;;;;;;;;;;;;:::o;531:32::-;;;:::o;483:42::-;;;:::o;777:780::-;960:9;;1049:15;1038:8;1006:29;:8;1019:15;1006:29;:12;:29;:::i;:::-;:40;;;;;;:58;;-1:-1:-1;1075:17:13;1095:22;:8;1108;1095:22;:12;:22;:::i;:::-;1075:42;;1128:16;1147:177;1256:58;1310:3;1264:4;:40;;1289:15;1264:40;;;1271:15;1264:40;1256:53;:58;:53;:58;:::i;:::-;1176:65;1236:4;1176:55;1190:4;:40;;1215:15;1190:40;;;1197:15;1190:40;1176:9;;:55;:13;:55;:::i;:65::-;:138;;;;;;1147:15;:177::i;:::-;1128:196;;1334:17;1405:3;1355:4;:46;;1383:18;:8;1396:4;1383:18;:12;:18;:::i;:::-;1355:46;;;1362:18;:8;1375:4;1362:18;:12;:18;:::i;:::-;1354:54;;;;;;;-1:-1:-1;1527:23:13;:8;1354:54;1527:23;:12;:23;:::i;:::-;1516:34;;777:780;;;;;;;;;;:::o;1279:387:23:-;1372:13;1387;1413:14;1432:26;1443:6;1451;1432:10;:26::i;:::-;1412:46;;;1469:13;1484;1517:32;1525:7;1534:6;1542;1517:7;:32::i;:::-;1502:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1502:62:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1502:62:23;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1502:62:23;;;;;;;;;1468:96;;;;;;;;;1607:6;1597:16;;:6;:16;;;:62;;1640:8;1650;1597:62;;;1617:8;1627;1597:62;1574:85;;;;-1:-1:-1;1279:387:23;-1:-1:-1;;;;;;;1279:387:23:o;889:398:5:-;1066:12;1080:17;1101:5;:10;;1135;1147:4;1153:2;1157:5;1112:51;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1112:51:5;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1112:51:5;1101:63;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1065:99:5;;;;1182:7;:57;;;;-1:-1:-1;1194:11:5;;:16;;:44;;;1225:4;1214:24;;;;;;;;;;;;;;1174:106;;;;;;;;;;;;;;889:398;;;;;;:::o;166:354::-;311:12;325:17;346:5;:10;;380;392:2;396:5;357:45;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;357:45:5;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;357:45:5;346:57;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;310:93:5;;;;421:7;:57;;;;-1:-1:-1;433:11:5;;:16;;:44;;;464:4;453:24;;;;;;;;;;;;;;413:100;;;;;;;;;;;;;;166:354;;;;;:::o;453:140:22:-;505:6;531;;;:30;;-1:-1:-1;;546:5:22;;;560:1;555;546:5;555:1;541:15;;;;;:20;531:30;523:63;;;;;;;;;;;;;;453:140;;;;:::o;189:314:3:-;234:6;260:1;256;:5;252:223;;;-1:-1:-1;281:1:3;313;309;305:5;;:9;328:89;339:1;335;:5;328:89;;;364:1;360:5;;401:1;396;392;388;:5;;;;;;:9;387:15;;;;;;383:19;;328:89;;;252:223;;;;437:6;;433:42;;-1:-1:-1;463:1:3;433:42;189:314;;;:::o;320:127:22:-;403:5;;;398:16;;;;390:50;;;;;;;;;;;;;320:345:23;395:14;411;455:6;445:16;;:6;:16;;;;437:66;;;;;;;;;;;;;;541:6;532:15;;:6;:15;;;:53;;570:6;578;532:53;;;551:6;559;532:53;513:72;;-1:-1:-1;513:72:23;-1:-1:-1;603:20:23;;;595:63;;;;;;;;;;;;;;320:345;;;;;:::o;754:470::-;843:12;868:14;884;902:26;913:6;921;902:10;:26::i;:::-;867:61;;;;1027:7;1079:6;1087;1062:32;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1062:32:23;;;1052:43;;;;;;968:246;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;968:246:23;;;958:257;;49:4:-1;958:257:23;;;;;754:470;-1:-1:-1;;;;;;754:470:23:o;1583:1121:-1:-;;;;;;;;;1806:3;1794:9;1785:7;1781:23;1777:33;1774:2;;;-1:-1;;1813:12;1774:2;85:6;72:20;97:33;124:5;97:33;;;1865:63;-1:-1;1965:2;2004:22;;72:20;97:33;72:20;97:33;;;1973:63;-1:-1;2073:2;2112:22;;1233:20;;-1:-1;2181:2;2220:22;;1233:20;;-1:-1;2289:3;2329:22;;1233:20;;-1:-1;2398:3;2438:22;;1233:20;;-1:-1;2507:3;2547:22;;72:20;97:33;72:20;97:33;;;2516:63;;;;2616:3;2660:9;2656:22;1233:20;2625:63;;1768:936;;;;;;;;;;;;2711:392;;2851:2;;2839:9;2830:7;2826:23;2822:32;2819:2;;;-1:-1;;2857:12;2819:2;2908:17;2902:24;2946:18;2938:6;2935:30;2932:2;;;-1:-1;;2968:12;2932:2;3070:6;3059:9;3055:22;288:3;281:4;273:6;269:17;265:27;255:2;;-1:-1;;296:12;255:2;336:6;330:13;316:27;;358:80;373:64;430:6;373:64;;;358:80;;;466:21;;;523:14;;;;498:17;;;612;;;603:27;;;;600:36;-1:-1;597:2;;;-1:-1;;639:12;597:2;-1:-1;665:10;;659:217;684:6;681:1;678:13;659:217;;;1381:13;;752:61;;706:1;699:9;;;;;827:14;;;;855;;659:217;;;-1:-1;2988:99;2813:290;-1:-1;;;;;;;2813:290;3110:257;;3222:2;3210:9;3201:7;3197:23;3193:32;3190:2;;;-1:-1;;3228:12;3190:2;971:6;965:13;21616:5;19783:13;19776:21;21594:5;21591:32;21581:2;;-1:-1;;21627:12;21581:2;3280:71;3184:183;-1:-1;;;3184:183;3374:533;;;;3522:2;3510:9;3501:7;3497:23;3493:32;3490:2;;;-1:-1;;3528:12;3490:2;1109:6;1103:13;1121:33;1148:5;1121:33;;;3691:2;3741:22;;1103:13;3580:74;;-1:-1;1121:33;1103:13;1121:33;;;3810:2;3859:22;;1521:13;3699:74;;-1:-1;20283:10;20272:22;;21959:34;;21949:2;;-1:-1;;21997:12;21949:2;3818:73;;;;3484:423;;;;;;3914:617;;;;;4069:3;4057:9;4048:7;4044:23;4040:33;4037:2;;;-1:-1;;4076:12;4037:2;-1:-1;;1233:20;;;4228:2;4267:22;;1233:20;;-1:-1;4336:2;4375:22;;1233:20;;4444:2;4483:22;1233:20;;-1:-1;4031:500;-1:-1;4031:500;10523:383;21379:14;21383:2;21379:14;;;;;5039:58;;21379:14;;;;;10767:2;10758:12;;5039:58;10869:12;;;10658:248;10913:262;;6268:5;18669:12;-1:-1;20826:101;20840:6;20837:1;20834:13;20826:101;;;6412:4;20907:11;;;;;20901:18;20888:11;;;20881:39;20855:10;20826:101;;;20942:6;20939:1;20936:13;20933:2;;;-1:-1;20998:6;20993:3;20989:16;20982:27;20933:2;-1:-1;6443:16;;;;;11038:137;-1:-1;;11038:137;11182:917;9571:66;9551:87;;21383:2;21379:14;;;;;;9536:1;9657:11;;5039:58;11785:12;;;6038:58;9163:66;11896:12;;;9143:87;9249:12;;;11519:580;12106:213;20077:42;20066:54;;;;4781:37;;12224:2;12209:18;;12195:124;12326:435;20077:42;20066:54;;;4781:37;;20066:54;;;;12664:2;12649:18;;4781:37;12747:2;12732:18;;6038:58;;;;12500:2;12485:18;;12471:290;12768:324;20077:42;20066:54;;;;4781:37;;13078:2;13063:18;;6038:58;12914:2;12899:18;;12885:207;13099:312;19783:13;;19776:21;5903:34;;13397:2;13382:18;;6038:58;13239:2;13224:18;;13210:201;13692:407;13883:2;13897:47;;;7032:2;13868:18;;;19072:19;7068:23;19112:14;;;7048:44;7111:12;;;13854:245;14106:407;14297:2;14311:47;;;7362:2;14282:18;;;19072:19;7398:32;19112:14;;;7378:53;7450:12;;;14268:245;14520:407;14711:2;14725:47;;;7701:2;14696:18;;;19072:19;7737:22;19112:14;;;7717:43;7779:12;;;14682:245;14934:407;15125:2;15139:47;;;8030:2;15110:18;;;19072:19;8066:32;19112:14;;;8046:53;8118:12;;;15096:245;15348:407;15539:2;15553:47;;;8369:2;15524:18;;;19072:19;8405:32;19112:14;;;8385:53;8457:12;;;15510:245;15762:407;15953:2;15967:47;;;8708:2;15938:18;;;19072:19;8744:34;19112:14;;;8724:55;8813:7;8799:12;;;8792:29;8840:12;;;15924:245;16176:407;16367:2;16381:47;;;9907:2;16352:18;;;19072:19;9943:32;19112:14;;;9923:53;9995:12;;;16338:245;16590:407;16781:2;16795:47;;;10246:2;16766:18;;;19072:19;10282:34;19112:14;;;10262:55;10351:6;10337:12;;;10330:28;10377:12;;;16752:245;17004:823;;17292:3;17281:9;17277:19;6088:5;6045:3;6038:58;17465:2;20717:24;17465:2;17454:9;17450:18;6737:58;17292:3;17502:2;17491:9;17487:18;17480:48;17542:108;5333:5;18669:12;19084:6;19079:3;19072:19;19112:14;17281:9;19112:14;5345:93;;17465:2;5509:5;18523:14;5521:21;;-1:-1;5548:260;5573:6;5570:1;5567:13;5548:260;;;5634:13;;20077:42;20066:54;4781:37;;18927:14;;;;4692;;;;5595:1;5588:9;5548:260;;;-1:-1;;20077:42;20066:54;;;;17729:2;17714:18;;4781:37;-1:-1;;;17812:3;17797:19;6038:58;17534:116;17263:564;-1:-1;;;17263:564;17834:256;17896:2;17890:9;17922:17;;;17997:18;17982:34;;18018:22;;;17979:62;17976:2;;;18054:1;;18044:12;17976:2;17896;18063:22;17874:216;;-1:-1;17874:216;18097:304;;18256:18;18248:6;18245:30;18242:2;;;-1:-1;;18278:12;18242:2;-1:-1;18323:4;18311:17;;;18376:15;;18179:222;21411:117;20077:42;21498:5;20066:54;21473:5;21470:35;21460:2;;21519:1;;21509:12;21460:2;21454:74;;21653:117;19961:30;21740:5;19950:42;21715:5;21712:35;21702:2;;21761:1;;21751:12"
171 }
172 },
173 "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"},{\"internalType\":\"contract IUniswapV2Router01\",\"name\":\"router_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"computeProfitMaximizingTrade\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"aToB\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"contract IUniswapV2Router01\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSpendTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSpendTokenB\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/examples/ExampleSwapToPrice.sol\":\"ExampleSwapToPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"@daofi/uniswap-v2-core/contracts/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x67a5d298b477d96f82c91282e5ffd11b525a215c3d2a290843455b04d9bf6556\",\"urls\":[\"bzz-raw://f77b9a6ec90fcfc33b80cc728619bd166260d5389818ae529f64fe0beca7a14a\",\"dweb:/ipfs/QmS1xwUSizor92CpgLsBiCaUVrgwMvg27dPcLdVhyNDC5U\"]},\"@uniswap/lib/contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0xe20fc48e3575b4a2932e5d2dd53b6742e1ca96f652bd41038cb89d7f5d49a096\",\"urls\":[\"bzz-raw://6ba298d8e592d39960eabc2328b7d4a01ad6cf8b06366adc3ef0133d3b196a9f\",\"dweb:/ipfs/QmQgrNaHssJ8XVsPUCMHpyYRFLbBqNrumaoFgXHWdDiTyy\"]},\"@uniswap/lib/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x0920a26df9837a073c6b24c4e2542d9409c173748e0c6728a1ae39ce5c368899\",\"urls\":[\"bzz-raw://46c191c0fc6452e0c1c75725b4f577309cc20f081f85a1d10f706d0d9127297e\",\"dweb:/ipfs/QmVuExKwURcyQVax2YDKZqYZELwjNQ4KRyLnKwvHD8rz44\"]},\"contracts/examples/ExampleSwapToPrice.sol\":{\"keccak256\":\"0x6ca090cf04f112bb4721839f0f0d8f42fed6579f7602216eed22746cd5ff27b5\",\"urls\":[\"bzz-raw://258d9e08ef797962ee6b9633fc7387c86bb794bf5e340778894316bd8c443460\",\"dweb:/ipfs/QmSKS614vXFm8URJjcBWkxoVyqcrzUK9wwDY2QRhbCbMGr\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x682f93f55f4db2c2d193438a7009782d78e8594a03fa085eafff662aa257814f\",\"urls\":[\"bzz-raw://73696df26d3ce1e2a22d9c775fbfdb90f9e4f5cee9fef1cfb6d3058ff87172ec\",\"dweb:/ipfs/QmTHQE1D1eQaUUppcMccQibwUDAQb2B5H3ziNqJTSDrY4k\"]},\"contracts/interfaces/IUniswapV2Router01.sol\":{\"keccak256\":\"0xfbd2207b1c957faa2bd0fc0591024f7c137f745c18266355389e4a14b1392748\",\"urls\":[\"bzz-raw://78bf9e8c1c5e979de65910691e343ea297f56f14fa5f91770fc37013b48c3bd7\",\"dweb:/ipfs/QmcwmTLkaHZr8s6YkhiYobJVR3JWMYQLsrZW2QU8R4RjgF\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0x456ce938ef2994db6d8299bec615d4ef9811f61332718899a6fc26ca831d4052\",\"urls\":[\"bzz-raw://5841eacf0214e990faa02d5875e4ec5d12da55e82d741b48770e132a5149d074\",\"dweb:/ipfs/QmfAVKusuPTx82ejY8fYcxipgmX4v8aSVoSoizwojzqaqP\"]},\"contracts/libraries/UniswapV2Library.sol\":{\"keccak256\":\"0x903f64efd7c821cd21b49ffb33c8135cf99332394389041bf8e083b3c98b7d96\",\"urls\":[\"bzz-raw://0b8ca7baaef9dc1cf9a6d635e8e4d6605ec32808cd5f96358c4d018a68691bbb\",\"dweb:/ipfs/QmRou1qfoXZ56erPkWmNzmkJQ5TnJheU67sKfjfVm78rbV\"]}},\"version\":1}",
174 "interface": [
175 {
176 "inputs": [
177 {
178 "internalType": "address",
179 "name": "factory_",
180 "type": "address"
181 },
182 {
183 "internalType": "contract IUniswapV2Router01",
184 "name": "router_",
185 "type": "address"
186 }
187 ],
188 "stateMutability": "nonpayable",
189 "type": "constructor"
190 },
191 {
192 "inputs": [
193 {
194 "internalType": "uint256",
195 "name": "truePriceTokenA",
196 "type": "uint256"
197 },
198 {
199 "internalType": "uint256",
200 "name": "truePriceTokenB",
201 "type": "uint256"
202 },
203 {
204 "internalType": "uint256",
205 "name": "reserveA",
206 "type": "uint256"
207 },
208 {
209 "internalType": "uint256",
210 "name": "reserveB",
211 "type": "uint256"
212 }
213 ],
214 "name": "computeProfitMaximizingTrade",
215 "outputs": [
216 {
217 "internalType": "bool",
218 "name": "aToB",
219 "type": "bool"
220 },
221 {
222 "internalType": "uint256",
223 "name": "amountIn",
224 "type": "uint256"
225 }
226 ],
227 "stateMutability": "pure",
228 "type": "function"
229 },
230 {
231 "inputs": [],
232 "name": "factory",
233 "outputs": [
234 {
235 "internalType": "address",
236 "name": "",
237 "type": "address"
238 }
239 ],
240 "stateMutability": "view",
241 "type": "function"
242 },
243 {
244 "inputs": [],
245 "name": "router",
246 "outputs": [
247 {
248 "internalType": "contract IUniswapV2Router01",
249 "name": "",
250 "type": "address"
251 }
252 ],
253 "stateMutability": "view",
254 "type": "function"
255 },
256 {
257 "inputs": [
258 {
259 "internalType": "address",
260 "name": "tokenA",
261 "type": "address"
262 },
263 {
264 "internalType": "address",
265 "name": "tokenB",
266 "type": "address"
267 },
268 {
269 "internalType": "uint256",
270 "name": "truePriceTokenA",
271 "type": "uint256"
272 },
273 {
274 "internalType": "uint256",
275 "name": "truePriceTokenB",
276 "type": "uint256"
277 },
278 {
279 "internalType": "uint256",
280 "name": "maxSpendTokenA",
281 "type": "uint256"
282 },
283 {
284 "internalType": "uint256",
285 "name": "maxSpendTokenB",
286 "type": "uint256"
287 },
288 {
289 "internalType": "address",
290 "name": "to",
291 "type": "address"
292 },
293 {
294 "internalType": "uint256",
295 "name": "deadline",
296 "type": "uint256"
297 }
298 ],
299 "name": "swapToPrice",
300 "outputs": [],
301 "stateMutability": "nonpayable",
302 "type": "function"
303 }
304 ],
305 "bytecode": "60c060405234801561001057600080fd5b506040516111e53803806111e583398101604081905261002f9161004d565b6001600160601b0319606092831b811660a052911b1660805261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c61110f6100d66000398061014852806103855250806101d852806102be52806103a9525061110f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063bef90fd314610051578063c45a015514610066578063f887ea4014610084578063fa6531541461008c575b600080fd5b61006461005f366004610a88565b6100ad565b005b61006e610383565b60405161007b9190610d3b565b60405180910390f35b61006e6103a7565b61009f61009a366004610c16565b6103cb565b60405161007b929190610db3565b85158015906100bb57508415155b6100fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e68565b60405180910390fd5b8315158061010757508215155b61013d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610dfa565b60008060008061016e7f00000000000000000000000000000000000000000000000000000000000000008d8d6104b0565b9150915061017e8a8a84846103cb565b9094509250600091508390506101945785610196565b865b9050808211156101a4578091505b6000836101b1578a6101b3565b8b5b90506000846101c2578c6101c4565b8b5b90506101d2823330876105be565b6101fd827f0000000000000000000000000000000000000000000000000000000000000000866106eb565b6040805160028082526060808301845292602083019080368337019050509050828160008151811061022b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061027357fe5b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f38ed17390000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed1739906102fe90889060009086908e908e90600401610fc7565b600060405180830381600087803b15801561031857600080fd5b505af115801561032c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103729190810190610b03565b505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008085836103e0868863ffffffff61081516565b816103e757fe5b0410915060006103fd858563ffffffff61081516565b905060006104536104236103e586610415578a610417565b895b9063ffffffff61081516565b6104466103e861041788610437578b610439565b8c5b879063ffffffff61081516565b8161044d57fe5b0461086c565b905060006103e58561047657610471876103e863ffffffff61081516565b610488565b610488886103e863ffffffff61081516565b8161048f57fe5b0490506104a2828263ffffffff6108be16565b935050505094509492505050565b60008060006104bf85856108fb565b5090506000806104d08888886109fa565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561051557600080fd5b505afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054d9190610bc2565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146105ac5780826105af565b81815b90999098509650505050505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016105f393929190610d5c565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106419190610c81565b6000604051808303816000865af19150503d806000811461067e576040519150601f19603f3d011682016040523d82523d6000602084013e610683565b606091505b50915091508180156106ad5750805115806106ad5750808060200190518101906106ad9190610b9b565b6106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610f6a565b505050505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3858560405160240161071e929190610d8d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161076c9190610c81565b6000604051808303816000865af19150503d80600081146107a9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ae565b606091505b50915091508180156107d85750805115806107d85750808060200190518101906107d89190610b9b565b61080e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e9f565b5050505050565b60008115806108305750508082028282828161082d57fe5b04145b610866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610e31565b92915050565b600060038211156108af575080600160028204015b818110156108a95780915060028182858161089857fe5b0401816108a157fe5b049050610881565b506108b9565b81156108b9575060015b919050565b80820382811115610866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610dc3565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610ed6565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061099e5782846109a1565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff82166109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f190610f33565b9250929050565b6000806000610a0985856108fb565b91509150858282604051602001610a21929190610c47565b60405160208183030381529060405280519060200120604051602001610a48929190610cba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b600080600080600080600080610100898b031215610aa4578384fd5b8835610aaf81611098565b97506020890135610abf81611098565b965060408901359550606089013594506080890135935060a0890135925060c0890135610aeb81611098565b8092505060e089013590509295985092959890939650565b60006020808385031215610b15578182fd5b825167ffffffffffffffff811115610b2b578283fd5b80840185601f820112610b3c578384fd5b80519150610b51610b4c83611078565b611051565b8281528381019082850185850284018601891015610b6d578687fd5b8693505b84841015610b8f578051835260019390930192918501918501610b71565b50979650505050505050565b600060208284031215610bac578081fd5b81518015158114610bbb578182fd5b9392505050565b600080600060608486031215610bd6578283fd5b8351610be1816110bd565b6020850151909350610bf2816110bd565b604085015190925063ffffffff81168114610c0b578182fd5b809150509250925092565b60008060008060808587031215610c2b578384fd5b5050823594602084013594506040840135936060013592509050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251815b81811015610ca15760208186018101518583015201610c87565b81811115610caf5782828501525b509190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527fab428a35b38b4307862d79ae79c6ec58b221c049532ba8b17045f4499da215f9603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b9115158252602082015260400190565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252601e908201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604082015260600190565b6020808252601e908201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604082015260600190565b60208082526025908201527f556e697377617056324c6962726172793a204944454e544943414c5f4144445260408201527f4553534553000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604082015260600190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561102357845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101610ff1565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60405181810167ffffffffffffffff8111828210171561107057600080fd5b604052919050565b600067ffffffffffffffff82111561108e578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff811681146110ba57600080fd5b50565b6dffffffffffffffffffffffffffff811681146110ba57600080fdfea264697066735822122038d118129f22f3ec243f039aa30eb20250061ccda25afbefa7b17ab6e06be47464736f6c63430006060033"
306}
\No newline at end of file