From 7ff99c9b1fdfb3b2c4b8d76113241db6604bfd43 Mon Sep 17 00:00:00 2001 From: Tim Olson <> Date: Tue, 21 Nov 2023 00:15:38 -0400 Subject: [PATCH] alpha redeploy --- .../broadcast/Deploy.sol/53261/run-alpha.json | 42 +- .../DeployMock.sol/53261/run-alpha.json | 159 +- .../alpha/out/Constants.sol/Constants.json | 88 +- deployment/alpha/out/Deploy.sol/Deploy.json | 118 +- .../alpha/out/DeployMock.sol/DeployMock.json | 72 +- .../alpha/out/Dexorder.sol/Dexorder.json | 514 +- deployment/alpha/out/Factory.sol/Factory.json | 86 +- .../IVaultDeployer.sol/IVaultDeployer.json | 28 +- .../alpha/out/MockERC20.sol/MockERC20.json | 140 +- deployment/alpha/out/MockEnv.sol/MockEnv.json | 2262 ++++---- .../alpha/out/OrderLib.sol/OrderLib.json | 5096 ++++++++--------- .../out/QueryHelper.sol/QueryHelper.json | 1112 ++-- .../out/TestFullMath.sol/TestFullMath.json | 876 +-- .../alpha/out/TestOrder.sol/TestOrder.json | 2842 ++++----- .../TestSinglePool.sol/TestSinglePool.json | 186 +- .../alpha/out/TestVault.sol/TestVault.json | 374 +- .../UniswapSwapper.sol/UniswapSwapper.json | 1450 ++--- deployment/alpha/out/Util.sol/Util.json | 170 +- deployment/alpha/out/Vault.sol/Vault.json | 886 +-- .../VaultAddress.json | 210 +- .../out/VaultAddress.sol/VaultAddress.json | 224 +- .../out/VaultDeployer.sol/VaultDeployer.json | 402 +- src/Constants.sol | 2 - 23 files changed, 8640 insertions(+), 8699 deletions(-) diff --git a/deployment/alpha/broadcast/Deploy.sol/53261/run-alpha.json b/deployment/alpha/broadcast/Deploy.sol/53261/run-alpha.json index 60c6907..3e1fe59 100644 --- a/deployment/alpha/broadcast/Deploy.sol/53261/run-alpha.json +++ b/deployment/alpha/broadcast/Deploy.sol/53261/run-alpha.json @@ -1,10 +1,10 @@ { "transactions": [ { - "hash": "0xf22813bd706f4d1ce9fe37fc23844d070b7a0a34c6676a320d0c348487d16801", + "hash": "0x51e3a489b584fdb2ff2b1918c96e4bfb7ec88fe77fd8d4c874efd8e1aebe22b6", "transactionType": "CREATE2", "contractName": "Factory", - "contractAddress": "0xdd822942309d7bB7EF6Ff64c047f254d910444cb", + "contractAddress": "0x8794afB7E6e4d8902A8B85aBB6C18FcE7B248890", "function": null, "arguments": null, "transaction": { @@ -13,7 +13,7 @@ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "gas": "0x603a18", "value": "0x0", - "data": "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c63430008160033", + "data": "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c63430008160033", "nonce": "0xd9b", "accessList": [] }, @@ -21,7 +21,7 @@ "isFixedGasLimit": false }, { - "hash": "0xe53a4e54f6a63e12023d3ac357f745b67459d515b2f011ffdd86f910e44521bd", + "hash": "0x5f1fb192618f1452e39d90df0d714f735972f3f9611b0e00064ce0c3858aaebf", "transactionType": "CREATE", "contractName": "QueryHelper", "contractAddress": "0xdb0A5b2A6e7aAf0836327b58Ce1c01bB9ABdc1de", @@ -32,7 +32,7 @@ "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "gas": "0x155dca", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b50611299806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea264697066735822122085b8679d697e8685f6eceb314bd3910c1a407cdc658db22181b280efe388928464736f6c63430008160033", + "data": "0x608060405234801561001057600080fd5b50611299806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea2646970667358221220781b28c3f6332aa5b34004d6e3aec84d08036cc72cde73dd5d71b4b6c36c4bf764736f6c63430008160033", "nonce": "0xd9c", "accessList": [] }, @@ -40,7 +40,7 @@ "isFixedGasLimit": false }, { - "hash": "0xb7718e88a0e42f45e2a544eaa1bc79c844fe2c6fda201d0566a7bae52c2561ce", + "hash": "0x8726568b597449fcca691d66833ed2af4c287bf019c3348c3932fa625c4f577e", "transactionType": "CREATE", "contractName": "Dexorder", "contractAddress": "0x39A41BAaf5cED9245a22fEA1b349D1E658992216", @@ -51,7 +51,7 @@ "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "gas": "0xb21b4", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b50610937806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea264697066735822122010e7caca257b5dd89b35e6ee456a0d4fcc09e1dd5031b604e2af863cab78e61b64736f6c63430008160033", + "data": "0x608060405234801561001057600080fd5b50610937806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea26469706673582212206b929d409aafd747ffc47b49529bb4edf512f6fc855d47fbbb040519410f32b864736f6c63430008160033", "nonce": "0xd9d", "accessList": [] }, @@ -61,10 +61,10 @@ ], "receipts": [ { - "transactionHash": "0xf22813bd706f4d1ce9fe37fc23844d070b7a0a34c6676a320d0c348487d16801", + "transactionHash": "0x51e3a489b584fdb2ff2b1918c96e4bfb7ec88fe77fd8d4c874efd8e1aebe22b6", "transactionIndex": "0x0", - "blockHash": "0xc645087c7c0240a977d4de3ea924623f0a644eac03a33ca9e152e1409624960b", - "blockNumber": "0x9115421", + "blockHash": "0x96da71ae74eba6be3dea8e97e9c20b6e17bb01856defe37b290a5def769c8a45", + "blockNumber": "0x916c8d0", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", "cumulativeGasUsed": "0x45afc0", @@ -74,13 +74,13 @@ "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d05e07" + "effectiveGasPrice": "0xb2d08a82" }, { - "transactionHash": "0xe53a4e54f6a63e12023d3ac357f745b67459d515b2f011ffdd86f910e44521bd", + "transactionHash": "0x5f1fb192618f1452e39d90df0d714f735972f3f9611b0e00064ce0c3858aaebf", "transactionIndex": "0x1", - "blockHash": "0xc645087c7c0240a977d4de3ea924623f0a644eac03a33ca9e152e1409624960b", - "blockNumber": "0x9115421", + "blockHash": "0x96da71ae74eba6be3dea8e97e9c20b6e17bb01856defe37b290a5def769c8a45", + "blockNumber": "0x916c8d0", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": null, "cumulativeGasUsed": "0x562074", @@ -90,13 +90,13 @@ "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d05e07" + "effectiveGasPrice": "0xb2d08a82" }, { - "transactionHash": "0xb7718e88a0e42f45e2a544eaa1bc79c844fe2c6fda201d0566a7bae52c2561ce", + "transactionHash": "0x8726568b597449fcca691d66833ed2af4c287bf019c3348c3932fa625c4f577e", "transactionIndex": "0x2", - "blockHash": "0xc645087c7c0240a977d4de3ea924623f0a644eac03a33ca9e152e1409624960b", - "blockNumber": "0x9115421", + "blockHash": "0x96da71ae74eba6be3dea8e97e9c20b6e17bb01856defe37b290a5def769c8a45", + "blockNumber": "0x916c8d0", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": null, "cumulativeGasUsed": "0x5eb11f", @@ -106,14 +106,14 @@ "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d05e07" + "effectiveGasPrice": "0xb2d08a82" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1700442975, + "timestamp": 1700540015, "chain": 53261, "multi": false, - "commit": "29ba819" + "commit": "a6983d2" } \ No newline at end of file diff --git a/deployment/alpha/broadcast/DeployMock.sol/53261/run-alpha.json b/deployment/alpha/broadcast/DeployMock.sol/53261/run-alpha.json index 820b6e3..1a4e8e0 100644 --- a/deployment/alpha/broadcast/DeployMock.sol/53261/run-alpha.json +++ b/deployment/alpha/broadcast/DeployMock.sol/53261/run-alpha.json @@ -1,7 +1,7 @@ { "transactions": [ { - "hash": "0x84c83d56dd4cd698ea0b2877691b5a70b999862d377026b8deb9f68b37ec0e84", + "hash": "0x159b4bdb7e95fdee8ae59b5fe611a282a79be2098008a2d470ceca2e5e36515b", "transactionType": "CREATE", "contractName": "Util", "contractAddress": "0xD629781AFCD5672969F009aed60f6603bdebda22", @@ -19,7 +19,7 @@ "isFixedGasLimit": false }, { - "hash": "0xecda2e48a1c2b6e5830017af8c35720f0dc943b576095723637146e285c90aef", + "hash": "0xcc1ced53dd7d9e9f1aee327ea67d1c2432d28de212ed601f544e13933d7b6fde", "transactionType": "CREATE", "contractName": "MockEnv", "contractAddress": "0x6053cA02DCd3D71B0987b4DC2a39b3dDA04647C7", @@ -30,7 +30,7 @@ "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "gas": "0x3d4330", "value": "0x0", - "data": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073d629781afcd5672969f009aed60f6603bdebda22906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073d629781afcd5672969f009aed60f6603bdebda22906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220e24d516b60430c641c8980ef5657e8505e86a72a54cb97d776669dcdc4b7648564736f6c63430008160033", + "data": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073d629781afcd5672969f009aed60f6603bdebda22906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073d629781afcd5672969f009aed60f6603bdebda22906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220bcf6de9d6c3f975767cbe831267c470ecc806539ce37e7f80512820d344df48564736f6c63430008160033", "nonce": "0xd9f", "accessList": [] }, @@ -38,7 +38,7 @@ "isFixedGasLimit": false }, { - "hash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "hash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionType": "CALL", "contractName": "MockEnv", "contractAddress": "0x6053cA02DCd3D71B0987b4DC2a39b3dDA04647C7", @@ -76,10 +76,10 @@ ], "receipts": [ { - "transactionHash": "0x84c83d56dd4cd698ea0b2877691b5a70b999862d377026b8deb9f68b37ec0e84", + "transactionHash": "0x159b4bdb7e95fdee8ae59b5fe611a282a79be2098008a2d470ceca2e5e36515b", "transactionIndex": "0x0", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": null, "cumulativeGasUsed": "0x3e265", @@ -89,13 +89,13 @@ "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d05e07" + "effectiveGasPrice": "0xb2d06652" }, { - "transactionHash": "0xecda2e48a1c2b6e5830017af8c35720f0dc943b576095723637146e285c90aef", + "transactionHash": "0xcc1ced53dd7d9e9f1aee327ea67d1c2432d28de212ed601f544e13933d7b6fde", "transactionIndex": "0x1", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": null, "cumulativeGasUsed": "0x3305d3", @@ -105,13 +105,13 @@ "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d05e07" + "effectiveGasPrice": "0xb2d06652" }, { - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": "0x6053cA02DCd3D71B0987b4DC2a39b3dDA04647C7", "cumulativeGasUsed": "0x9e104c", @@ -127,12 +127,11 @@ "0x00000000000000000000000000000000000000000000000000000000000001f4" ], "data": "0x000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000ec9b8f69286aa5300a68c76678b236caecd107fb", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x1a", - "transactionLogIndex": "0x0", + "logIndex": "0x0", "removed": false }, { @@ -141,12 +140,11 @@ "0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95" ], "data": "0x0000000000000000000000000000000000000000000010c6f7a0b5ed8d36b4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc89b", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x1b", - "transactionLogIndex": "0x1", + "logIndex": "0x1", "removed": false }, { @@ -157,12 +155,11 @@ "0x0000000000000000000000006053ca02dcd3d71b0987b4dc2a39b3dda04647c7" ], "data": "0x0000000000000000000000000000000000000000000422ca8b0a00a425000000", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x1c", - "transactionLogIndex": "0x2", + "logIndex": "0x2", "removed": false }, { @@ -173,12 +170,11 @@ "0x000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88" ], "data": "0x0000000000000000000000000000000000000000000422ca8b0a00a425000000", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x1d", - "transactionLogIndex": "0x3", + "logIndex": "0x3", "removed": false }, { @@ -189,12 +185,11 @@ "0x0000000000000000000000006053ca02dcd3d71b0987b4dc2a39b3dda04647c7" ], "data": "0x0000000000000000000000000000000000000000000000000000048c27395000", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x1e", - "transactionLogIndex": "0x4", + "logIndex": "0x4", "removed": false }, { @@ -205,12 +200,11 @@ "0x000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88" ], "data": "0x0000000000000000000000000000000000000000000000000000048c27395000", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x1f", - "transactionLogIndex": "0x5", + "logIndex": "0x5", "removed": false }, { @@ -221,12 +215,11 @@ "0x000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88" ], "data": "0x00000000000000000000000000000000000000000000000000000000000f4204", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x20", - "transactionLogIndex": "0x6", + "logIndex": "0x6", "removed": false }, { @@ -237,12 +230,11 @@ "0x000000000000000000000000ec9b8f69286aa5300a68c76678b236caecd107fb" ], "data": "0x0000000000000000000000000000000000000000000422ca8b0a00a424f0bdfc", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x21", - "transactionLogIndex": "0x7", + "logIndex": "0x7", "removed": false }, { @@ -253,12 +245,11 @@ "0x000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x22", - "transactionLogIndex": "0x8", + "logIndex": "0x8", "removed": false }, { @@ -269,12 +260,11 @@ "0x000000000000000000000000ec9b8f69286aa5300a68c76678b236caecd107fb" ], "data": "0x0000000000000000000000000000000000000000000000000000048c27395000", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x23", - "transactionLogIndex": "0x9", + "logIndex": "0x9", "removed": false }, { @@ -286,12 +276,11 @@ "0x00000000000000000000000000000000000000000000000000000000000d89e6" ], "data": "0x000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe880000000000000000000000000000000000000000000000004563918244f3ffff0000000000000000000000000000000000000000000422ca8b0a00a424f0bdfc0000000000000000000000000000000000000000000000000000048c27395000", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x24", - "transactionLogIndex": "0xa", + "logIndex": "0xa", "removed": false }, { @@ -300,37 +289,35 @@ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000000000000000000000000000000000000000ebe66" + "0x00000000000000000000000000000000000000000000000000000000000ec514" ], "data": "0x", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x25", - "transactionLogIndex": "0xb", + "logIndex": "0xb", "removed": false }, { "address": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", "topics": [ "0x3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f", - "0x00000000000000000000000000000000000000000000000000000000000ebe66" + "0x00000000000000000000000000000000000000000000000000000000000ec514" ], "data": "0x0000000000000000000000000000000000000000000000004563918244f3ffff0000000000000000000000000000000000000000000422ca8b0a00a424f0bdfc0000000000000000000000000000000000000000000000000000048c27395000", - "blockHash": "0x2fbda4a191eebbac1dcfef3b48812c4e927e551c84f3856a572df9cedc673f09", - "blockNumber": "0x911542e", - "transactionHash": "0x1da1c66828cb99e744f9f5617daf8216389bbd77ba3140e22bd4bc0b9b642c4a", + "blockHash": "0x4b31a88bc7e45c210264b26de58d6569bc0c9c54137aa80440e3194e05c3378b", + "blockNumber": "0x916c8dd", + "transactionHash": "0x655f9f4f7fcb7f8bac94e6aca402ad04e0d1d920e6fc90b8200ccaee133cbdea", "transactionIndex": "0x2", - "logIndex": "0x26", - "transactionLogIndex": "0xc", + "logIndex": "0xc", "removed": false } ], "status": "0x1", - "logsBloom": "0x00800000000000000000108000104000000081000000000000000000000000000500000000000000000000000000080000014000040000000400000000210000000000000000800000000208000000010001000800000000000008800000020400000000023000000800000100000800000000080800000000000010000000000000000048800002010000000000000000000000000400020000004000000000020100000000020000100000008000000000000040200000040000000000080040000002000000200000080000000000200000002000000000000000000020000010220000000040040000000000000000000000000200000000000000000800", + "logsBloom": "0x00800000000000000000108008104000000081000000000000000000000000000500000000000000000000000000080000014000000000000400000000210000000000000000800000000208000000010001000800000000000008800000020400000000023000000800000100000800000000080800080000000010000000000000000008800002010000000000000000000000000400020000004000000000020100000000020000100000008000000000000040200000040000000000080040000002000000200000080000000000200000002000000000000000000020000010200000000040040000000000000000000000000200000000000000001800", "type": "0x2", - "effectiveGasPrice": "0xb2d05e07" + "effectiveGasPrice": "0xb2d06652" } ], "libraries": [ @@ -338,8 +325,8 @@ ], "pending": [], "returns": {}, - "timestamp": 1700443001, + "timestamp": 1700540037, "chain": 53261, "multi": false, - "commit": "29ba819" + "commit": "a6983d2" } \ No newline at end of file diff --git a/deployment/alpha/out/Constants.sol/Constants.json b/deployment/alpha/out/Constants.sol/Constants.json index 3acb5bd..3f77f62 100644 --- a/deployment/alpha/out/Constants.sol/Constants.json +++ b/deployment/alpha/out/Constants.sol/Constants.json @@ -1,17 +1,17 @@ { "abi": [], "bytecode": { - "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206caa2302c5774b740cfc7cbcbeb4f0ac340877d67e5c98a20527e493359e88e164736f6c63430008160033", - "sourceMap": "336:521:50:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;336:521:50;;;;;;;;;;;;;;;;;", + "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122006c00dd38740611dd7e8e03e4634cd4b46a011cddfcaea81ca206daa83b6556064736f6c63430008160033", + "sourceMap": "336:476:50:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;336:476:50;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206caa2302c5774b740cfc7cbcbeb4f0ac340877d67e5c98a20527e493359e88e164736f6c63430008160033", - "sourceMap": "336:521:50:-:0;;;;;;;;", + "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122006c00dd38740611dd7e8e03e4634cd4b46a011cddfcaea81ca206daa83b6556064736f6c63430008160033", + "sourceMap": "336:476:50:-:0;;;;;;;;", "linkReferences": {} }, "methodIdentifiers": {}, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Constants.sol\":\"Constants\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Constants.sol\":\"Constants\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -172,10 +172,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" } @@ -184,10 +184,10 @@ }, "ast": { "absolutePath": "src/Constants.sol", - "id": 46265, + "id": 46262, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "IERC165": [ 43789 @@ -230,7 +230,7 @@ ] }, "nodeType": "SourceUnit", - "src": "65:793:50", + "src": "65:748:50", "nodes": [ { "id": 46235, @@ -262,7 +262,7 @@ "absolutePath": "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol", "file": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol", "nameLocation": "-1:-1:-1", - "scope": 46265, + "scope": 46262, "sourceUnit": 43873, "symbolAliases": [], "unitAlias": "" @@ -275,7 +275,7 @@ "absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol", "file": "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol", "nameLocation": "-1:-1:-1", - "scope": 46265, + "scope": 46262, "sourceUnit": 45455, "symbolAliases": [], "unitAlias": "" @@ -288,15 +288,15 @@ "absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol", "file": "@uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol", "nameLocation": "-1:-1:-1", - "scope": 46265, + "scope": 46262, "sourceUnit": 45294, "symbolAliases": [], "unitAlias": "" }, { - "id": 46264, + "id": 46261, "nodeType": "ContractDefinition", - "src": "336:521:50", + "src": "336:476:50", "nodes": [ { "id": 46242, @@ -307,7 +307,7 @@ "mutability": "constant", "name": "VERSION", "nameLocation": "384:7:50", - "scope": 46264, + "scope": 46261, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -351,7 +351,7 @@ "mutability": "constant", "name": "uniswapV3Factory", "nameLocation": "438:16:50", - "scope": 46264, + "scope": 46261, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -442,7 +442,7 @@ "mutability": "constant", "name": "uniswapV3NonfungiblePositionManager", "nameLocation": "570:35:50", - "scope": 46264, + "scope": 46261, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -533,7 +533,7 @@ "mutability": "constant", "name": "uniswapV3SwapRouter", "nameLocation": "723:19:50", - "scope": 46264, + "scope": 46261, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -614,50 +614,6 @@ } }, "visibility": "internal" - }, - { - "id": 46263, - "nodeType": "VariableDeclaration", - "src": "816:38:50", - "nodes": [], - "constant": true, - "mutability": "constant", - "name": "SWAP_OK", - "nameLocation": "842:7:50", - "scope": 46264, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 46261, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "816:7:50", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "hexValue": "", - "id": 46262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "852:2:50", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - }, - "visibility": "internal" } ], "abstract": false, @@ -667,11 +623,11 @@ "contractKind": "library", "fullyImplemented": true, "linearizedBaseContracts": [ - 46264 + 46261 ], "name": "Constants", "nameLocation": "344:9:50", - "scope": 46265, + "scope": 46262, "usedErrors": [], "usedEvents": [] } diff --git a/deployment/alpha/out/Deploy.sol/Deploy.json b/deployment/alpha/out/Deploy.sol/Deploy.json index bc0d044..9b0ee5c 100644 --- a/deployment/alpha/out/Deploy.sol/Deploy.json +++ b/deployment/alpha/out/Deploy.sol/Deploy.json @@ -22,12 +22,12 @@ } ], "bytecode": { - "object": "0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b506174588061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610068565b005b600c546100529060ff1681565b60405161005f9190610503565b60405180910390f35b6040517fc1978d1f000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f906100b990600401610517565b602060405180830381865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610554565b6040517fce817d47000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d479061014d908490600401610579565b600060405180830381600087803b15801561016757600080fd5b505af115801561017b573d6000803e3d6000fd5b5050505060006001604051602001610193919061059b565b604051602081830303815290604052805190602001206040516101b5906104d2565b8190604051809103906000f59050801580156101d5573d6000803e3d6000fd5b50905060006040516101e6906104df565b604051809103906000f080158015610202573d6000803e3d6000fd5b5090506000604051610213906104ec565b604051809103906000f08015801561022f573d6000803e3d6000fd5b5090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561029d57600080fd5b505af11580156102b1573d6000803e3d6000fd5b505050506102f36040518060400160405280600781526020017f466163746f727900000000000000000000000000000000000000000000000000815250610390565b6102fc83610422565b61033a6040518060400160405280600b81526020017f517565727948656c706572000000000000000000000000000000000000000000815250610390565b61034382610422565b6103816040518060400160405280600881526020017f4465786f72646572000000000000000000000000000000000000000000000000815250610390565b61038a81610422565b50505050565b61041f816040516024016103a4919061061b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526104ad565b50565b61041f816040516024016104369190610655565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b61041f8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8061066483390190565b6112b98061581383390190565b61095780616acc83390190565b8015155b82525050565b6020810161051182846104f9565b92915050565b60208152600061051160208301600b81527f505249564154455f4b4559000000000000000000000000000000000000000000602082015260400190565b60006020828403121561056957610569600080fd5b81515b9392505050565b806104fd565b602081016105118284610573565b600060ff8216610511565b6104fd81610587565b602081016105118284610592565b60005b838110156105c45781810151838201526020016105ac565b50506000910152565b60006105d7825190565b808452602084016105ec8282602087016105a9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b60208152600061056c60208301846105cd565b600073ffffffffffffffffffffffffffffffffffffffff8216610511565b6104fd8161062e565b60208101610511828461064c56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c63430008160033608060405234801561001057600080fd5b50611299806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea264697066735822122085b8679d697e8685f6eceb314bd3910c1a407cdc658db22181b280efe388928464736f6c63430008160033608060405234801561001057600080fd5b50610937806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea264697066735822122010e7caca257b5dd89b35e6ee456a0d4fcc09e1dd5031b604e2af863cab78e61b64736f6c63430008160033a2646970667358221220cf9e541aca458fefc11f7dbe44ffa8c9dd610e085377aa6df37c1b38737f44bd64736f6c63430008160033", + "object": "0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b506174588061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610068565b005b600c546100529060ff1681565b60405161005f9190610503565b60405180910390f35b6040517fc1978d1f000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f906100b990600401610517565b602060405180830381865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610554565b6040517fce817d47000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d479061014d908490600401610579565b600060405180830381600087803b15801561016757600080fd5b505af115801561017b573d6000803e3d6000fd5b5050505060006001604051602001610193919061059b565b604051602081830303815290604052805190602001206040516101b5906104d2565b8190604051809103906000f59050801580156101d5573d6000803e3d6000fd5b50905060006040516101e6906104df565b604051809103906000f080158015610202573d6000803e3d6000fd5b5090506000604051610213906104ec565b604051809103906000f08015801561022f573d6000803e3d6000fd5b5090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561029d57600080fd5b505af11580156102b1573d6000803e3d6000fd5b505050506102f36040518060400160405280600781526020017f466163746f727900000000000000000000000000000000000000000000000000815250610390565b6102fc83610422565b61033a6040518060400160405280600b81526020017f517565727948656c706572000000000000000000000000000000000000000000815250610390565b61034382610422565b6103816040518060400160405280600881526020017f4465786f72646572000000000000000000000000000000000000000000000000815250610390565b61038a81610422565b50505050565b61041f816040516024016103a4919061061b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526104ad565b50565b61041f816040516024016104369190610655565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b61041f8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8061066483390190565b6112b98061581383390190565b61095780616acc83390190565b8015155b82525050565b6020810161051182846104f9565b92915050565b60208152600061051160208301600b81527f505249564154455f4b4559000000000000000000000000000000000000000000602082015260400190565b60006020828403121561056957610569600080fd5b81515b9392505050565b806104fd565b602081016105118284610573565b600060ff8216610511565b6104fd81610587565b602081016105118284610592565b60005b838110156105c45781810151838201526020016105ac565b50506000910152565b60006105d7825190565b808452602084016105ec8282602087016105a9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b60208152600061056c60208301846105cd565b600073ffffffffffffffffffffffffffffffffffffffff8216610511565b6104fd8161062e565b60208101610511828461064c56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c63430008160033608060405234801561001057600080fd5b50611299806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea2646970667358221220781b28c3f6332aa5b34004d6e3aec84d08036cc72cde73dd5d71b4b6c36c4bf764736f6c63430008160033608060405234801561001057600080fd5b50610937806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea26469706673582212206b929d409aafd747ffc47b49529bb4edf512f6fc855d47fbbb040519410f32b864736f6c63430008160033a2646970667358221220dd3ed8a7f7ed6ff43ec972701b4a9192963db2bba5b8eef0637bf5da2d9b680364736f6c63430008160033", "sourceMap": "252:605:48:-:0;;;3126:44:4;;;3166:4;-1:-1:-1;;3126:44:4;;;;;;;;800:28:2;;;;;;;;;;;252:605:48;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610068565b005b600c546100529060ff1681565b60405161005f9190610503565b60405180910390f35b6040517fc1978d1f000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f906100b990600401610517565b602060405180830381865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610554565b6040517fce817d47000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d479061014d908490600401610579565b600060405180830381600087803b15801561016757600080fd5b505af115801561017b573d6000803e3d6000fd5b5050505060006001604051602001610193919061059b565b604051602081830303815290604052805190602001206040516101b5906104d2565b8190604051809103906000f59050801580156101d5573d6000803e3d6000fd5b50905060006040516101e6906104df565b604051809103906000f080158015610202573d6000803e3d6000fd5b5090506000604051610213906104ec565b604051809103906000f08015801561022f573d6000803e3d6000fd5b5090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561029d57600080fd5b505af11580156102b1573d6000803e3d6000fd5b505050506102f36040518060400160405280600781526020017f466163746f727900000000000000000000000000000000000000000000000000815250610390565b6102fc83610422565b61033a6040518060400160405280600b81526020017f517565727948656c706572000000000000000000000000000000000000000000815250610390565b61034382610422565b6103816040518060400160405280600881526020017f4465786f72646572000000000000000000000000000000000000000000000000815250610390565b61038a81610422565b50505050565b61041f816040516024016103a4919061061b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526104ad565b50565b61041f816040516024016104369190610655565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b61041f8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8061066483390190565b6112b98061581383390190565b61095780616acc83390190565b8015155b82525050565b6020810161051182846104f9565b92915050565b60208152600061051160208301600b81527f505249564154455f4b4559000000000000000000000000000000000000000000602082015260400190565b60006020828403121561056957610569600080fd5b81515b9392505050565b806104fd565b602081016105118284610573565b600060ff8216610511565b6104fd81610587565b602081016105118284610592565b60005b838110156105c45781810151838201526020016105ac565b50506000910152565b60006105d7825190565b808452602084016105ec8282602087016105a9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b60208152600061056c60208301846105cd565b600073ffffffffffffffffffffffffffffffffffffffff8216610511565b6104fd8161062e565b60208101610511828461064c56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c63430008160033608060405234801561001057600080fd5b50611299806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea264697066735822122085b8679d697e8685f6eceb314bd3910c1a407cdc658db22181b280efe388928464736f6c63430008160033608060405234801561001057600080fd5b50610937806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea264697066735822122010e7caca257b5dd89b35e6ee456a0d4fcc09e1dd5031b604e2af863cab78e61b64736f6c63430008160033a2646970667358221220cf9e541aca458fefc11f7dbe44ffa8c9dd610e085377aa6df37c1b38737f44bd64736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610068565b005b600c546100529060ff1681565b60405161005f9190610503565b60405180910390f35b6040517fc1978d1f000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f906100b990600401610517565b602060405180830381865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610554565b6040517fce817d47000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d479061014d908490600401610579565b600060405180830381600087803b15801561016757600080fd5b505af115801561017b573d6000803e3d6000fd5b5050505060006001604051602001610193919061059b565b604051602081830303815290604052805190602001206040516101b5906104d2565b8190604051809103906000f59050801580156101d5573d6000803e3d6000fd5b50905060006040516101e6906104df565b604051809103906000f080158015610202573d6000803e3d6000fd5b5090506000604051610213906104ec565b604051809103906000f08015801561022f573d6000803e3d6000fd5b5090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561029d57600080fd5b505af11580156102b1573d6000803e3d6000fd5b505050506102f36040518060400160405280600781526020017f466163746f727900000000000000000000000000000000000000000000000000815250610390565b6102fc83610422565b61033a6040518060400160405280600b81526020017f517565727948656c706572000000000000000000000000000000000000000000815250610390565b61034382610422565b6103816040518060400160405280600881526020017f4465786f72646572000000000000000000000000000000000000000000000000815250610390565b61038a81610422565b50505050565b61041f816040516024016103a4919061061b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526104ad565b50565b61041f816040516024016104369190610655565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b61041f8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8061066483390190565b6112b98061581383390190565b61095780616acc83390190565b8015155b82525050565b6020810161051182846104f9565b92915050565b60208152600061051160208301600b81527f505249564154455f4b4559000000000000000000000000000000000000000000602082015260400190565b60006020828403121561056957610569600080fd5b81515b9392505050565b806104fd565b602081016105118284610573565b600060ff8216610511565b6104fd81610587565b602081016105118284610592565b60005b838110156105c45781810151838201526020016105ac565b50506000910152565b60006105d7825190565b808452602084016105ec8282602087016105a9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b60208152600061056c60208301846105cd565b600073ffffffffffffffffffffffffffffffffffffffff8216610511565b6104fd8161062e565b60208101610511828461064c56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c63430008160033608060405234801561001057600080fd5b50611299806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea2646970667358221220781b28c3f6332aa5b34004d6e3aec84d08036cc72cde73dd5d71b4b6c36c4bf764736f6c63430008160033608060405234801561001057600080fd5b50610937806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea26469706673582212206b929d409aafd747ffc47b49529bb4edf512f6fc855d47fbbb040519410f32b864736f6c63430008160033a2646970667358221220dd3ed8a7f7ed6ff43ec972701b4a9192963db2bba5b8eef0637bf5da2d9b680364736f6c63430008160033", "sourceMap": "252:605:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;284:571;;;:::i;:::-;;800:28:2;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;284:571:48;347:25;;;;;318:26;;347:10;;;;:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;382:37;;;;;318:54;;-1:-1:-1;382:17:48;;;;:37;;318:54;;382:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;429:16;486:1;475:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;465:24;;;;;;448:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;429:63;;515:17;535;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;515:37;;562:17;582:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;562:34;;317:28:1;309:37;;606:16:48;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;667:31;688:8;667:12;:31::i;:::-;708:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;745:28;766:5;745:12;:28::i;:::-;783:24;;;;;;;;;;;;;;;;;;:12;:24::i;:::-;817:31;838:8;817:12;:31::i;:::-;308:547;;;;284:571::o;6598:121:16:-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;:::-;6598:121;:::o;6841:116::-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;111:89:69:-;86:13;;79:21;174:19;169:3;162:32;;;111:89::o;205:180::-;333:2;318:18;;345:34;322:9;361:6;345:34;:::i;:::-;205:180;;;;:::o;960:277::-;1162:2;1151:9;1144:21;1125:4;1182:49;1227:2;1216:9;1212:18;812:2;477:19;;672:13;529:4;520:14;;657:29;935:14;;;693:262;1736:312;1806:6;1859:2;1847:9;1838:7;1834:23;1830:32;1827:147;;;1885:79;252:605:48;;;1885:79:69;1645:13;;1993:49;1983:59;1736:312;-1:-1:-1;;;1736:312:69:o;2053:95::-;2135:5;2119:22;1356:67;2153:189;2287:2;2272:18;;2299:37;2276:9;2318:6;2299:37;:::i;2561:142::-;2609:9;2492:4;2481:16;;2646:51;2423:76;2708:112;2778:35;2807:5;2778:35;:::i;2825:199::-;2965:2;2950:18;;2977:41;2954:9;3000:6;2977:41;:::i;3110:250::-;3195:1;3205:113;3219:6;3216:1;3213:13;3205:113;;;3295:11;;;3289:18;3276:11;;;3269:39;3241:2;3234:10;3205:113;;;-1:-1:-1;;3352:1:69;3334:16;;3327:27;3110:250::o;3532:306::-;3574:3;3606:26;3626:5;3091:12;;3029:76;3606:26;477:19;;;529:4;520:14;;3711:67;3771:6;3764:5;3757:4;3750:5;3746:16;3711:67;:::i;:::-;3454:66;3449:2;3438:14;;3434:87;3794:38;;3532:306;-1:-1:-1;;;;3532:306:69:o;3843:220::-;3992:2;3981:9;3974:21;3955:4;4012:45;4053:2;4042:9;4038:18;4030:6;4012:45;:::i;4201:96::-;4236:7;4147:42;4136:54;;4269:22;4068:128;4302:95;4368:22;4384:5;4368:22;:::i;4402:189::-;4536:2;4521:18;;4548:37;4525:9;4567:6;4548:37;:::i", "linkReferences": {} }, @@ -35,7 +35,7 @@ "IS_SCRIPT()": "f8ccbf47", "run()": "c0406226" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/Deploy.sol\":\"Deploy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x0bded803c7e28336785fa600f03035e61d0b689bba2f014b1720e576c5ee3307\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://407f3979f460cc60bc7e4ce6fd7da4facac9f52623b4d6805052538d897eab9b\",\"dweb:/ipfs/QmSRhYNywsJhtYEYyPM1izGNsP1SBzxsXwLfcQnFF5NA9p\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"script/Deploy.sol\":{\"keccak256\":\"0x0f0aef93372ea4a5a3da50971b5f32ad076e0e9df441f5fb1f188760092be7b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ae537c2616f1313857cf0419a5c9599a91963f7fd2a72cae7f38df814313d89c\",\"dweb:/ipfs/QmSaohjig6kPjnAmGK6LPArJD7BNxQkffHjkHmYdSEAf1Z\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Dexorder.sol\":{\"keccak256\":\"0xc5374193e01ca9b9a139a5f6fceaabcd647b55f8bd750018077ae6e9b1dcb4b9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9310302b0e229d8e5434560b3188023b2393d3dd1f24ce18518007ce73461fa9\",\"dweb:/ipfs/QmRSVeexGMiSt6vbvNdyJENCEtTXSZkb7FGrMeDDZfesZ1\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/QueryHelper.sol\":{\"keccak256\":\"0xc501c6e09833b7ab5dbddfab0aece929f9fadaba723a9197fbb3e0fe948644ae\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1d8eb50b08e37e4ed6d9d73adc50c9576c70ebdbc69266e4467e06b0c02b6ded\",\"dweb:/ipfs/QmSmE81LCdUYpC9PrNntX7YimnVA66uE1wG7ZGnMLh8pkw\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/Deploy.sol\":\"Deploy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x0bded803c7e28336785fa600f03035e61d0b689bba2f014b1720e576c5ee3307\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://407f3979f460cc60bc7e4ce6fd7da4facac9f52623b4d6805052538d897eab9b\",\"dweb:/ipfs/QmSRhYNywsJhtYEYyPM1izGNsP1SBzxsXwLfcQnFF5NA9p\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"script/Deploy.sol\":{\"keccak256\":\"0x0f0aef93372ea4a5a3da50971b5f32ad076e0e9df441f5fb1f188760092be7b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ae537c2616f1313857cf0419a5c9599a91963f7fd2a72cae7f38df814313d89c\",\"dweb:/ipfs/QmSaohjig6kPjnAmGK6LPArJD7BNxQkffHjkHmYdSEAf1Z\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/Dexorder.sol\":{\"keccak256\":\"0xc5374193e01ca9b9a139a5f6fceaabcd647b55f8bd750018077ae6e9b1dcb4b9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9310302b0e229d8e5434560b3188023b2393d3dd1f24ce18518007ce73461fa9\",\"dweb:/ipfs/QmRSVeexGMiSt6vbvNdyJENCEtTXSZkb7FGrMeDDZfesZ1\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/QueryHelper.sol\":{\"keccak256\":\"0xc501c6e09833b7ab5dbddfab0aece929f9fadaba723a9197fbb3e0fe948644ae\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1d8eb50b08e37e4ed6d9d73adc50c9576c70ebdbc69266e4467e06b0c02b6ded\",\"dweb:/ipfs/QmSmE81LCdUYpC9PrNntX7YimnVA66uE1wG7ZGnMLh8pkw\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -464,10 +464,10 @@ "license": "UNLICENSED" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -567,7 +567,7 @@ "id": 46173, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "Context": [ 43777 @@ -576,13 +576,13 @@ 46172 ], "Dexorder": [ - 46412 + 46409 ], "ERC20": [ 43478 ], "Factory": [ - 46430 + 46427 ], "FixedPoint96": [ 44338 @@ -654,25 +654,25 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "LiquidityAmounts": [ 45794 ], "MockERC20": [ - 46478 + 46475 ], "MockEnv": [ - 50069 + 50066 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 ], "QueryHelper": [ - 48320 + 48317 ], "Script": [ 2405 @@ -702,16 +702,16 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Util": [ - 48904 + 48901 ], "Vault": [ - 49181 + 49178 ], "VaultDeployer": [ - 49436 + 49433 ], "VmSafe": [ 12992 @@ -785,7 +785,7 @@ "file": "../src/QueryHelper.sol", "nameLocation": "-1:-1:-1", "scope": 46173, - "sourceUnit": 48321, + "sourceUnit": 48318, "symbolAliases": [], "unitAlias": "" }, @@ -798,7 +798,7 @@ "file": "../src/Factory.sol", "nameLocation": "-1:-1:-1", "scope": 46173, - "sourceUnit": 46431, + "sourceUnit": 46428, "symbolAliases": [], "unitAlias": "" }, @@ -811,7 +811,7 @@ "file": "../src/Dexorder.sol", "nameLocation": "-1:-1:-1", "scope": 46173, - "sourceUnit": 46413, + "sourceUnit": 46410, "symbolAliases": [], "unitAlias": "" }, @@ -824,7 +824,7 @@ "file": "../test/MockEnv.sol", "nameLocation": "-1:-1:-1", "scope": 46173, - "sourceUnit": 50070, + "sourceUnit": 50067, "symbolAliases": [], "unitAlias": "" }, @@ -1037,7 +1037,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" }, "typeName": { @@ -1050,13 +1050,13 @@ "429:7:48" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "429:7:48" }, - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "429:7:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, @@ -1078,7 +1078,7 @@ "nodeType": "NewExpression", "src": "448:11:48", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46430_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46427_$", "typeString": "function () returns (contract Factory)" }, "typeName": { @@ -1091,13 +1091,13 @@ "452:7:48" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "452:7:48" }, - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "452:7:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } } @@ -1220,7 +1220,7 @@ ], "src": "448:42:48", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46430_$salt", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46427_$salt", "typeString": "function () returns (contract Factory)" } }, @@ -1236,7 +1236,7 @@ "src": "448:44:48", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, @@ -1260,7 +1260,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_QueryHelper_$48320", + "typeIdentifier": "t_contract$_QueryHelper_$48317", "typeString": "contract QueryHelper" }, "typeName": { @@ -1273,13 +1273,13 @@ "515:11:48" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48320, + "referencedDeclaration": 48317, "src": "515:11:48" }, - "referencedDeclaration": 48320, + "referencedDeclaration": 48317, "src": "515:11:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_QueryHelper_$48320", + "typeIdentifier": "t_contract$_QueryHelper_$48317", "typeString": "contract QueryHelper" } }, @@ -1299,7 +1299,7 @@ "nodeType": "NewExpression", "src": "535:15:48", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_QueryHelper_$48320_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_QueryHelper_$48317_$", "typeString": "function () returns (contract QueryHelper)" }, "typeName": { @@ -1312,13 +1312,13 @@ "539:11:48" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48320, + "referencedDeclaration": 48317, "src": "539:11:48" }, - "referencedDeclaration": 48320, + "referencedDeclaration": 48317, "src": "539:11:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_QueryHelper_$48320", + "typeIdentifier": "t_contract$_QueryHelper_$48317", "typeString": "contract QueryHelper" } } @@ -1335,7 +1335,7 @@ "src": "535:17:48", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_QueryHelper_$48320", + "typeIdentifier": "t_contract$_QueryHelper_$48317", "typeString": "contract QueryHelper" } }, @@ -1359,7 +1359,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Dexorder_$46412", + "typeIdentifier": "t_contract$_Dexorder_$46409", "typeString": "contract Dexorder" }, "typeName": { @@ -1372,13 +1372,13 @@ "562:8:48" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46412, + "referencedDeclaration": 46409, "src": "562:8:48" }, - "referencedDeclaration": 46412, + "referencedDeclaration": 46409, "src": "562:8:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_Dexorder_$46412", + "typeIdentifier": "t_contract$_Dexorder_$46409", "typeString": "contract Dexorder" } }, @@ -1398,7 +1398,7 @@ "nodeType": "NewExpression", "src": "582:12:48", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Dexorder_$46412_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Dexorder_$46409_$", "typeString": "function () returns (contract Dexorder)" }, "typeName": { @@ -1411,13 +1411,13 @@ "586:8:48" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46412, + "referencedDeclaration": 46409, "src": "586:8:48" }, - "referencedDeclaration": 46412, + "referencedDeclaration": 46409, "src": "586:8:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_Dexorder_$46412", + "typeIdentifier": "t_contract$_Dexorder_$46409", "typeString": "contract Dexorder" } } @@ -1434,7 +1434,7 @@ "src": "582:14:48", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Dexorder_$46412", + "typeIdentifier": "t_contract$_Dexorder_$46409", "typeString": "contract Dexorder" } }, @@ -1580,7 +1580,7 @@ "referencedDeclaration": 46091, "src": "688:8:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } } @@ -1588,7 +1588,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } ], @@ -1769,7 +1769,7 @@ "referencedDeclaration": 46106, "src": "766:5:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_QueryHelper_$48320", + "typeIdentifier": "t_contract$_QueryHelper_$48317", "typeString": "contract QueryHelper" } } @@ -1777,7 +1777,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_QueryHelper_$48320", + "typeIdentifier": "t_contract$_QueryHelper_$48317", "typeString": "contract QueryHelper" } ], @@ -1958,7 +1958,7 @@ "referencedDeclaration": 46114, "src": "838:8:48", "typeDescriptions": { - "typeIdentifier": "t_contract$_Dexorder_$46412", + "typeIdentifier": "t_contract$_Dexorder_$46409", "typeString": "contract Dexorder" } } @@ -1966,7 +1966,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Dexorder_$46412", + "typeIdentifier": "t_contract$_Dexorder_$46409", "typeString": "contract Dexorder" } ], @@ -2106,9 +2106,9 @@ ], "canonicalName": "Deploy", "contractDependencies": [ - 46412, - 46430, - 48320 + 46409, + 46427, + 48317 ], "contractKind": "contract", "fullyImplemented": true, diff --git a/deployment/alpha/out/DeployMock.sol/DeployMock.json b/deployment/alpha/out/DeployMock.sol/DeployMock.json index e0ff90b..b1490e1 100644 --- a/deployment/alpha/out/DeployMock.sol/DeployMock.json +++ b/deployment/alpha/out/DeployMock.sol/DeployMock.json @@ -22,7 +22,7 @@ } ], "bytecode": { - "object": "0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b50613c958061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610068565b005b600c546100529060ff1681565b60405161005f9190610433565b60405180910390f35b6040517fc1978d1f000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f906100b990600401610447565b602060405180830381865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610484565b6040517fce817d47000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d479061014d9084906004016104a9565b600060405180830381600087803b15801561016757600080fd5b505af115801561017b573d6000803e3d6000fd5b50505050600060405161018d9061041c565b604051809103906000f0801580156101a9573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff1663e1c7392a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506102cd6040518060400160405280600781526020017f4d6f636b456e76000000000000000000000000000000000000000000000000008152506102da565b6102d68161036c565b5050565b610369816040516024016102ee9190610529565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526103f7565b50565b610369816040516024016103809190610563565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b6103698180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6136ee8061057283390190565b8015155b82525050565b602081016104418284610429565b92915050565b60208152600061044160208301600b81527f505249564154455f4b4559000000000000000000000000000000000000000000602082015260400190565b60006020828403121561049957610499600080fd5b81515b9392505050565b8061042d565b6020810161044182846104a3565b60005b838110156104d25781810151838201526020016104ba565b50506000910152565b60006104e5825190565b808452602084016104fa8282602087016104b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b60208152600061049c60208301846104db565b600073ffffffffffffffffffffffffffffffffffffffff8216610441565b61042d8161053c565b60208101610441828461055a56fe6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220e24d516b60430c641c8980ef5657e8505e86a72a54cb97d776669dcdc4b7648564736f6c63430008160033a264697066735822122088199e8175c4bfed0fbe356e28c03cba9412cc8b6b01979c8909e2d91b20713564736f6c63430008160033", + "object": "0x608060405260048054600160ff199182168117909255600c8054909116909117905534801561002d57600080fd5b50613c958061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610068565b005b600c546100529060ff1681565b60405161005f9190610433565b60405180910390f35b6040517fc1978d1f000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f906100b990600401610447565b602060405180830381865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610484565b6040517fce817d47000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d479061014d9084906004016104a9565b600060405180830381600087803b15801561016757600080fd5b505af115801561017b573d6000803e3d6000fd5b50505050600060405161018d9061041c565b604051809103906000f0801580156101a9573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff1663e1c7392a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506102cd6040518060400160405280600781526020017f4d6f636b456e76000000000000000000000000000000000000000000000000008152506102da565b6102d68161036c565b5050565b610369816040516024016102ee9190610529565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526103f7565b50565b610369816040516024016103809190610563565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b6103698180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6136ee8061057283390190565b8015155b82525050565b602081016104418284610429565b92915050565b60208152600061044160208301600b81527f505249564154455f4b4559000000000000000000000000000000000000000000602082015260400190565b60006020828403121561049957610499600080fd5b81515b9392505050565b8061042d565b6020810161044182846104a3565b60005b838110156104d25781810151838201526020016104ba565b50506000910152565b60006104e5825190565b808452602084016104fa8282602087016104b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b60208152600061049c60208301846104db565b600073ffffffffffffffffffffffffffffffffffffffff8216610441565b61042d8161053c565b60208101610441828461055a56fe6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220bcf6de9d6c3f975767cbe831267c470ecc806539ce37e7f80512820d344df48564736f6c63430008160033a26469706673582212206295db0f069a516b847ab3525c7adedbcd1e76f1b515780e910f9b0ba4cbaa4e64736f6c63430008160033", "sourceMap": "252:337:49:-:0;;;3126:44:4;;;3166:4;-1:-1:-1;;3126:44:4;;;;;;;;800:28:2;;;;;;;;;;;252:337:49;;;;;;;;;;;;;;;;", "linkReferences": { "src/Util.sol": { @@ -40,7 +40,7 @@ } }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610068565b005b600c546100529060ff1681565b60405161005f9190610433565b60405180910390f35b6040517fc1978d1f000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f906100b990600401610447565b602060405180830381865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610484565b6040517fce817d47000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d479061014d9084906004016104a9565b600060405180830381600087803b15801561016757600080fd5b505af115801561017b573d6000803e3d6000fd5b50505050600060405161018d9061041c565b604051809103906000f0801580156101a9573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff1663e1c7392a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506102cd6040518060400160405280600781526020017f4d6f636b456e76000000000000000000000000000000000000000000000000008152506102da565b6102d68161036c565b5050565b610369816040516024016102ee9190610529565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526103f7565b50565b610369816040516024016103809190610563565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b6103698180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6136ee8061057283390190565b8015155b82525050565b602081016104418284610429565b92915050565b60208152600061044160208301600b81527f505249564154455f4b4559000000000000000000000000000000000000000000602082015260400190565b60006020828403121561049957610499600080fd5b81515b9392505050565b8061042d565b6020810161044182846104a3565b60005b838110156104d25781810151838201526020016104ba565b50506000910152565b60006104e5825190565b808452602084016104fa8282602087016104b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b60208152600061049c60208301846104db565b600073ffffffffffffffffffffffffffffffffffffffff8216610441565b61042d8161053c565b60208101610441828461055a56fe6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220e24d516b60430c641c8980ef5657e8505e86a72a54cb97d776669dcdc4b7648564736f6c63430008160033a264697066735822122088199e8175c4bfed0fbe356e28c03cba9412cc8b6b01979c8909e2d91b20713564736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c04062261461003b578063f8ccbf4714610045575b600080fd5b610043610068565b005b600c546100529060ff1681565b60405161005f9190610433565b60405180910390f35b6040517fc1978d1f000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f906100b990600401610447565b602060405180830381865afa1580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa9190610484565b6040517fce817d47000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d479061014d9084906004016104a9565b600060405180830381600087803b15801561016757600080fd5b505af115801561017b573d6000803e3d6000fd5b50505050600060405161018d9061041c565b604051809103906000f0801580156101a9573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff1663e1c7392a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506102cd6040518060400160405280600781526020017f4d6f636b456e76000000000000000000000000000000000000000000000000008152506102da565b6102d68161036c565b5050565b610369816040516024016102ee9190610529565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526103f7565b50565b610369816040516024016103809190610563565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b6103698180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6136ee8061057283390190565b8015155b82525050565b602081016104418284610429565b92915050565b60208152600061044160208301600b81527f505249564154455f4b4559000000000000000000000000000000000000000000602082015260400190565b60006020828403121561049957610499600080fd5b81515b9392505050565b8061042d565b6020810161044182846104a3565b60005b838110156104d25781810151838201526020016104ba565b50506000910152565b60006104e5825190565b808452602084016104fa8282602087016104b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b60208152600061049c60208301846104db565b600073ffffffffffffffffffffffffffffffffffffffff8216610441565b61042d8161053c565b60208101610441828461055a56fe6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220bcf6de9d6c3f975767cbe831267c470ecc806539ce37e7f80512820d344df48564736f6c63430008160033a26469706673582212206295db0f069a516b847ab3525c7adedbcd1e76f1b515780e910f9b0ba4cbaa4e64736f6c63430008160033", "sourceMap": "252:337:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;288:299;;;:::i;:::-;;800:28:2;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;288:299:49;351:25;;;;;322:26;;351:10;;;;:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;386:37;;;;;322:54;;-1:-1:-1;386:17:49;;;;:37;;322:54;;386:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;433:12;448:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;433:28;;471:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:1;309:37;;492:16:49;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;520:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;553:27;574:4;553:12;:27::i;:::-;312:275;;288:299::o;6598:121:16:-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;:::-;6598:121;:::o;6841:116::-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;111:89:69:-;86:13;;79:21;174:19;169:3;162:32;;;111:89::o;205:180::-;333:2;318:18;;345:34;322:9;361:6;345:34;:::i;:::-;205:180;;;;:::o;960:277::-;1162:2;1151:9;1144:21;1125:4;1182:49;1227:2;1216:9;1212:18;812:2;477:19;;672:13;529:4;520:14;;657:29;935:14;;;693:262;1736:312;1806:6;1859:2;1847:9;1838:7;1834:23;1830:32;1827:147;;;1885:79;252:337:49;;;1885:79:69;1645:13;;1993:49;1983:59;1736:312;-1:-1:-1;;;1736:312:69:o;2053:95::-;2135:5;2119:22;1356:67;2153:189;2287:2;2272:18;;2299:37;2276:9;2318:6;2299:37;:::i;2428:250::-;2513:1;2523:113;2537:6;2534:1;2531:13;2523:113;;;2613:11;;;2607:18;2594:11;;;2587:39;2559:2;2552:10;2523:113;;;-1:-1:-1;;2670:1:69;2652:16;;2645:27;2428:250::o;2850:306::-;2892:3;2924:26;2944:5;2409:12;;2347:76;2924:26;477:19;;;529:4;520:14;;3029:67;3089:6;3082:5;3075:4;3068:5;3064:16;3029:67;:::i;:::-;2772:66;2767:2;2756:14;;2752:87;3112:38;;2850:306;-1:-1:-1;;;;2850:306:69:o;3161:220::-;3310:2;3299:9;3292:21;3273:4;3330:45;3371:2;3360:9;3356:18;3348:6;3330:45;:::i;3519:96::-;3554:7;3465:42;3454:54;;3587:22;3386:128;3620:95;3686:22;3702:5;3686:22;:::i;3720:189::-;3854:2;3839:18;;3866:37;3843:9;3885:6;3866:37;:::i", "linkReferences": { "src/Util.sol": { @@ -61,7 +61,7 @@ "IS_SCRIPT()": "f8ccbf47", "run()": "c0406226" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/DeployMock.sol\":\"DeployMock\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x0bded803c7e28336785fa600f03035e61d0b689bba2f014b1720e576c5ee3307\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://407f3979f460cc60bc7e4ce6fd7da4facac9f52623b4d6805052538d897eab9b\",\"dweb:/ipfs/QmSRhYNywsJhtYEYyPM1izGNsP1SBzxsXwLfcQnFF5NA9p\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"script/DeployMock.sol\":{\"keccak256\":\"0xbab785b6e09005190e5690014e2c8cf09e795f7d73144bb787e6f2a2193176cb\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5ce6f2f632564d5c97094ddd85ec626f6176ee5a6dc3e15cd67e36ed65cb513e\",\"dweb:/ipfs/QmS1HZ8C8Tc7zwAfL6iYStQzG1yNLUNwS9fJWKJ3RksLk7\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Dexorder.sol\":{\"keccak256\":\"0xc5374193e01ca9b9a139a5f6fceaabcd647b55f8bd750018077ae6e9b1dcb4b9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9310302b0e229d8e5434560b3188023b2393d3dd1f24ce18518007ce73461fa9\",\"dweb:/ipfs/QmRSVeexGMiSt6vbvNdyJENCEtTXSZkb7FGrMeDDZfesZ1\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/QueryHelper.sol\":{\"keccak256\":\"0xc501c6e09833b7ab5dbddfab0aece929f9fadaba723a9197fbb3e0fe948644ae\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1d8eb50b08e37e4ed6d9d73adc50c9576c70ebdbc69266e4467e06b0c02b6ded\",\"dweb:/ipfs/QmSmE81LCdUYpC9PrNntX7YimnVA66uE1wG7ZGnMLh8pkw\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/DeployMock.sol\":\"DeployMock\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x0bded803c7e28336785fa600f03035e61d0b689bba2f014b1720e576c5ee3307\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://407f3979f460cc60bc7e4ce6fd7da4facac9f52623b4d6805052538d897eab9b\",\"dweb:/ipfs/QmSRhYNywsJhtYEYyPM1izGNsP1SBzxsXwLfcQnFF5NA9p\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"script/DeployMock.sol\":{\"keccak256\":\"0xbab785b6e09005190e5690014e2c8cf09e795f7d73144bb787e6f2a2193176cb\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5ce6f2f632564d5c97094ddd85ec626f6176ee5a6dc3e15cd67e36ed65cb513e\",\"dweb:/ipfs/QmS1HZ8C8Tc7zwAfL6iYStQzG1yNLUNwS9fJWKJ3RksLk7\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/Dexorder.sol\":{\"keccak256\":\"0xc5374193e01ca9b9a139a5f6fceaabcd647b55f8bd750018077ae6e9b1dcb4b9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9310302b0e229d8e5434560b3188023b2393d3dd1f24ce18518007ce73461fa9\",\"dweb:/ipfs/QmRSVeexGMiSt6vbvNdyJENCEtTXSZkb7FGrMeDDZfesZ1\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/QueryHelper.sol\":{\"keccak256\":\"0xc501c6e09833b7ab5dbddfab0aece929f9fadaba723a9197fbb3e0fe948644ae\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1d8eb50b08e37e4ed6d9d73adc50c9576c70ebdbc69266e4467e06b0c02b6ded\",\"dweb:/ipfs/QmSmE81LCdUYpC9PrNntX7YimnVA66uE1wG7ZGnMLh8pkw\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -490,10 +490,10 @@ "license": "UNLICENSED" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -593,7 +593,7 @@ "id": 46234, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "Context": [ 43777 @@ -602,13 +602,13 @@ 46233 ], "Dexorder": [ - 46412 + 46409 ], "ERC20": [ 43478 ], "Factory": [ - 46430 + 46427 ], "FixedPoint96": [ 44338 @@ -680,25 +680,25 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "LiquidityAmounts": [ 45794 ], "MockERC20": [ - 46478 + 46475 ], "MockEnv": [ - 50069 + 50066 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 ], "QueryHelper": [ - 48320 + 48317 ], "Script": [ 2405 @@ -728,16 +728,16 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Util": [ - 48904 + 48901 ], "Vault": [ - 49181 + 49178 ], "VaultDeployer": [ - 49436 + 49433 ], "VmSafe": [ 12992 @@ -811,7 +811,7 @@ "file": "../src/QueryHelper.sol", "nameLocation": "-1:-1:-1", "scope": 46234, - "sourceUnit": 48321, + "sourceUnit": 48318, "symbolAliases": [], "unitAlias": "" }, @@ -824,7 +824,7 @@ "file": "../src/Factory.sol", "nameLocation": "-1:-1:-1", "scope": 46234, - "sourceUnit": 46431, + "sourceUnit": 46428, "symbolAliases": [], "unitAlias": "" }, @@ -837,7 +837,7 @@ "file": "../src/Dexorder.sol", "nameLocation": "-1:-1:-1", "scope": 46234, - "sourceUnit": 46413, + "sourceUnit": 46410, "symbolAliases": [], "unitAlias": "" }, @@ -850,7 +850,7 @@ "file": "../test/MockEnv.sol", "nameLocation": "-1:-1:-1", "scope": 46234, - "sourceUnit": 50070, + "sourceUnit": 50067, "symbolAliases": [], "unitAlias": "" }, @@ -1063,7 +1063,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" }, "typeName": { @@ -1076,13 +1076,13 @@ "433:7:49" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 50069, + "referencedDeclaration": 50066, "src": "433:7:49" }, - "referencedDeclaration": 50069, + "referencedDeclaration": 50066, "src": "433:7:49", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } }, @@ -1102,7 +1102,7 @@ "nodeType": "NewExpression", "src": "448:11:49", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_MockEnv_$50069_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_MockEnv_$50066_$", "typeString": "function () returns (contract MockEnv)" }, "typeName": { @@ -1115,13 +1115,13 @@ "452:7:49" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 50069, + "referencedDeclaration": 50066, "src": "452:7:49" }, - "referencedDeclaration": 50069, + "referencedDeclaration": 50066, "src": "452:7:49", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } } @@ -1138,7 +1138,7 @@ "src": "448:13:49", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } }, @@ -1158,7 +1158,7 @@ "referencedDeclaration": 46200, "src": "471:4:49", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } }, @@ -1170,7 +1170,7 @@ "memberLocation": "476:4:49", "memberName": "init", "nodeType": "MemberAccess", - "referencedDeclaration": 49634, + "referencedDeclaration": 49631, "src": "471:9:49", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", @@ -1336,7 +1336,7 @@ "referencedDeclaration": 46200, "src": "574:4:49", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } } @@ -1344,7 +1344,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } ], @@ -1484,7 +1484,7 @@ ], "canonicalName": "DeployMock", "contractDependencies": [ - 50069 + 50066 ], "contractKind": "contract", "fullyImplemented": true, diff --git a/deployment/alpha/out/Dexorder.sol/Dexorder.json b/deployment/alpha/out/Dexorder.sol/Dexorder.json index 2249065..d6510f0 100644 --- a/deployment/alpha/out/Dexorder.sol/Dexorder.json +++ b/deployment/alpha/out/Dexorder.sol/Dexorder.json @@ -127,12 +127,12 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610937806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea264697066735822122010e7caca257b5dd89b35e6ee456a0d4fcc09e1dd5031b604e2af863cab78e61b64736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50610937806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea26469706673582212206b929d409aafd747ffc47b49529bb4edf512f6fc855d47fbbb040519410f32b864736f6c63430008160033", "sourceMap": "159:1186:51:-:0;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea264697066735822122010e7caca257b5dd89b35e6ee456a0d4fcc09e1dd5031b604e2af863cab78e61b64736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301efa5e51461003b578063f09e582714610064575b600080fd5b61004e610049366004610505565b610084565b60405161005b91906105af565b60405180910390f35b610077610072366004610671565b610132565b60405161005b9190610734565b606061008f8261023d565b60408051600180825281830190925291925060009190816020015b60608152602001906001900390816100aa57905050905081816000815181106100d5576100d5610747565b6020026020010181905250836fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad826040516101239190610734565b60405180910390a25092915050565b6060815167ffffffffffffffff81111561014e5761014e610363565b60405190808252806020026020018201604052801561018157816020015b606081526020019060019003908161016c5790505b50905060005b82518160ff1610156101eb576101b8838260ff16815181106101ab576101ab610747565b602002602001015161023d565b828260ff16815181106101cd576101cd610747565b602002602001018190525080806101e3906107a5565b915050610187565b50826fffffffffffffffffffffffffffffffff19167f15feb66d72284d4a0e80f76082f237f0dff281916db7a735e31b8236fb40c3ad8260405161022f9190610734565b60405180910390a292915050565b8051602082015160408084015160608581015192517f6e98833d000000000000000000000000000000000000000000000000000000008152909473ffffffffffffffffffffffffffffffffffffffff1693636e98833d936102a29391926004016107f4565b600060405180830381600087803b1580156102bc57600080fd5b505af19250505080156102cd575060015b61030a576102d9610824565b806308c379a0036102fe57506102ed610840565b806102f85750610300565b92915050565b505b3d6000803e3d6000fd5b505060408051602081019091526000815290565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081165b811461034d57600080fd5b50565b80358061035c8161031e565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156103d6576103d6610363565b6040525050565b60006103e860405190565b8091506103f58382610392565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116610342565b80358061035c816103fb565b67ffffffffffffffff8116610342565b80358061035c81610423565b60ff8116610342565b80358061035c8161043f565b80610342565b80358061035c81610454565b60006020828403121561047b5761047b600080fd5b61048560206103dd565b809150610492848461045a565b905292915050565b6000608082840312156104af576104af600080fd5b6104b960806103dd565b8091506104c68484610417565b81526104d58460208501610433565b60208201526104e78460408501610448565b60408201526104f98460608501610466565b60608201525092915050565b60008060a0838503121561051b5761051b600080fd5b6105258484610350565b9150610534846020850161049a565b90509250929050565b60005b83811015610558578181015183820152602001610540565b50506000910152565b600061056b825190565b8084526020840161058082826020870161053d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006105c26020830184610561565b9392505050565b600067ffffffffffffffff8211156105e3576105e3610363565b5060051b60200190565b60006106006105fb846105c9565b6103dd565b8381529050600783901b8201602082018582111561062057610620600080fd5b835b8281101561064457610634878261049a565b8252602090910190608001610622565b5050509392505050565b600082601f83011261066257610662600080fd5b6105c2838335602085016105ed565b6000806040838503121561068757610687600080fd5b6106918484610350565b9150602083013567ffffffffffffffff8111156106b0576106b0600080fd5b6106bc8582860161064e565b9150509250929050565b60006105c28383610561565b60006106dc825190565b808452602084018094508160051b81016106f68560200190565b60005b848110156107285783830388526107118383516106c6565b9250602082016020989098019791506001016106f9565b50909695505050505050565b6020815260006105c260208301846106d2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036107bb576107bb610776565b60010192915050565b67ffffffffffffffff81165b82525050565b60ff81166107d0565b806107d0565b6107f08282516107df565b5050565b6060810161080282866107c4565b61080f60208301856107d6565b61081c60408301846107e5565b949350505050565b600060033d111561083d5760046000803e5060005160e01c5b90565b600060443d101561084e5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff8211171561089657505090565b808201805167ffffffffffffffff8111156108b2575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d85010160208284010111156108ea575050505090565b6108f960208285010185610392565b50939250505056fea26469706673582212206b929d409aafd747ffc47b49529bb4edf512f6fc855d47fbbb040519410f32b864736f6c63430008160033", "sourceMap": "159:1186:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;455:257;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;719:287;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;455:257::-;531:19;570:13;579:3;570:8;:13::i;:::-;618:15;;;631:1;618:15;;;;;;;;;562:21;;-1:-1:-1;593:22:51;;618:15;;;;;;;;;;;;;;;;;;;;;593:40;;655:5;643:6;650:1;643:9;;;;;;;;:::i;:::-;;;;;;:17;;;;694:2;675:30;;;;698:6;675:30;;;;;;:::i;:::-;;;;;;;;552:160;455:257;;;;:::o;719:287::-;798:22;854:4;:11;841:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;832:34;;881:7;876:78;894:4;:11;892:1;:13;;;876:78;;;937:17;946:4;951:1;946:7;;;;;;;;;;:::i;:::-;;;;;;;937:8;:17::i;:::-;925:6;932:1;925:9;;;;;;;;;;:::i;:::-;;;;;;:29;;;;907:3;;;;;:::i;:::-;;;;876:78;;;;988:2;969:30;;;;992:6;969:30;;;;;;:::i;:::-;;;;;;;;719:287;;;;:::o;1013:330::-;1156:9;;1175:14;;;;1191:16;;;;;1079:19;1209:9;;;;1150:69;;;;;1079:19;;1150:24;;;;;:69;;1175:14;;1150:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1146:191;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;1320:6;1013:330;-1:-1:-1;;1013:330:51:o;1146:191::-;;;;;;;;;;;-1:-1:-1;;1234:10:51;;;;;;;;;-1:-1:-1;1234:10:51;;;1013:330::o;471:122:69:-;393:66;382:78;;546:22;539:5;536:33;526:61;;583:1;580;573:12;526:61;471:122;:::o;598:172::-;677:20;;;731:33;677:20;731:33;:::i;:::-;;598:172;;;;:::o;1056:184::-;1108:77;1105:1;1098:88;1205:4;1202:1;1195:15;1229:4;1226:1;1219:15;1245:246;978:66;973:2;962:14;;958:87;1324:6;1320:37;1423:6;1411:10;1408:22;1387:18;1375:10;1372:34;1369:62;1366:88;;;1434:18;;:::i;:::-;1470:2;1463:22;-1:-1:-1;;1245:246:69:o;1496:168::-;1530:6;1567:20;76:2;70:9;;14:67;1567:20;1606:8;1596:18;;1623:35;1653:4;1643:8;1623:35;:::i;:::-;;1496:168;;;:::o;1911:138::-;1748:42;1737:54;;1994:30;1802:104;2054:188;2141:20;;;2195:41;2141:20;2195:41;:::i;2355:120::-;2325:18;2314:30;;2429:21;2247:103;2480:170;2558:20;;;2612:32;2558:20;2612:32;:::i;2736:118::-;2724:4;2713:16;;2809:20;2655:76;2859:168;2936:20;;;2990:31;2936:20;2990:31;:::i;3104:122::-;3195:5;3179:22;3032:67;3231:172;3310:20;;;3364:33;3310:20;3364:33;:::i;3408:358::-;3465:5;3513:4;3501:9;3496:3;3492:19;3488:30;3485:145;;;3541:79;159:1186:51;;;3541:79:69;3654:21;3670:4;3654:21;:::i;:::-;3693:7;3684:16;;3725:34;3755:3;3744:9;3725:34;:::i;:::-;3709:51;;3408:358;;-1:-1:-1;;3408:358:69:o;3771:613::-;3834:5;3882:4;3870:9;3865:3;3861:19;3857:30;3854:145;;;3910:79;159:1186:51;;;3910:79:69;4023:21;4039:4;4023:21;:::i;:::-;4062:7;4053:16;;4094:42;4132:3;4121:9;4094:42;:::i;:::-;4085:7;4078:59;4171:42;4209:3;4204:2;4193:9;4189:18;4171:42;:::i;:::-;4166:2;4157:7;4153:16;4146:68;4248:41;4285:3;4280:2;4269:9;4265:18;4248:41;:::i;:::-;4243:2;4234:7;4230:16;4223:67;4324:53;4373:3;4368:2;4357:9;4353:18;4324:53;:::i;:::-;4319:2;4310:7;4306:16;4299:79;;3771:613;;;;:::o;4389:425::-;4492:6;4500;4553:3;4541:9;4532:7;4528:23;4524:33;4521:148;;;4580:79;159:1186:51;;;4580:79:69;4688:38;4718:7;4707:9;4688:38;:::i;:::-;4678:48;;4745:63;4800:7;4795:2;4784:9;4780:18;4745:63;:::i;:::-;4735:73;;4389:425;;;;;:::o;5065:250::-;5150:1;5160:113;5174:6;5171:1;5168:13;5160:113;;;5250:11;;;5244:18;5231:11;;;5224:39;5196:2;5189:10;5160:113;;;-1:-1:-1;;5307:1:69;5289:16;;5282:27;5065:250::o;5320:316::-;5362:3;5394:26;5414:5;4881:12;;4819:76;5394:26;4997:19;;;5049:4;5040:14;;5509:67;5569:6;5562:5;5555:4;5548:5;5544:16;5509:67;:::i;:::-;978:66;973:2;962:14;;958:87;5592:38;;5320:316;-1:-1:-1;;;;5320:316:69:o;5641:220::-;5790:2;5779:9;5772:21;5753:4;5810:45;5851:2;5840:9;5836:18;5828:6;5810:45;:::i;:::-;5802:53;5641:220;-1:-1:-1;;;5641:220:69:o;5980:199::-;6056:4;6089:18;6081:6;6078:30;6075:56;;;6111:18;;:::i;:::-;-1:-1:-1;6156:1:69;6152:14;6168:4;6148:25;;5980:199::o;6298:731::-;6393:5;6428:80;6444:63;6500:6;6444:63;:::i;:::-;6428:80;:::i;:::-;6569:23;;;6526:7;-1:-1:-1;6665:1:69;6661:14;;;6649:27;;6621:4;6608:18;;6688:15;;;6685:130;;;6726:79;159:1186:51;;;6726:79:69;6835:6;6850:173;6866:6;6861:3;6858:15;6850:173;;;6934:44;6974:3;6969;6934:44;:::i;:::-;6922:57;;7008:4;6999:14;;;;6892:4;6883:14;6850:173;;;6854:3;;;6298:731;;;;;:::o;7034:371::-;7104:5;7157:3;7150:4;7142:6;7138:17;7134:27;7124:150;;7185:79;159:1186:51;;;7185:79:69;7292:107;7395:3;7386:6;7373:20;7366:4;7358:6;7354:17;7292:107;:::i;7410:672::-;7538:6;7546;7599:2;7587:9;7578:7;7574:23;7570:32;7567:147;;;7625:79;159:1186:51;;;7625:79:69;7733:38;7763:7;7752:9;7733:38;:::i;:::-;7723:48;;7822:2;7811:9;7807:18;7794:32;7849:18;7841:6;7838:30;7835:145;;;7891:79;159:1186:51;;;7891:79:69;7999:77;8068:7;8059:6;8048:9;8044:22;7999:77;:::i;:::-;7989:87;;;7410:672;;;;;:::o;8909:139::-;8962:10;9001:41;9038:3;9030:6;9001:41;:::i;9145:653::-;9197:3;9229:36;9259:5;4881:12;;4819:76;9229:36;4997:19;;;5049:4;5040:14;;9361:5;9354:12;;9405:6;9402:1;9398:14;9391:5;9387:26;9436:38;9468:5;8420:4;8411:14;;8343:84;9436:38;9492:1;9502:270;9516:6;9513:1;9510:13;9502:270;;;9587:5;9581:4;9577:16;9572:3;9565:29;9615:48;9658:4;9649:6;9643:13;9615:48;:::i;:::-;9607:56;-1:-1:-1;8420:4:69;8411:14;;9757:4;9748:14;;;;;9676:52;-1:-1:-1;9538:1:69;9531:9;9502:270;;;-1:-1:-1;9788:4:69;;9145:653;-1:-1:-1;;;;;;9145:653:69:o;9803:280::-;10002:2;9991:9;9984:21;9965:4;10022:55;10073:2;10062:9;10058:18;10050:6;10022:55;:::i;10088:184::-;10140:77;10137:1;10130:88;10237:4;10234:1;10227:15;10261:4;10258:1;10251:15;10277:184;10329:77;10326:1;10319:88;10426:4;10423:1;10416:15;10450:4;10447:1;10440:15;10466:179;10503:3;2724:4;2713:16;;10580:4;10571:7;10568:17;10565:43;;10588:18;;:::i;:::-;10637:1;10624:15;;10466:179;-1:-1:-1;;10466:179:69:o;10650:93::-;2325:18;2314:30;;10715:21;10710:3;10703:34;;;10650:93::o;10748:91::-;2724:4;2713:16;;10812:20;2655:76;10844:95;10926:5;10910:22;3032:67;10944:107;11008:37;11041:3;11033:5;11027:12;11008:37;:::i;:::-;;;10944:107::o;11056:414::-;11298:2;11283:18;;11310:36;11287:9;11328:6;11310:36;:::i;:::-;11355:44;11395:2;11384:9;11380:18;11372:6;11355:44;:::i;:::-;11408:56;11460:2;11449:9;11445:18;11437:6;11408:56;:::i;:::-;11056:414;;;;;;:::o;11564:191::-;11599:3;11641:1;11623:16;11620:23;11617:132;;;11687:1;11684;11681;11666:23;-1:-1:-1;11736:1:69;11730:8;11546:3;11542:15;11617:132;11564:191;:::o;11760:759::-;11799:3;11841:4;11823:16;11820:26;11817:39;;;11760:759;:::o;11817:39::-;76:2;70:9;11952:66;11934:16;11930:89;11927:1;11921:4;11906:114;12049:4;12043:11;12123:16;12116:4;12108:6;12104:17;12101:39;12080:18;12072:6;12069:30;12066:75;12063:88;;;12144:5;;11760:759;:::o;12063:88::-;12181:6;12175:4;12171:17;12217:3;12211:10;12244:18;12236:6;12233:30;12230:43;;;12266:5;;;;11760:759;:::o;12230:43::-;12350:66;12331:16;12325:4;12321:27;12317:100;12310:4;12301:6;12296:3;12292:16;12288:27;12285:133;12282:146;;;12421:5;;;;11760:759;:::o;12282:146::-;12437:57;12488:4;12479:6;12471;12467:19;12463:30;12457:4;12437:57;:::i;:::-;-1:-1:-1;12510:3:69;11760:759;-1:-1:-1;;;11760:759:69:o", "linkReferences": {} }, @@ -140,7 +140,7 @@ "execute(bytes16,(address,uint64,uint8,(uint256)))": "01efa5e5", "execute(bytes16,(address,uint64,uint8,(uint256))[])": "f09e5827" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes16\",\"name\":\"id\",\"type\":\"bytes16\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"errors\",\"type\":\"string[]\"}],\"name\":\"DexorderExecutions\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"id\",\"type\":\"bytes16\"},{\"components\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proof\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderLib.PriceProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct Dexorder.ExecutionRequest\",\"name\":\"req\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"id\",\"type\":\"bytes16\"},{\"components\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proof\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderLib.PriceProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct Dexorder.ExecutionRequest[]\",\"name\":\"reqs\",\"type\":\"tuple[]\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"errors\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Dexorder.sol\":\"Dexorder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Dexorder.sol\":{\"keccak256\":\"0xc5374193e01ca9b9a139a5f6fceaabcd647b55f8bd750018077ae6e9b1dcb4b9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9310302b0e229d8e5434560b3188023b2393d3dd1f24ce18518007ce73461fa9\",\"dweb:/ipfs/QmRSVeexGMiSt6vbvNdyJENCEtTXSZkb7FGrMeDDZfesZ1\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes16\",\"name\":\"id\",\"type\":\"bytes16\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"errors\",\"type\":\"string[]\"}],\"name\":\"DexorderExecutions\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"id\",\"type\":\"bytes16\"},{\"components\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proof\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderLib.PriceProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct Dexorder.ExecutionRequest\",\"name\":\"req\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"id\",\"type\":\"bytes16\"},{\"components\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proof\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderLib.PriceProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct Dexorder.ExecutionRequest[]\",\"name\":\"reqs\",\"type\":\"tuple[]\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"errors\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Dexorder.sol\":\"Dexorder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/Dexorder.sol\":{\"keccak256\":\"0xc5374193e01ca9b9a139a5f6fceaabcd647b55f8bd750018077ae6e9b1dcb4b9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9310302b0e229d8e5434560b3188023b2393d3dd1f24ce18518007ce73461fa9\",\"dweb:/ipfs/QmRSVeexGMiSt6vbvNdyJENCEtTXSZkb7FGrMeDDZfesZ1\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -507,10 +507,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -559,13 +559,13 @@ }, "ast": { "absolutePath": "src/Dexorder.sol", - "id": 46413, + "id": 46410, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "Dexorder": [ - 46412 + 46409 ], "IERC165": [ 43789 @@ -628,10 +628,10 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 @@ -640,10 +640,10 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Vault": [ - 49181 + 49178 ], "console2": [ 29653 @@ -653,7 +653,7 @@ "src": "66:1280:51", "nodes": [ { - "id": 46266, + "id": 46263, "nodeType": "PragmaDirective", "src": "66:24:51", "nodes": [], @@ -665,33 +665,33 @@ ] }, { - "id": 46267, + "id": 46264, "nodeType": "ImportDirective", "src": "91:24:51", "nodes": [], "absolutePath": "src/OrderLib.sol", "file": "./OrderLib.sol", "nameLocation": "-1:-1:-1", - "scope": 46413, - "sourceUnit": 47923, + "scope": 46410, + "sourceUnit": 47920, "symbolAliases": [], "unitAlias": "" }, { - "id": 46268, + "id": 46265, "nodeType": "ImportDirective", "src": "116:21:51", "nodes": [], "absolutePath": "src/Vault.sol", "file": "./Vault.sol", "nameLocation": "-1:-1:-1", - "scope": 46413, - "sourceUnit": 49182, + "scope": 46410, + "sourceUnit": 49179, "symbolAliases": [], "unitAlias": "" }, { - "id": 46269, + "id": 46266, "nodeType": "PragmaDirective", "src": "138:19:51", "nodes": [], @@ -701,12 +701,12 @@ ] }, { - "id": 46412, + "id": 46409, "nodeType": "ContractDefinition", "src": "159:1186:51", "nodes": [ { - "id": 46276, + "id": 46273, "nodeType": "EventDefinition", "src": "228:62:51", "nodes": [], @@ -715,18 +715,18 @@ "name": "DexorderExecutions", "nameLocation": "234:18:51", "parameters": { - "id": 46275, + "id": 46272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46271, + "id": 46268, "indexed": true, "mutability": "mutable", "name": "id", "nameLocation": "269:2:51", "nodeType": "VariableDeclaration", - "scope": 46276, + "scope": 46273, "src": "253:18:51", "stateVariable": false, "storageLocation": "default", @@ -735,7 +735,7 @@ "typeString": "bytes16" }, "typeName": { - "id": 46270, + "id": 46267, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "253:7:51", @@ -748,13 +748,13 @@ }, { "constant": false, - "id": 46274, + "id": 46271, "indexed": false, "mutability": "mutable", "name": "errors", "nameLocation": "282:6:51", "nodeType": "VariableDeclaration", - "scope": 46276, + "scope": 46273, "src": "273:15:51", "stateVariable": false, "storageLocation": "default", @@ -764,7 +764,7 @@ }, "typeName": { "baseType": { - "id": 46272, + "id": 46269, "name": "string", "nodeType": "ElementaryTypeName", "src": "273:6:51", @@ -773,7 +773,7 @@ "typeString": "string" } }, - "id": 46273, + "id": 46270, "nodeType": "ArrayTypeName", "src": "273:8:51", "typeDescriptions": { @@ -788,7 +788,7 @@ } }, { - "id": 46286, + "id": 46283, "nodeType": "StructDefinition", "src": "296:152:51", "nodes": [], @@ -796,12 +796,12 @@ "members": [ { "constant": false, - "id": 46278, + "id": 46275, "mutability": "mutable", "name": "vault", "nameLocation": "346:5:51", "nodeType": "VariableDeclaration", - "scope": 46286, + "scope": 46283, "src": "330:21:51", "stateVariable": false, "storageLocation": "default", @@ -810,7 +810,7 @@ "typeString": "address payable" }, "typeName": { - "id": 46277, + "id": 46274, "name": "address", "nodeType": "ElementaryTypeName", "src": "330:15:51", @@ -824,12 +824,12 @@ }, { "constant": false, - "id": 46280, + "id": 46277, "mutability": "mutable", "name": "orderIndex", "nameLocation": "368:10:51", "nodeType": "VariableDeclaration", - "scope": 46286, + "scope": 46283, "src": "361:17:51", "stateVariable": false, "storageLocation": "default", @@ -838,7 +838,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46279, + "id": 46276, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "361:6:51", @@ -851,12 +851,12 @@ }, { "constant": false, - "id": 46282, + "id": 46279, "mutability": "mutable", "name": "trancheIndex", "nameLocation": "394:12:51", "nodeType": "VariableDeclaration", - "scope": 46286, + "scope": 46283, "src": "388:18:51", "stateVariable": false, "storageLocation": "default", @@ -865,7 +865,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46281, + "id": 46278, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "388:5:51", @@ -878,37 +878,37 @@ }, { "constant": false, - "id": 46285, + "id": 46282, "mutability": "mutable", "name": "proof", "nameLocation": "436:5:51", "nodeType": "VariableDeclaration", - "scope": 46286, + "scope": 46283, "src": "416:25:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_storage_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_storage_ptr", "typeString": "struct OrderLib.PriceProof" }, "typeName": { - "id": 46284, + "id": 46281, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46283, + "id": 46280, "name": "OrderLib.PriceProof", "nameLocations": [ "416:8:51", "425:10:51" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "416:19:51" }, - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "416:19:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_storage_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_storage_ptr", "typeString": "struct OrderLib.PriceProof" } }, @@ -917,33 +917,33 @@ ], "name": "ExecutionRequest", "nameLocation": "303:16:51", - "scope": 46412, + "scope": 46409, "visibility": "public" }, { - "id": 46325, + "id": 46322, "nodeType": "FunctionDefinition", "src": "455:257:51", "nodes": [], "body": { - "id": 46324, + "id": 46321, "nodeType": "Block", "src": "552:160:51", "nodes": [], "statements": [ { "expression": { - "id": 46300, + "id": 46297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 46296, + "id": 46293, "name": "error", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46294, + "referencedDeclaration": 46291, "src": "562:5:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -955,14 +955,14 @@ "rightHandSide": { "arguments": [ { - "id": 46298, + "id": 46295, "name": "req", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46291, + "referencedDeclaration": 46288, "src": "579:3:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory" } } @@ -970,22 +970,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory" } ], - "id": 46297, + "id": 46294, "name": "_execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46411, + "referencedDeclaration": 46408, "src": "570:8:51", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ExecutionRequest_$46286_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ExecutionRequest_$46283_memory_ptr_$returns$_t_string_memory_ptr_$", "typeString": "function (struct Dexorder.ExecutionRequest memory) returns (string memory)" } }, - "id": 46299, + "id": 46296, "isConstant": false, "isLValue": false, "isPure": false, @@ -1007,23 +1007,23 @@ "typeString": "string memory" } }, - "id": 46301, + "id": 46298, "nodeType": "ExpressionStatement", "src": "562:21:51" }, { "assignments": [ - 46306 + 46303 ], "declarations": [ { "constant": false, - "id": 46306, + "id": 46303, "mutability": "mutable", "name": "errors", "nameLocation": "609:6:51", "nodeType": "VariableDeclaration", - "scope": 46324, + "scope": 46321, "src": "593:22:51", "stateVariable": false, "storageLocation": "memory", @@ -1033,7 +1033,7 @@ }, "typeName": { "baseType": { - "id": 46304, + "id": 46301, "name": "string", "nodeType": "ElementaryTypeName", "src": "593:6:51", @@ -1042,7 +1042,7 @@ "typeString": "string" } }, - "id": 46305, + "id": 46302, "nodeType": "ArrayTypeName", "src": "593:8:51", "typeDescriptions": { @@ -1053,12 +1053,12 @@ "visibility": "internal" } ], - "id": 46312, + "id": 46309, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 46310, + "id": 46307, "isConstant": false, "isLValue": false, "isPure": true, @@ -1080,7 +1080,7 @@ "typeString": "int_const 1" } ], - "id": 46309, + "id": 46306, "isConstant": false, "isLValue": false, "isPure": true, @@ -1093,7 +1093,7 @@ }, "typeName": { "baseType": { - "id": 46307, + "id": 46304, "name": "string", "nodeType": "ElementaryTypeName", "src": "622:6:51", @@ -1102,7 +1102,7 @@ "typeString": "string" } }, - "id": 46308, + "id": 46305, "nodeType": "ArrayTypeName", "src": "622:8:51", "typeDescriptions": { @@ -1111,7 +1111,7 @@ } } }, - "id": 46311, + "id": 46308, "isConstant": false, "isLValue": false, "isPure": true, @@ -1132,28 +1132,28 @@ }, { "expression": { - "id": 46317, + "id": 46314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 46313, + "id": 46310, "name": "errors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46306, + "referencedDeclaration": 46303, "src": "643:6:51", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", "typeString": "string memory[] memory" } }, - "id": 46315, + "id": 46312, "indexExpression": { "hexValue": "30", - "id": 46314, + "id": 46311, "isConstant": false, "isLValue": false, "isPure": true, @@ -1181,11 +1181,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 46316, + "id": 46313, "name": "error", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46294, + "referencedDeclaration": 46291, "src": "655:5:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -1198,7 +1198,7 @@ "typeString": "string memory" } }, - "id": 46318, + "id": 46315, "nodeType": "ExpressionStatement", "src": "643:17:51" }, @@ -1206,11 +1206,11 @@ "eventCall": { "arguments": [ { - "id": 46320, + "id": 46317, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46288, + "referencedDeclaration": 46285, "src": "694:2:51", "typeDescriptions": { "typeIdentifier": "t_bytes16", @@ -1218,11 +1218,11 @@ } }, { - "id": 46321, + "id": 46318, "name": "errors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46306, + "referencedDeclaration": 46303, "src": "698:6:51", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", @@ -1241,18 +1241,18 @@ "typeString": "string memory[] memory" } ], - "id": 46319, + "id": 46316, "name": "DexorderExecutions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46276, + "referencedDeclaration": 46273, "src": "675:18:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes16_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes16,string memory[] memory)" } }, - "id": 46322, + "id": 46319, "isConstant": false, "isLValue": false, "isPure": false, @@ -1268,7 +1268,7 @@ "typeString": "tuple()" } }, - "id": 46323, + "id": 46320, "nodeType": "EmitStatement", "src": "670:35:51" } @@ -1281,17 +1281,17 @@ "name": "execute", "nameLocation": "464:7:51", "parameters": { - "id": 46292, + "id": 46289, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46288, + "id": 46285, "mutability": "mutable", "name": "id", "nameLocation": "481:2:51", "nodeType": "VariableDeclaration", - "scope": 46325, + "scope": 46322, "src": "473:10:51", "stateVariable": false, "storageLocation": "default", @@ -1300,7 +1300,7 @@ "typeString": "bytes16" }, "typeName": { - "id": 46287, + "id": 46284, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "473:7:51", @@ -1313,36 +1313,36 @@ }, { "constant": false, - "id": 46291, + "id": 46288, "mutability": "mutable", "name": "req", "nameLocation": "509:3:51", "nodeType": "VariableDeclaration", - "scope": 46325, + "scope": 46322, "src": "485:27:51", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest" }, "typeName": { - "id": 46290, + "id": 46287, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46289, + "id": 46286, "name": "ExecutionRequest", "nameLocations": [ "485:16:51" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46286, + "referencedDeclaration": 46283, "src": "485:16:51" }, - "referencedDeclaration": 46286, + "referencedDeclaration": 46283, "src": "485:16:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_storage_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_storage_ptr", "typeString": "struct Dexorder.ExecutionRequest" } }, @@ -1352,17 +1352,17 @@ "src": "471:43:51" }, "returnParameters": { - "id": 46295, + "id": 46292, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46294, + "id": 46291, "mutability": "mutable", "name": "error", "nameLocation": "545:5:51", "nodeType": "VariableDeclaration", - "scope": 46325, + "scope": 46322, "src": "531:19:51", "stateVariable": false, "storageLocation": "memory", @@ -1371,7 +1371,7 @@ "typeString": "string" }, "typeName": { - "id": 46293, + "id": 46290, "name": "string", "nodeType": "ElementaryTypeName", "src": "531:6:51", @@ -1385,35 +1385,35 @@ ], "src": "530:21:51" }, - "scope": 46412, + "scope": 46409, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 46374, + "id": 46371, "nodeType": "FunctionDefinition", "src": "719:287:51", "nodes": [], "body": { - "id": 46373, + "id": 46370, "nodeType": "Block", "src": "822:184:51", "nodes": [], "statements": [ { "expression": { - "id": 46344, + "id": 46341, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 46337, + "id": 46334, "name": "errors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46335, + "referencedDeclaration": 46332, "src": "832:6:51", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", @@ -1426,18 +1426,18 @@ "arguments": [ { "expression": { - "id": 46341, + "id": 46338, "name": "reqs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46331, + "referencedDeclaration": 46328, "src": "854:4:51", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46286_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46283_memory_ptr_$dyn_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory[] memory" } }, - "id": 46342, + "id": 46339, "isConstant": false, "isLValue": false, "isPure": false, @@ -1459,7 +1459,7 @@ "typeString": "uint256" } ], - "id": 46340, + "id": 46337, "isConstant": false, "isLValue": false, "isPure": true, @@ -1472,7 +1472,7 @@ }, "typeName": { "baseType": { - "id": 46338, + "id": 46335, "name": "string", "nodeType": "ElementaryTypeName", "src": "845:6:51", @@ -1481,7 +1481,7 @@ "typeString": "string" } }, - "id": 46339, + "id": 46336, "nodeType": "ArrayTypeName", "src": "845:8:51", "typeDescriptions": { @@ -1490,7 +1490,7 @@ } } }, - "id": 46343, + "id": 46340, "isConstant": false, "isLValue": false, "isPure": false, @@ -1512,38 +1512,38 @@ "typeString": "string memory[] memory" } }, - "id": 46345, + "id": 46342, "nodeType": "ExpressionStatement", "src": "832:34:51" }, { "body": { "expression": { - "id": 46365, + "id": 46362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 46357, + "id": 46354, "name": "errors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46335, + "referencedDeclaration": 46332, "src": "925:6:51", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", "typeString": "string memory[] memory" } }, - "id": 46359, + "id": 46356, "indexExpression": { - "id": 46358, + "id": 46355, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46347, + "referencedDeclaration": 46344, "src": "932:1:51", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1567,24 +1567,24 @@ "arguments": [ { "baseExpression": { - "id": 46361, + "id": 46358, "name": "reqs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46331, + "referencedDeclaration": 46328, "src": "946:4:51", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46286_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46283_memory_ptr_$dyn_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory[] memory" } }, - "id": 46363, + "id": 46360, "indexExpression": { - "id": 46362, + "id": 46359, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46347, + "referencedDeclaration": 46344, "src": "951:1:51", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1598,7 +1598,7 @@ "nodeType": "IndexAccess", "src": "946:7:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory" } } @@ -1606,22 +1606,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory" } ], - "id": 46360, + "id": 46357, "name": "_execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46411, + "referencedDeclaration": 46408, "src": "937:8:51", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ExecutionRequest_$46286_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ExecutionRequest_$46283_memory_ptr_$returns$_t_string_memory_ptr_$", "typeString": "function (struct Dexorder.ExecutionRequest memory) returns (string memory)" } }, - "id": 46364, + "id": 46361, "isConstant": false, "isLValue": false, "isPure": false, @@ -1643,7 +1643,7 @@ "typeString": "string memory" } }, - "id": 46366, + "id": 46363, "nodeType": "ExpressionStatement", "src": "925:29:51" }, @@ -1652,17 +1652,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 46353, + "id": 46350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 46350, + "id": 46347, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46347, + "referencedDeclaration": 46344, "src": "892:1:51", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1673,18 +1673,18 @@ "operator": "<", "rightExpression": { "expression": { - "id": 46351, + "id": 46348, "name": "reqs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46331, + "referencedDeclaration": 46328, "src": "894:4:51", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46286_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46283_memory_ptr_$dyn_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory[] memory" } }, - "id": 46352, + "id": 46349, "isConstant": false, "isLValue": false, "isPure": false, @@ -1704,20 +1704,20 @@ "typeString": "bool" } }, - "id": 46367, + "id": 46364, "initializationExpression": { "assignments": [ - 46347 + 46344 ], "declarations": [ { "constant": false, - "id": 46347, + "id": 46344, "mutability": "mutable", "name": "i", "nameLocation": "887:1:51", "nodeType": "VariableDeclaration", - "scope": 46367, + "scope": 46364, "src": "881:7:51", "stateVariable": false, "storageLocation": "default", @@ -1726,7 +1726,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46346, + "id": 46343, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "881:5:51", @@ -1738,10 +1738,10 @@ "visibility": "internal" } ], - "id": 46349, + "id": 46346, "initialValue": { "hexValue": "30", - "id": 46348, + "id": 46345, "isConstant": false, "isLValue": false, "isPure": true, @@ -1761,7 +1761,7 @@ "isSimpleCounterLoop": false, "loopExpression": { "expression": { - "id": 46355, + "id": 46352, "isConstant": false, "isLValue": false, "isPure": false, @@ -1771,11 +1771,11 @@ "prefix": false, "src": "907:3:51", "subExpression": { - "id": 46354, + "id": 46351, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46347, + "referencedDeclaration": 46344, "src": "907:1:51", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1787,7 +1787,7 @@ "typeString": "uint8" } }, - "id": 46356, + "id": 46353, "nodeType": "ExpressionStatement", "src": "907:3:51" }, @@ -1798,11 +1798,11 @@ "eventCall": { "arguments": [ { - "id": 46369, + "id": 46366, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46327, + "referencedDeclaration": 46324, "src": "988:2:51", "typeDescriptions": { "typeIdentifier": "t_bytes16", @@ -1810,11 +1810,11 @@ } }, { - "id": 46370, + "id": 46367, "name": "errors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46335, + "referencedDeclaration": 46332, "src": "992:6:51", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", @@ -1833,18 +1833,18 @@ "typeString": "string memory[] memory" } ], - "id": 46368, + "id": 46365, "name": "DexorderExecutions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46276, + "referencedDeclaration": 46273, "src": "969:18:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes16_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes16,string memory[] memory)" } }, - "id": 46371, + "id": 46368, "isConstant": false, "isLValue": false, "isPure": false, @@ -1860,7 +1860,7 @@ "typeString": "tuple()" } }, - "id": 46372, + "id": 46369, "nodeType": "EmitStatement", "src": "964:35:51" } @@ -1873,17 +1873,17 @@ "name": "execute", "nameLocation": "728:7:51", "parameters": { - "id": 46332, + "id": 46329, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46327, + "id": 46324, "mutability": "mutable", "name": "id", "nameLocation": "745:2:51", "nodeType": "VariableDeclaration", - "scope": 46374, + "scope": 46371, "src": "737:10:51", "stateVariable": false, "storageLocation": "default", @@ -1892,7 +1892,7 @@ "typeString": "bytes16" }, "typeName": { - "id": 46326, + "id": 46323, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "737:7:51", @@ -1905,45 +1905,45 @@ }, { "constant": false, - "id": 46331, + "id": 46328, "mutability": "mutable", "name": "reqs", "nameLocation": "775:4:51", "nodeType": "VariableDeclaration", - "scope": 46374, + "scope": 46371, "src": "749:30:51", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46286_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46283_memory_ptr_$dyn_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest[]" }, "typeName": { "baseType": { - "id": 46329, + "id": 46326, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46328, + "id": 46325, "name": "ExecutionRequest", "nameLocations": [ "749:16:51" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46286, + "referencedDeclaration": 46283, "src": "749:16:51" }, - "referencedDeclaration": 46286, + "referencedDeclaration": 46283, "src": "749:16:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_storage_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_storage_ptr", "typeString": "struct Dexorder.ExecutionRequest" } }, - "id": 46330, + "id": 46327, "nodeType": "ArrayTypeName", "src": "749:18:51", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46286_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_ExecutionRequest_$46283_storage_$dyn_storage_ptr", "typeString": "struct Dexorder.ExecutionRequest[]" } }, @@ -1953,17 +1953,17 @@ "src": "735:46:51" }, "returnParameters": { - "id": 46336, + "id": 46333, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46335, + "id": 46332, "mutability": "mutable", "name": "errors", "nameLocation": "814:6:51", "nodeType": "VariableDeclaration", - "scope": 46374, + "scope": 46371, "src": "798:22:51", "stateVariable": false, "storageLocation": "memory", @@ -1973,7 +1973,7 @@ }, "typeName": { "baseType": { - "id": 46333, + "id": 46330, "name": "string", "nodeType": "ElementaryTypeName", "src": "798:6:51", @@ -1982,7 +1982,7 @@ "typeString": "string" } }, - "id": 46334, + "id": 46331, "nodeType": "ArrayTypeName", "src": "798:8:51", "typeDescriptions": { @@ -1995,18 +1995,18 @@ ], "src": "797:24:51" }, - "scope": 46412, + "scope": 46409, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 46411, + "id": 46408, "nodeType": "FunctionDefinition", "src": "1013:330:51", "nodes": [], "body": { - "id": 46410, + "id": 46407, "nodeType": "Block", "src": "1100:243:51", "nodes": [], @@ -2015,23 +2015,23 @@ "clauses": [ { "block": { - "id": 46398, + "id": 46395, "nodeType": "Block", "src": "1220:35:51", "statements": [ { "expression": { - "id": 46396, + "id": 46393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 46394, + "id": 46391, "name": "error", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46380, + "referencedDeclaration": 46377, "src": "1234:5:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -2042,7 +2042,7 @@ "operator": "=", "rightHandSide": { "hexValue": "", - "id": 46395, + "id": 46392, "isConstant": false, "isLValue": false, "isPure": true, @@ -2062,36 +2062,36 @@ "typeString": "string memory" } }, - "id": 46397, + "id": 46394, "nodeType": "ExpressionStatement", "src": "1234:10:51" } ] }, "errorName": "", - "id": 46399, + "id": 46396, "nodeType": "TryCatchClause", "src": "1220:35:51" }, { "block": { - "id": 46407, + "id": 46404, "nodeType": "Block", "src": "1298:39:51", "statements": [ { "expression": { - "id": 46405, + "id": 46402, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 46403, + "id": 46400, "name": "error", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46380, + "referencedDeclaration": 46377, "src": "1312:5:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -2101,11 +2101,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 46404, + "id": 46401, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46401, + "referencedDeclaration": 46398, "src": "1320:6:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -2118,27 +2118,27 @@ "typeString": "string memory" } }, - "id": 46406, + "id": 46403, "nodeType": "ExpressionStatement", "src": "1312:14:51" } ] }, "errorName": "Error", - "id": 46408, + "id": 46405, "nodeType": "TryCatchClause", "parameters": { - "id": 46402, + "id": 46399, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46401, + "id": 46398, "mutability": "mutable", "name": "reason", "nameLocation": "1290:6:51", "nodeType": "VariableDeclaration", - "scope": 46408, + "scope": 46405, "src": "1276:20:51", "stateVariable": false, "storageLocation": "memory", @@ -2147,7 +2147,7 @@ "typeString": "string" }, "typeName": { - "id": 46400, + "id": 46397, "name": "string", "nodeType": "ElementaryTypeName", "src": "1276:6:51", @@ -2168,18 +2168,18 @@ "arguments": [ { "expression": { - "id": 46387, + "id": 46384, "name": "req", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46377, + "referencedDeclaration": 46374, "src": "1175:3:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory" } }, - "id": 46388, + "id": 46385, "isConstant": false, "isLValue": true, "isPure": false, @@ -2187,7 +2187,7 @@ "memberLocation": "1179:10:51", "memberName": "orderIndex", "nodeType": "MemberAccess", - "referencedDeclaration": 46280, + "referencedDeclaration": 46277, "src": "1175:14:51", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -2196,18 +2196,18 @@ }, { "expression": { - "id": 46389, + "id": 46386, "name": "req", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46377, + "referencedDeclaration": 46374, "src": "1191:3:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory" } }, - "id": 46390, + "id": 46387, "isConstant": false, "isLValue": true, "isPure": false, @@ -2215,7 +2215,7 @@ "memberLocation": "1195:12:51", "memberName": "trancheIndex", "nodeType": "MemberAccess", - "referencedDeclaration": 46282, + "referencedDeclaration": 46279, "src": "1191:16:51", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -2224,18 +2224,18 @@ }, { "expression": { - "id": 46391, + "id": 46388, "name": "req", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46377, + "referencedDeclaration": 46374, "src": "1209:3:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory" } }, - "id": 46392, + "id": 46389, "isConstant": false, "isLValue": true, "isPure": false, @@ -2243,10 +2243,10 @@ "memberLocation": "1213:5:51", "memberName": "proof", "nodeType": "MemberAccess", - "referencedDeclaration": 46285, + "referencedDeclaration": 46282, "src": "1209:9:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } @@ -2262,7 +2262,7 @@ "typeString": "uint8" }, { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], @@ -2270,18 +2270,18 @@ "arguments": [ { "expression": { - "id": 46383, + "id": 46380, "name": "req", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46377, + "referencedDeclaration": 46374, "src": "1156:3:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest memory" } }, - "id": 46384, + "id": 46381, "isConstant": false, "isLValue": true, "isPure": false, @@ -2289,7 +2289,7 @@ "memberLocation": "1160:5:51", "memberName": "vault", "nodeType": "MemberAccess", - "referencedDeclaration": 46278, + "referencedDeclaration": 46275, "src": "1156:9:51", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2304,18 +2304,18 @@ "typeString": "address payable" } ], - "id": 46382, + "id": 46379, "name": "Vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "1150:5:51", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Vault_$49181_$", + "typeIdentifier": "t_type$_t_contract$_Vault_$49178_$", "typeString": "type(contract Vault)" } }, - "id": 46385, + "id": 46382, "isConstant": false, "isLValue": false, "isPure": false, @@ -2327,11 +2327,11 @@ "src": "1150:16:51", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 46386, + "id": 46383, "isConstant": false, "isLValue": false, "isPure": false, @@ -2339,14 +2339,14 @@ "memberLocation": "1167:7:51", "memberName": "execute", "nodeType": "MemberAccess", - "referencedDeclaration": 49143, + "referencedDeclaration": 49140, "src": "1150:24:51", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46638_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, - "id": 46393, + "id": 46390, "isConstant": false, "isLValue": false, "isPure": false, @@ -2362,7 +2362,7 @@ "typeString": "tuple()" } }, - "id": 46409, + "id": 46406, "nodeType": "TryStatement", "src": "1146:191:51" } @@ -2374,41 +2374,41 @@ "name": "_execute", "nameLocation": "1022:8:51", "parameters": { - "id": 46378, + "id": 46375, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46377, + "id": 46374, "mutability": "mutable", "name": "req", "nameLocation": "1056:3:51", "nodeType": "VariableDeclaration", - "scope": 46411, + "scope": 46408, "src": "1032:27:51", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_memory_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_memory_ptr", "typeString": "struct Dexorder.ExecutionRequest" }, "typeName": { - "id": 46376, + "id": 46373, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46375, + "id": 46372, "name": "ExecutionRequest", "nameLocations": [ "1032:16:51" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46286, + "referencedDeclaration": 46283, "src": "1032:16:51" }, - "referencedDeclaration": 46286, + "referencedDeclaration": 46283, "src": "1032:16:51", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExecutionRequest_$46286_storage_ptr", + "typeIdentifier": "t_struct$_ExecutionRequest_$46283_storage_ptr", "typeString": "struct Dexorder.ExecutionRequest" } }, @@ -2418,17 +2418,17 @@ "src": "1030:31:51" }, "returnParameters": { - "id": 46381, + "id": 46378, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46380, + "id": 46377, "mutability": "mutable", "name": "error", "nameLocation": "1093:5:51", "nodeType": "VariableDeclaration", - "scope": 46411, + "scope": 46408, "src": "1079:19:51", "stateVariable": false, "storageLocation": "memory", @@ -2437,7 +2437,7 @@ "typeString": "string" }, "typeName": { - "id": 46379, + "id": 46376, "name": "string", "nodeType": "ElementaryTypeName", "src": "1079:6:51", @@ -2451,7 +2451,7 @@ ], "src": "1078:21:51" }, - "scope": 46412, + "scope": 46409, "stateMutability": "nonpayable", "virtual": false, "visibility": "private" @@ -2464,14 +2464,14 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 46412 + 46409 ], "name": "Dexorder", "nameLocation": "168:8:51", - "scope": 46413, + "scope": 46410, "usedErrors": [], "usedEvents": [ - 46276 + 46273 ] } ], diff --git a/deployment/alpha/out/Factory.sol/Factory.json b/deployment/alpha/out/Factory.sol/Factory.json index 1a67d99..6749110 100644 --- a/deployment/alpha/out/Factory.sol/Factory.json +++ b/deployment/alpha/out/Factory.sol/Factory.json @@ -127,12 +127,12 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c63430008160033", "sourceMap": "143:118:52:-:0;;;210:49;;;;;;;;;-1:-1:-1;234:5:52;:18;;-1:-1:-1;;;;;;234:18:52;242:10;234:18;;;143:118;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c63430008160033", "sourceMap": "143:118:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;491:124:61;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;621:121;;;;;;:::i;:::-;;:::i;337:28::-;;;;;;;;;372:113;;;:::i;748:134::-;;;;;;:::i;:::-;;:::i;183:20:52:-;;;;;;;;;491:124:61;539:21;579:29;592:10;604:3;579:12;:29::i;:::-;572:36;491:124;-1:-1:-1;;491:124:61:o;621:121::-;673:21;713:22;726:5;733:1;713:12;:22::i;372:113::-;411:21;451:27;464:10;476:1;451:12;:27::i;:::-;444:34;;372:113;:::o;748:134::-;811:21;851:24;864:5;871:3;851:12;:24::i;:::-;844:31;748:134;-1:-1:-1;;;748:134:61:o;888:297::-;1000:17;;;;;;;;;;;;;;;;954:21;987:30;;;;;;;;;1077:27;;954:21;;1077:27;;1011:5;;1100:3;;1077:27;;:::i;:::-;;;;;;;;;;;;;1067:38;;;;;;1051:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:10:61;1120:17;;;;;;1152:26;;1027:83;;-1:-1:-1;1120:17:61;1152:26;;;;;;;1173:3;;1152:26;:::i;:::-;;;;;;;;888:297;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;209:118:69:-;197:4;186:16;;282:20;275:5;272:31;262:59;;317:1;314;307:12;262:59;209:118;:::o;332:168::-;409:20;;;463:31;409:20;463:31;:::i;:::-;;332:168;;;;:::o;505:286::-;562:6;615:2;603:9;594:7;590:23;586:32;583:147;;;641:79;143:118:52;;;641:79:69;749:36;777:7;766:9;749:36;:::i;929:104::-;972:7;875:42;864:54;;1005:22;796:128;1038:111;1112:30;1136:5;1112:30;:::i;:::-;1107:3;1100:43;;;1038:111::o;1154:213::-;1304:2;1289:18;;1316:45;1293:9;1343:6;1316:45;:::i;1473:122::-;1548:22;1564:5;1548:22;:::i;1600:172::-;1679:20;;;1733:33;1679:20;1733:33;:::i;1777:290::-;1836:6;1889:2;1877:9;1868:7;1864:23;1860:32;1857:147;;;1915:79;143:118:52;;;1915:79:69;2023:38;2053:7;2042:9;2023:38;:::i;2366:369::-;2432:6;2440;2493:2;2481:9;2472:7;2468:23;2464:32;2461:147;;;2519:79;143:118:52;;;2519:79:69;2627:38;2657:7;2646:9;2627:38;:::i;:::-;2617:48;;2684:45;2721:7;2716:2;2705:9;2701:18;2684:45;:::i;:::-;2674:55;;2366:369;;;;;:::o;2818:81::-;2855:7;2880:17;2891:5;2801:2;2797:14;;2740:73;2904:100;2941:7;2974:24;2992:5;2974:24;:::i;3009:143::-;3104:41;3122:22;3138:5;3122:22;:::i;:::-;3104:41;:::i;3240:95::-;3275:7;3308:21;3323:5;3222:3;3218:15;;3157:78;3340:108;3404:37;197:4;186:16;;3404:37;:::i;3453:294::-;3606:60;3662:3;3654:6;3606:60;:::i;:::-;3675:38;3709:2;3704:3;3700:12;3692:6;3675:38;:::i;:::-;3738:2;3729:12;;3453:294;-1:-1:-1;;3453:294:69:o;3752:100::-;197:4;186:16;;3825:20;128:76;3857:192;3987:2;3972:18;;3999:44;3976:9;4025:6;3999:44;:::i", "linkReferences": {} }, @@ -144,7 +144,7 @@ "deployVault(uint8)": "1a48240f", "parameters()": "89035730" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"VaultCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parameters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Factory.sol\":\"Factory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"VaultCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parameters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Factory.sol\":\"Factory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -511,10 +511,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -571,13 +571,13 @@ }, "ast": { "absolutePath": "src/Factory.sol", - "id": 46431, + "id": 46428, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "Factory": [ - 46430 + 46427 ], "IERC165": [ 43789 @@ -640,10 +640,10 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 @@ -652,13 +652,13 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Vault": [ - 49181 + 49178 ], "VaultDeployer": [ - 49436 + 49433 ], "console2": [ 29653 @@ -668,7 +668,7 @@ "src": "65:197:52", "nodes": [ { - "id": 46414, + "id": 46411, "nodeType": "PragmaDirective", "src": "65:24:52", "nodes": [], @@ -680,20 +680,20 @@ ] }, { - "id": 46415, + "id": 46412, "nodeType": "ImportDirective", "src": "91:29:52", "nodes": [], "absolutePath": "src/VaultDeployer.sol", "file": "./VaultDeployer.sol", "nameLocation": "-1:-1:-1", - "scope": 46431, - "sourceUnit": 49437, + "scope": 46428, + "sourceUnit": 49434, "symbolAliases": [], "unitAlias": "" }, { - "id": 46416, + "id": 46413, "nodeType": "PragmaDirective", "src": "121:19:52", "nodes": [], @@ -703,12 +703,12 @@ ] }, { - "id": 46430, + "id": 46427, "nodeType": "ContractDefinition", "src": "143:118:52", "nodes": [ { - "id": 46420, + "id": 46417, "nodeType": "VariableDeclaration", "src": "183:20:52", "nodes": [], @@ -717,7 +717,7 @@ "mutability": "mutable", "name": "admin", "nameLocation": "198:5:52", - "scope": 46430, + "scope": 46427, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -725,7 +725,7 @@ "typeString": "address" }, "typeName": { - "id": 46419, + "id": 46416, "name": "address", "nodeType": "ElementaryTypeName", "src": "183:7:52", @@ -738,29 +738,29 @@ "visibility": "public" }, { - "id": 46429, + "id": 46426, "nodeType": "FunctionDefinition", "src": "210:49:52", "nodes": [], "body": { - "id": 46428, + "id": 46425, "nodeType": "Block", "src": "224:35:52", "nodes": [], "statements": [ { "expression": { - "id": 46426, + "id": 46423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 46423, + "id": 46420, "name": "admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46420, + "referencedDeclaration": 46417, "src": "234:5:52", "typeDescriptions": { "typeIdentifier": "t_address", @@ -771,7 +771,7 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46424, + "id": 46421, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -782,7 +782,7 @@ "typeString": "msg" } }, - "id": 46425, + "id": 46422, "isConstant": false, "isLValue": false, "isPure": false, @@ -802,7 +802,7 @@ "typeString": "address" } }, - "id": 46427, + "id": 46424, "nodeType": "ExpressionStatement", "src": "234:18:52" } @@ -814,18 +814,18 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 46421, + "id": 46418, "nodeType": "ParameterList", "parameters": [], "src": "221:2:52" }, "returnParameters": { - "id": 46422, + "id": 46419, "nodeType": "ParameterList", "parameters": [], "src": "224:0:52" }, - "scope": 46430, + "scope": 46427, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -835,37 +835,37 @@ "baseContracts": [ { "baseName": { - "id": 46417, + "id": 46414, "name": "VaultDeployer", "nameLocations": [ "163:13:52" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49436, + "referencedDeclaration": 49433, "src": "163:13:52" }, - "id": 46418, + "id": 46415, "nodeType": "InheritanceSpecifier", "src": "163:13:52" } ], "canonicalName": "Factory", "contractDependencies": [ - 49181 + 49178 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 46430, - 49436, - 49445 + 46427, + 49433, + 49442 ], "name": "Factory", "nameLocation": "152:7:52", - "scope": 46431, + "scope": 46428, "usedErrors": [], "usedEvents": [ - 49333 + 49330 ] } ], diff --git a/deployment/alpha/out/IVaultDeployer.sol/IVaultDeployer.json b/deployment/alpha/out/IVaultDeployer.sol/IVaultDeployer.json index df60e40..f39a98f 100644 --- a/deployment/alpha/out/IVaultDeployer.sol/IVaultDeployer.json +++ b/deployment/alpha/out/IVaultDeployer.sol/IVaultDeployer.json @@ -110,17 +110,17 @@ }, "ast": { "absolutePath": "src/interface/IVaultDeployer.sol", - "id": 49446, + "id": 49443, "exportedSymbols": { "IVaultDeployer": [ - 49445 + 49442 ] }, "nodeType": "SourceUnit", "src": "65:140:62", "nodes": [ { - "id": 49438, + "id": 49435, "nodeType": "PragmaDirective", "src": "65:24:62", "nodes": [], @@ -132,7 +132,7 @@ ] }, { - "id": 49439, + "id": 49436, "nodeType": "PragmaDirective", "src": "90:19:62", "nodes": [], @@ -142,12 +142,12 @@ ] }, { - "id": 49445, + "id": 49442, "nodeType": "ContractDefinition", "src": "111:93:62", "nodes": [ { - "id": 49444, + "id": 49441, "nodeType": "FunctionDefinition", "src": "142:60:62", "nodes": [], @@ -158,23 +158,23 @@ "name": "parameters", "nameLocation": "151:10:62", "parameters": { - "id": 49440, + "id": 49437, "nodeType": "ParameterList", "parameters": [], "src": "161:2:62" }, "returnParameters": { - "id": 49443, + "id": 49440, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49442, + "id": 49439, "mutability": "mutable", "name": "owner", "nameLocation": "195:5:62", "nodeType": "VariableDeclaration", - "scope": 49444, + "scope": 49441, "src": "187:13:62", "stateVariable": false, "storageLocation": "default", @@ -183,7 +183,7 @@ "typeString": "address" }, "typeName": { - "id": 49441, + "id": 49438, "name": "address", "nodeType": "ElementaryTypeName", "src": "187:7:62", @@ -198,7 +198,7 @@ ], "src": "186:15:62" }, - "scope": 49445, + "scope": 49442, "stateMutability": "view", "virtual": false, "visibility": "external" @@ -211,11 +211,11 @@ "contractKind": "interface", "fullyImplemented": false, "linearizedBaseContracts": [ - 49445 + 49442 ], "name": "IVaultDeployer", "nameLocation": "121:14:62", - "scope": 49446, + "scope": 49443, "usedErrors": [], "usedEvents": [] } diff --git a/deployment/alpha/out/MockERC20.sol/MockERC20.json b/deployment/alpha/out/MockERC20.sol/MockERC20.json index 5d91c40..339eeba 100644 --- a/deployment/alpha/out/MockERC20.sol/MockERC20.json +++ b/deployment/alpha/out/MockERC20.sol/MockERC20.json @@ -778,7 +778,7 @@ }, "ast": { "absolutePath": "src/MockERC20.sol", - "id": 46479, + "id": 46476, "exportedSymbols": { "Context": [ 43777 @@ -793,14 +793,14 @@ 43581 ], "MockERC20": [ - 46478 + 46475 ] }, "nodeType": "SourceUnit", "src": "26:522:53", "nodes": [ { - "id": 46432, + "id": 46429, "nodeType": "PragmaDirective", "src": "26:24:53", "nodes": [], @@ -812,25 +812,25 @@ ] }, { - "id": 46433, + "id": 46430, "nodeType": "ImportDirective", "src": "51:55:53", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 46479, + "scope": 46476, "sourceUnit": 43479, "symbolAliases": [], "unitAlias": "" }, { - "id": 46478, + "id": 46475, "nodeType": "ContractDefinition", "src": "109:438:53", "nodes": [ { - "id": 46437, + "id": 46434, "nodeType": "VariableDeclaration", "src": "144:23:53", "nodes": [], @@ -838,7 +838,7 @@ "mutability": "mutable", "name": "_decimals", "nameLocation": "158:9:53", - "scope": 46478, + "scope": 46475, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -846,7 +846,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46436, + "id": 46433, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "144:5:53", @@ -858,29 +858,29 @@ "visibility": "private" }, { - "id": 46455, + "id": 46452, "nodeType": "FunctionDefinition", "src": "174:174:53", "nodes": [], "body": { - "id": 46454, + "id": 46451, "nodeType": "Block", "src": "273:75:53", "nodes": [], "statements": [ { "expression": { - "id": 46452, + "id": 46449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 46450, + "id": 46447, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46437, + "referencedDeclaration": 46434, "src": "320:9:53", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -890,11 +890,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 46451, + "id": 46448, "name": "decimals_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46443, + "referencedDeclaration": 46440, "src": "332:9:53", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -907,7 +907,7 @@ "typeString": "uint8" } }, - "id": 46453, + "id": 46450, "nodeType": "ExpressionStatement", "src": "320:21:53" } @@ -919,11 +919,11 @@ { "arguments": [ { - "id": 46446, + "id": 46443, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46439, + "referencedDeclaration": 46436, "src": "255:4:53", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -931,11 +931,11 @@ } }, { - "id": 46447, + "id": 46444, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46441, + "referencedDeclaration": 46438, "src": "261:6:53", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -943,10 +943,10 @@ } } ], - "id": 46448, + "id": 46445, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 46445, + "id": 46442, "name": "ERC20", "nameLocations": [ "249:5:53" @@ -962,17 +962,17 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 46444, + "id": 46441, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46439, + "id": 46436, "mutability": "mutable", "name": "name", "nameLocation": "200:4:53", "nodeType": "VariableDeclaration", - "scope": 46455, + "scope": 46452, "src": "186:18:53", "stateVariable": false, "storageLocation": "memory", @@ -981,7 +981,7 @@ "typeString": "string" }, "typeName": { - "id": 46438, + "id": 46435, "name": "string", "nodeType": "ElementaryTypeName", "src": "186:6:53", @@ -994,12 +994,12 @@ }, { "constant": false, - "id": 46441, + "id": 46438, "mutability": "mutable", "name": "symbol", "nameLocation": "220:6:53", "nodeType": "VariableDeclaration", - "scope": 46455, + "scope": 46452, "src": "206:20:53", "stateVariable": false, "storageLocation": "memory", @@ -1008,7 +1008,7 @@ "typeString": "string" }, "typeName": { - "id": 46440, + "id": 46437, "name": "string", "nodeType": "ElementaryTypeName", "src": "206:6:53", @@ -1021,12 +1021,12 @@ }, { "constant": false, - "id": 46443, + "id": 46440, "mutability": "mutable", "name": "decimals_", "nameLocation": "234:9:53", "nodeType": "VariableDeclaration", - "scope": 46455, + "scope": 46452, "src": "228:15:53", "stateVariable": false, "storageLocation": "default", @@ -1035,7 +1035,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46442, + "id": 46439, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "228:5:53", @@ -1050,42 +1050,42 @@ "src": "185:59:53" }, "returnParameters": { - "id": 46449, + "id": 46446, "nodeType": "ParameterList", "parameters": [], "src": "273:0:53" }, - "scope": 46478, + "scope": 46475, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 46464, + "id": 46461, "nodeType": "FunctionDefinition", "src": "354:90:53", "nodes": [], "body": { - "id": 46463, + "id": 46460, "nodeType": "Block", "src": "411:33:53", "nodes": [], "statements": [ { "expression": { - "id": 46461, + "id": 46458, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46437, + "referencedDeclaration": 46434, "src": "428:9:53", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 46460, - "id": 46462, + "functionReturnParameters": 46457, + "id": 46459, "nodeType": "Return", "src": "421:16:53" } @@ -1101,29 +1101,29 @@ "name": "decimals", "nameLocation": "363:8:53", "overrides": { - "id": 46457, + "id": 46454, "nodeType": "OverrideSpecifier", "overrides": [], "src": "386:8:53" }, "parameters": { - "id": 46456, + "id": 46453, "nodeType": "ParameterList", "parameters": [], "src": "371:2:53" }, "returnParameters": { - "id": 46460, + "id": 46457, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46459, + "id": 46456, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 46464, + "scope": 46461, "src": "404:5:53", "stateVariable": false, "storageLocation": "default", @@ -1132,7 +1132,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46458, + "id": 46455, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "404:5:53", @@ -1146,18 +1146,18 @@ ], "src": "403:7:53" }, - "scope": 46478, + "scope": 46475, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 46477, + "id": 46474, "nodeType": "FunctionDefinition", "src": "450:95:53", "nodes": [], "body": { - "id": 46476, + "id": 46473, "nodeType": "Block", "src": "506:39:53", "nodes": [], @@ -1166,11 +1166,11 @@ "expression": { "arguments": [ { - "id": 46472, + "id": 46469, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46466, + "referencedDeclaration": 46463, "src": "522:7:53", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1178,11 +1178,11 @@ } }, { - "id": 46473, + "id": 46470, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46468, + "referencedDeclaration": 46465, "src": "531:6:53", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1201,7 +1201,7 @@ "typeString": "uint256" } ], - "id": 46471, + "id": 46468, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1212,7 +1212,7 @@ "typeString": "function (address,uint256)" } }, - "id": 46474, + "id": 46471, "isConstant": false, "isLValue": false, "isPure": false, @@ -1228,7 +1228,7 @@ "typeString": "tuple()" } }, - "id": 46475, + "id": 46472, "nodeType": "ExpressionStatement", "src": "516:22:53" } @@ -1241,17 +1241,17 @@ "name": "mint", "nameLocation": "459:4:53", "parameters": { - "id": 46469, + "id": 46466, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46466, + "id": 46463, "mutability": "mutable", "name": "account", "nameLocation": "472:7:53", "nodeType": "VariableDeclaration", - "scope": 46477, + "scope": 46474, "src": "464:15:53", "stateVariable": false, "storageLocation": "default", @@ -1260,7 +1260,7 @@ "typeString": "address" }, "typeName": { - "id": 46465, + "id": 46462, "name": "address", "nodeType": "ElementaryTypeName", "src": "464:7:53", @@ -1274,12 +1274,12 @@ }, { "constant": false, - "id": 46468, + "id": 46465, "mutability": "mutable", "name": "amount", "nameLocation": "489:6:53", "nodeType": "VariableDeclaration", - "scope": 46477, + "scope": 46474, "src": "481:14:53", "stateVariable": false, "storageLocation": "default", @@ -1288,7 +1288,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46467, + "id": 46464, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "481:7:53", @@ -1303,12 +1303,12 @@ "src": "463:33:53" }, "returnParameters": { - "id": 46470, + "id": 46467, "nodeType": "ParameterList", "parameters": [], "src": "506:0:53" }, - "scope": 46478, + "scope": 46475, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -1318,7 +1318,7 @@ "baseContracts": [ { "baseName": { - "id": 46434, + "id": 46431, "name": "ERC20", "nameLocations": [ "131:5:53" @@ -1327,7 +1327,7 @@ "referencedDeclaration": 43478, "src": "131:5:53" }, - "id": 46435, + "id": 46432, "nodeType": "InheritanceSpecifier", "src": "131:5:53" } @@ -1337,7 +1337,7 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 46478, + 46475, 43478, 43581, 43556, @@ -1345,7 +1345,7 @@ ], "name": "MockERC20", "nameLocation": "118:9:53", - "scope": 46479, + "scope": 46476, "usedErrors": [], "usedEvents": [ 43490, diff --git a/deployment/alpha/out/MockEnv.sol/MockEnv.json b/deployment/alpha/out/MockEnv.sol/MockEnv.json index 7fb16cd..b249074 100644 --- a/deployment/alpha/out/MockEnv.sol/MockEnv.json +++ b/deployment/alpha/out/MockEnv.sol/MockEnv.json @@ -305,7 +305,7 @@ } ], "bytecode": { - "object": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220e24d516b60430c641c8980ef5657e8505e86a72a54cb97d776669dcdc4b7648564736f6c63430008160033", + "object": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220bcf6de9d6c3f975767cbe831267c470ecc806539ce37e7f80512820d344df48564736f6c63430008160033", "sourceMap": "588:6124:63:-:0;;;612:87;;;-1:-1:-1;;;;;;612:87:63;;;644:42:50;612:87:63;;;;;705:58;;;;;765:42:50;705:58:63;;;588:6124;;;;;;;;;;;;;;;;", "linkReferences": { "src/Util.sol": { @@ -323,7 +323,7 @@ } }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220e24d516b60430c641c8980ef5657e8505e86a72a54cb97d776669dcdc4b7648564736f6c63430008160033", + "object": "0x60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220bcf6de9d6c3f975767cbe831267c470ecc806539ce37e7f80512820d344df48564736f6c63430008160033", "sourceMap": "588:6124:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;769:26;;;;;;;;;;;;;;;;:::i;851:20::-;;;;;;;;;705:58;;;;;;;;;5079:824;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2667:221::-;;;;;;:::i;:::-;;:::i;:::-;;988:20;;;;;;;;;;;;;;;;;;;:::i;612:87::-;;;;;;;;;5909:112;;;:::i;:::-;;;;;;;:::i;824:21::-;;;;;;;;;6027:683;;;;;;:::i;:::-;;:::i;961:21::-;;;;;;;;;2895:279;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;801:17::-;;;;;;;;;;;;;;;;;;;:::i;4784:289::-;;;;;;:::i;:::-;;:::i;1349:1125::-;;;:::i;2481:179::-;;;;;;:::i;:::-;;:::i;5079:824::-;5246:7;;5222:43;;;;;5193:17;;5222:15;;;;;;;:43;;5246:7;;5256:8;;5222:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5688:159:63;;;;;;;;;;;;;;;;;;;;;5773:3;;;;;;;5688:159;;;;5778:10;5688:159;;;;5790:15;5688:159;;;;;;;;;;-1:-1:-1;5688:159:63;;;;;;;;;;;5864:7;;:32;;;;;5688:159;;5864:7;;:24;;:32;;5688:159;;5864:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5857:39;5079:824;-1:-1:-1;;;;;;5079:824:63:o;2667:221::-;2741:18;2780:1;2762:15;:6;2771;2762:15;:::i;:::-;:19;;;;:::i;:::-;2741:40;-1:-1:-1;2791:17:63;2828:1;2811:14;:6;2820:5;2811:14;:::i;:::-;:18;;;;:::i;:::-;2791:38;;2839:42;2845:10;2857:9;2868:5;2875;2839;:42::i;:::-;;;;;2731:157;;2667:221;;;:::o;5909:112::-;6002:4;;:12;;;;;;;;5947:20;;6002:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5979:35:63;;5909:112;-1:-1:-1;;;;;;5909:112:63:o;6027:683::-;6092:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;6129:31;6142:17;6129:31;;:12;:31::i;:::-;6170:16;6189:7;:5;:7::i;:::-;6170:26;;6206:22;6219:8;6206:22;;:12;:22::i;:::-;6254:17;6242:29;;:8;:29;;;6238:55;;6286:7;6027:683;:::o;6238:55::-;6302:17;6333;6322:28;;:8;:28;;;:68;;6383:6;;;;6322:68;;;6363:6;;;;6322:68;6302:88;;6400:18;6432:17;6421:28;;:8;:28;;;:68;;6482:6;;;;6421:68;;;6462:6;;;;6421:68;6612:33;;;;;6400:89;;-1:-1:-1;6596:6:63;;6612:12;;;;;;:33;;6633:4;;6596:6;;6612:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6655:48;6660:7;6669:8;6679:4;6685:17;6655:4;:48::i;:::-;;6082:628;;;;6027:683;:::o;2895:279::-;3004:15;3029:17;3056:15;3081;3124:43;3131:10;3143:9;3154:5;3161;3124:6;:43::i;:::-;3117:50;;;;-1:-1:-1;3117:50:63;-1:-1:-1;3117:50:63;;-1:-1:-1;2895:279:63;-1:-1:-1;;;;;2895:279:63:o;4784:289::-;4871:17;4900:13;4936:4;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4916:33;;4924:7;4916:33;;;:93;;4982:27;5008:1;997:49:38;4982:27:63;:::i;:::-;4916:93;;;4952:27;817:10:38;4978:1:63;4952:27;:::i;:::-;4900:109;;5026:40;5031:7;5040:8;5050;5060:5;5026:4;:40::i;:::-;5019:47;;;4784:289;;;;;;:::o;1349:1125::-;1436:2;1389:50;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:4:63;:57;;;;;;;;;;;;;;;1449:19;;;;;;;;;;;;;;;;;;;:12;:19::i;:::-;1499:4;;1478:27;;1499:4;;1478:12;:27::i;:::-;1563:1;1521:44;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1515:3:63;:50;;;;;;;;;;;;;;;1575:20;;;;;;;;;;;;;;;;;;;:12;:20::i;:::-;1626:3;;1605:26;;1626:3;;1605:12;:26::i;:::-;1641:3;:9;;;;;;;;1695:3;;1679:4;;1660:8;:39;;;;1641:9;1695:3;;;;1679:4;;;;1671:28;;;;1660:39;;;;;;;;;;;1718:8;;;:39;;1752:4;;;;1718:39;;;1737:3;;;;1718:39;1709:6;:48;;;;;;;;;;;;;;;1776:8;;;;;;;:39;;1811:3;;;;1776:39;;;1795:4;;;;1776:39;1767:6;:48;;;;;;;;;;;;;;;;;-1:-1:-1;;1848:8:63;;;;;:90;;1914:23;1848:90;;;1867:35;1848:90;1825:113;;1957:99;;;;;;;;;;;;;;;;;;:12;:99::i;:::-;2188:4;;2228:6;;2236;;2244:3;;2188:74;;;;;:4;;;;;:39;;:74;;2228:6;;;;2236;;;2244:3;;;;;;;2249:12;;2188:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2166:4;:97;;;;;;;;;;;;;;;2273:23;;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2327:4;;2306:27;;2327:4;;2306:12;:27::i;:::-;2412:55;2418:10;477:7:38;637:9;477:7;637:9;:::i;2412:55:63:-;1372:1102;1349:1125::o;2481:179::-;2556:1;2550:5;:7;;;2542:16;;;;;;2594:4;;:12;;;;;;;;2571:10;;2594:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2568:38;;;;;;;;2616:37;2622:6;2635:5;2630:4;:10;;;;:::i;:::-;2642;2647:5;2642:4;:10;:::i;2616:37::-;2532:128;2481:179;;:::o;6598:121:16:-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;6356:116::-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6405:15;:60::i;3180:1597:63:-;3516:4;;:36;;;;;3291:15;;;;;;;;3516:4;;;;;:9;;:36;;3534:4;;3541:10;;3516:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3562:4:63;;;3583;3562:39;;;;;:4;;;;;-1:-1:-1;3562:12:63;;-1:-1:-1;3562:39:63;;3583:4;;;;3590:10;;3562:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3650:3:63;;;:34;;;;;:3;;;;;:8;;:34;;3667:4;;3674:9;;3650:34;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3694:3:63;;;;3714:4;3694:37;;;;;:3;;;;;-1:-1:-1;3694:11:63;;-1:-1:-1;3694:37:63;;3714:4;;;;;3721:9;;3694:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4240:4:63;;:18;;;;;;;;4229:8;;4240:4;;;:16;;:18;;;;;;;;;;;;;;:4;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4276:25;;;;;4229:29;;-1:-1:-1;4276:4:63;;:14;;:25;;4291:5;;4229:29;;4276:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4319;;;;;4268:33;;-1:-1:-1;4319:4:63;;:14;;:25;;4334:5;;4341:2;;4319:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4409:166;;;;;;;;4469:4;;;;;;4409:166;;4484:3;;;;;4409:166;;;;4490:3;;;;;;;;4409:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4409:166:63;;;;;;4469:4;4409:166;;;;;4538:10;4409:166;;;;4550:15;4409:166;;;;4626:4;:17;;;;;4409:166;;-1:-1:-1;4409:166:63;;4626:4;;;:9;;:17;;4409:166;;4626:17;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4653:22;;;;;;;;;;;;;;;;;4585:58;;-1:-1:-1;4585:58:63;;-1:-1:-1;4585:58:63;-1:-1:-1;4585:58:63;-1:-1:-1;4653:22:63;;:12;:22::i;:::-;4685:23;4698:9;4685:23;;:12;:23::i;:::-;4718:21;4731:7;4718:12;:21::i;:::-;4749;4762:7;4749:12;:21::i;:::-;3394:1383;;3180:1597;;;;;;;;;:::o;6841:116:16:-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;147:96:69:-;182:7;93:42;82:54;;215:22;204:33;147:96;-1:-1:-1;;147:96:69:o;248:95::-;314:22;330:5;314:22;:::i;:::-;309:3;302:35;;;248:95::o;348:189::-;482:2;467:18;;494:37;471:9;513:6;494:37;:::i;599:138::-;645:9;93:42;82:54;;682:49;14:128;742:122;788:9;825:33;852:5;825:33;:::i;869:138::-;931:9;968:33;995:5;968:33;:::i;1012:138::-;1094:49;1137:5;1094:49;:::i;1155:229::-;1313:2;1298:18;;1325:53;1302:9;1360:6;1325:53;:::i;2503:107::-;2549:7;2582:22;2598:5;2582:22;:::i;2615:144::-;2701:33;2728:5;2701:33;:::i;:::-;2694:5;2691:44;2681:72;;2749:1;2746;2739:12;2764:194;2854:20;;;2908:44;2854:20;2908:44;:::i;:::-;;2764:194;;;;:::o;3035:122::-;3126:5;3110:22;542:52;3162:172;3241:20;;;3295:33;3241:20;3295:33;:::i;3339:122::-;93:42;82:54;;3414:22;14:128;3466:172;3545:20;;;3599:33;3545:20;3599:33;:::i;3643:600::-;3767:6;3775;3783;3791;3844:3;3832:9;3823:7;3819:23;3815:33;3812:148;;;3871:79;588:6124:63;;;3871:79:69;3979:49;4020:7;4009:9;3979:49;:::i;:::-;3969:59;;4047:58;4097:7;4092:2;4081:9;4077:18;4047:58;:::i;:::-;4037:68;;4124:47;4163:7;4158:2;4147:9;4143:18;4124:47;:::i;:::-;4114:57;;4190:47;4229:7;4224:2;4213:9;4209:18;4190:47;:::i;:::-;4180:57;;3643:600;;;;;;;:::o;4248:106::-;4341:5;4325:22;542:52;4359:200;4493:2;4478:18;;4505:48;4482:9;4535:6;4505:48;:::i;4661:118::-;4734:20;4748:5;4641:1;4630:20;;4564:92;4784:168;4861:20;;;4915:31;4861:20;4915:31;:::i;4957:448::-;5030:6;5038;5046;5099:2;5087:9;5078:7;5074:23;5070:32;5067:147;;;5125:79;588:6124:63;;;5125:79:69;5233:38;5263:7;5252:9;5233:38;:::i;:::-;5223:48;;5290:45;5327:7;5322:2;5311:9;5307:18;5290:45;:::i;:::-;5280:55;;5354:45;5391:7;5386:2;5375:9;5371:18;5354:45;:::i;:::-;5344:55;;4957:448;;;;;:::o;5507:89::-;5482:13;;5475:21;5570:19;5410:92;5601:180;5729:2;5714:18;;5741:34;5718:9;5757:6;5741:34;:::i;6371:106::-;93:42;82:54;;6448:22;14:128;6482:200;6616:2;6601:18;;6628:48;6605:9;6658:6;6628:48;:::i;6687:290::-;6746:6;6799:2;6787:9;6778:7;6774:23;6770:32;6767:147;;;6825:79;588:6124:63;;;6825:79:69;6933:38;6963:7;6952:9;6933:38;:::i;6982:532::-;7064:6;7072;7080;7088;7141:3;7129:9;7120:7;7116:23;7112:33;7109:148;;;7168:79;588:6124:63;;;7168:79:69;7276:38;7306:7;7295:9;7276:38;:::i;:::-;7266:48;;7333:47;7372:7;7367:2;7356:9;7352:18;7333:47;:::i;:::-;7323:57;;7399:45;7436:7;7431:2;7420:9;7416:18;7399:45;:::i;:::-;7389:55;;7463:45;7500:7;7495:2;7484:9;7480:18;7463:45;:::i;7644:95::-;7598:34;7587:46;;7710:22;7519:120;7744:472;7962:3;7947:19;;7975:48;7951:9;8005:6;7975:48;:::i;:::-;8032:46;8074:2;8063:9;8059:18;8051:6;8032:46;:::i;:::-;8087:57;8140:2;8129:9;8125:18;8117:6;8087:57;:::i;:::-;8153;8206:2;8195:9;8191:18;8183:6;8153:57;:::i;:::-;7744:472;;;;;;;:::o;8319:93::-;8299:8;8288:20;;8384:21;8221:93;8417:186;8549:2;8534:18;;8561:36;8538:9;8579:6;8561:36;:::i;8608:516::-;8723:6;8731;8739;8792:2;8780:9;8771:7;8767:23;8763:32;8760:147;;;8818:79;588:6124:63;;;8818:79:69;8926:49;8967:7;8956:9;8926:49;:::i;:::-;8916:59;;8994:58;9044:7;9039:2;9028:9;9024:18;8994:58;:::i;:::-;8984:68;;9071:47;9110:7;9105:2;9094:9;9090:18;9071:47;:::i;9129:369::-;9195:6;9203;9256:2;9244:9;9235:7;9231:23;9227:32;9224:147;;;9282:79;588:6124:63;;;9282:79:69;9390:38;9420:7;9409:9;9390:38;:::i;:::-;9380:48;;9447:45;9484:7;9479:2;9468:9;9464:18;9447:45;:::i;:::-;9437:55;;9129:369;;;;;:::o;9503:283::-;9665:2;9650:18;;9677:37;9654:9;9696:6;9677:37;:::i;:::-;9723:57;9776:2;9765:9;9761:18;9753:6;9723:57;:::i;9791:116::-;5482:13;;5475:21;9863:19;5410:92;9912:170;9999:13;;;10046:30;9999:13;10046:30;:::i;10087:306::-;10154:6;10207:2;10195:9;10186:7;10182:23;10178:32;10175:147;;;10233:79;588:6124:63;;;10233:79:69;10341:46;10379:7;10368:9;10341:46;:::i;10817:948::-;10893:48;10937:3;10929:5;10923:12;10893:48;:::i;:::-;10987:4;10980:5;10976:16;10970:23;11002:59;11055:4;11050:3;11046:14;11032:12;11002:59;:::i;:::-;;11109:4;11102:5;11098:16;11092:23;11124:59;11177:4;11172:3;11168:14;11152;11124:59;:::i;:::-;;11231:4;11224:5;11220:16;11214:23;11246:61;11301:4;11296:3;11292:14;11276;11246:61;:::i;:::-;;11355:4;11348:5;11344:16;11338:23;11370:50;11414:4;11409:3;11405:14;11389;11370:50;:::i;:::-;;11468:4;11461:5;11457:16;11451:23;11483:50;11527:4;11522:3;11518:14;11502;11483:50;:::i;:::-;;11581:4;11574:5;11570:16;11564:23;11596:50;11640:4;11635:3;11631:14;11615;11596:50;:::i;:::-;;11694:4;11687:5;11683:16;11677:23;11709:50;11753:4;11748:3;11744:14;11728;11709:50;:::i;11770:294::-;11986:3;11971:19;;11999:59;11975:9;12040:6;11999:59;:::i;12069:176::-;12159:13;;;12206:33;12159:13;12206:33;:::i;12250:312::-;12320:6;12373:2;12361:9;12352:7;12348:23;12344:32;12341:147;;;12399:79;588:6124:63;;;12399:79:69;12507:49;12548:7;12537:9;12507:49;:::i;12567:184::-;12619:77;12616:1;12609:88;12716:4;12713:1;12706:15;12740:4;12737:1;12730:15;12756:308;12927:13;;;12845:1;12883;12927:13;12992:11;;13013:19;;;13005:28;;12989:45;12979:79;;13038:18;;:::i;:::-;12979:79;;;12756:308;;;;:::o;13069:184::-;13121:77;13118:1;13111:88;13218:4;13215:1;13208:15;13242:4;13239:1;13232:15;13258:202;13298:1;13341;13379;13400:3;13390:37;;13407:18;;:::i;:::-;13441:13;;;13258:202;-1:-1:-1;;;13258:202:69:o;13465:176::-;13555:13;;;13602:33;13555:13;13602:33;:::i;13646:172::-;13734:13;;;13781:31;13734:13;13781:31;:::i;13907:120::-;13893:6;13882:18;;13981:21;13823:79;14032:174;14121:13;;;14168:32;14121:13;14168:32;:::i;14292:118::-;14280:4;14269:16;;14365:20;14211:76;14415:172;14503:13;;;14550:31;14503:13;14550:31;:::i;14592:860::-;14706:6;14714;14722;14730;14738;14746;14754;14807:3;14795:9;14786:7;14782:23;14778:33;14775:148;;;14834:79;588:6124:63;;;14834:79:69;14942:49;14983:7;14972:9;14942:49;:::i;:::-;14932:59;;15010:56;15058:7;15053:2;15042:9;15038:18;15010:56;:::i;:::-;15000:66;;15085:57;15134:7;15129:2;15118:9;15114:18;15085:57;:::i;:::-;15075:67;;15161:57;15210:7;15205:2;15194:9;15190:18;15161:57;:::i;:::-;15151:67;;15237:58;15287:7;15281:3;15270:9;15266:19;15237:58;:::i;:::-;15227:68;;15314:57;15363:7;15357:3;15346:9;15342:19;15314:57;:::i;:::-;15304:67;;15390:56;15438:7;15432:3;15421:9;15417:19;15390:56;:::i;:::-;15380:66;;14592:860;;;;;;;;;;:::o;15457:122::-;15532:22;15548:5;15532:22;:::i;15584:176::-;15674:13;;;15721:33;15674:13;15721:33;:::i;15765:312::-;15835:6;15888:2;15876:9;15867:7;15863:23;15859:32;15856:147;;;15914:79;588:6124:63;;;15914:79:69;16022:49;16063:7;16052:9;16022:49;:::i;16082:257::-;93:42;82:54;;;;;;16193:28;;;;16256:54;;16253:80;;;16313:18;;:::i;16344:252::-;93:42;82:54;;;;;;16453:28;;;;16514:53;;16511:79;;;16570:18;;:::i;16927:262::-;17046:2;16688:19;;16974:3;16740:4;16731:14;;16891:24;16876:40;;17058:95;17180:2;17169:14;;16927:262;-1:-1:-1;;16927:262:69:o;17334:261::-;17453:1;16688:19;;17381:3;16740:4;16731:14;;17321:5;17306:21;;17464:95;17194:135;17676:146;17728:9;14280:4;14269:16;;17765:51;14211:76;17827:125;17906:39;17939:5;17906:39;:::i;17957:600::-;18295:2;18284:9;18277:21;18258:4;18321:49;18366:2;18355:9;18351:18;18321:49;:::i;:::-;18418:9;18410:6;18406:22;18401:2;18390:9;18386:18;18379:50;18446:37;18476:6;18446:37;:::i;:::-;18438:45;;;18492:59;18547:2;18536:9;18532:18;18524:6;18492:59;:::i;18727:262::-;18846:2;16688:19;;18774:3;16740:4;16731:14;;18697:18;18682:34;;18858:95;18562:160;19135:261;19254:1;16688:19;;19182:3;16740:4;16731:14;;19121:6;19106:22;;19265:95;18994:136;19745:590;20082:2;20071:9;20064:21;20045:4;20108:49;20153:2;20142:9;20138:18;20108:49;:::i;:::-;20205:9;20197:6;20193:22;20188:2;20177:9;20173:18;20166:50;20233:37;20263:6;20233:37;:::i;20340:447::-;20556:3;20541:19;;20569:37;20545:9;20588:6;20569:37;:::i;:::-;20615:46;20657:2;20646:9;20642:18;20634:6;20615:46;:::i;:::-;20670:45;20711:2;20700:9;20696:18;20688:6;20670:45;:::i;:::-;20724:57;20777:2;20766:9;20762:18;20754:6;20724:57;:::i;20792:238::-;20826:3;20859:20;20873:5;4641:1;4630:20;;4564:92;20859:20;20903:66;20894:7;20891:79;20888:105;;20973:18;;:::i;:::-;21013:1;21009:15;;20792:238;-1:-1:-1;;20792:238:69:o;21035:303::-;21073:4;21103:16;21117:1;4641;4630:20;;4564:92;21103:16;21151;21165:1;4641;4630:20;;4564:92;21151:16;21142:26;;;-1:-1:-1;21142:26:69;21218:66;21206:79;;21299:8;21287:21;;21203:106;21200:132;;;21312:18;;:::i;21343:297::-;21381:3;21410:16;21424:1;4641;4630:20;;4564:92;21410:16;21457;21471:1;4641;4630:20;;4564:92;21457:16;21448:26;;-1:-1:-1;21448:26:69;21521:8;21510:20;;21543:66;21532:78;;21507:104;21504:130;;;21614:18;;:::i;21726:250::-;21811:1;21821:113;21835:6;21832:1;21829:13;21821:113;;;21911:11;;;21905:18;21892:11;;;21885:39;21857:2;21850:10;21821:113;;;-1:-1:-1;;21968:1:69;21950:16;;21943:27;21726:250::o;22148:306::-;22190:3;22222:26;22242:5;21707:12;;21645:76;22222:26;16688:19;;;16740:4;16731:14;;22327:67;22387:6;22380:5;22373:4;22366:5;22362:16;22327:67;:::i;:::-;22070:66;22065:2;22054:14;;22050:87;22410:38;;22148:306;-1:-1:-1;;;;22148:306:69:o;22459:220::-;22608:2;22597:9;22590:21;22571:4;22628:45;22669:2;22658:9;22654:18;22646:6;22628:45;:::i;22684:308::-;22752:6;22805:2;22793:9;22784:7;22780:23;22776:32;22773:147;;;22831:79;588:6124:63;;;22831:79:69;22939:47;22978:7;22967:9;22939:47;:::i;22997:91::-;23061:20;23075:5;4641:1;4630:20;;4564:92;23093:268;23255:2;23240:18;;23267:35;23244:9;23284:6;23267:35;:::i;:::-;23311:44;23351:2;23340:9;23336:18;23328:6;23311:44;:::i;23471:1301::-;23535:48;23579:3;23571:5;23565:12;23535:48;:::i;:::-;23629:4;23622:5;23618:16;23612:23;23644:59;23697:4;23692:3;23688:14;23674:12;23644:59;:::i;:::-;;23751:4;23744:5;23740:16;23734:23;23766:59;23819:4;23814:3;23810:14;23794;23766:59;:::i;:::-;;23873:4;23866:5;23862:16;23856:23;23888:57;23939:4;23934:3;23930:14;23914;23888:57;:::i;:::-;;23993:4;23986:5;23982:16;23976:23;24008:57;24059:4;24054:3;24050:14;24034;24008:57;:::i;:::-;;24113:4;24106:5;24102:16;24096:23;24128:50;24172:4;24167:3;24163:14;24147;24128:50;:::i;:::-;;24226:4;24219:5;24215:16;24209:23;24241:50;24285:4;24280:3;24276:14;24260;24241:50;:::i;:::-;;24339:4;24332:5;24328:16;24322:23;24354:50;24398:4;24393:3;24389:14;24373;24354:50;:::i;:::-;;24452:6;24445:5;24441:18;24435:25;24469:52;24513:6;24508:3;24504:16;24488:14;24469:52;:::i;:::-;;24569:6;24562:5;24558:18;24552:25;24586:63;24641:6;24636:3;24632:16;24616:14;24586:63;:::i;:::-;;24697:6;24690:5;24686:18;24680:25;24714:52;24758:6;24753:3;24749:16;24733:14;24714:52;:::i;24777:258::-;24969:3;24954:19;;24982:47;24958:9;25011:6;24982:47;:::i;25040:122::-;7598:34;7587:46;;25115:22;7519:120;25167:176;25257:13;;;25304:33;25257:13;25304:33;:::i;25348:595::-;25445:6;25453;25461;25469;25522:3;25510:9;25501:7;25497:23;25493:33;25490:148;;;25549:79;588:6124:63;;;25549:79:69;25657:49;25698:7;25687:9;25657:49;:::i;:::-;25647:59;;25725:58;25775:7;25770:2;25759:9;25755:18;25725:58;:::i;:::-;25715:68;;25802:58;25852:7;25847:2;25836:9;25832:18;25802:58;:::i;:::-;25792:68;;25879:58;25929:7;25924:2;25913:9;25909:18;25879:58;:::i", "linkReferences": { "src/Util.sol": { @@ -359,7 +359,7 @@ "token0()": "0dfe1681", "token1()": "d21220a7" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MockEnv.sol\":\"MockEnv\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MockEnv.sol\":\"MockEnv\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -948,10 +948,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -984,10 +984,10 @@ }, "ast": { "absolutePath": "test/MockEnv.sol", - "id": 50070, + "id": 50067, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "Context": [ 43777 @@ -1068,10 +1068,10 @@ 45794 ], "MockERC20": [ - 46478 + 46475 ], "MockEnv": [ - 50069 + 50066 ], "PoolAddress": [ 45892 @@ -1080,7 +1080,7 @@ 45059 ], "Util": [ - 48904 + 48901 ], "console2": [ 29653 @@ -1090,7 +1090,7 @@ "src": "65:6648:63", "nodes": [ { - "id": 49447, + "id": 49444, "nodeType": "PragmaDirective", "src": "65:24:63", "nodes": [], @@ -1102,7 +1102,7 @@ ] }, { - "id": 49448, + "id": 49445, "nodeType": "PragmaDirective", "src": "90:19:63", "nodes": [], @@ -1112,129 +1112,129 @@ ] }, { - "id": 49449, + "id": 49446, "nodeType": "ImportDirective", "src": "111:32:63", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, + "scope": 50067, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 49450, + "id": 49447, "nodeType": "ImportDirective", "src": "144:30:63", "nodes": [], "absolutePath": "src/MockERC20.sol", "file": "../src/MockERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, - "sourceUnit": 46479, + "scope": 50067, + "sourceUnit": 46476, "symbolAliases": [], "unitAlias": "" }, { - "id": 49451, + "id": 49448, "nodeType": "ImportDirective", "src": "175:25:63", "nodes": [], "absolutePath": "src/Util.sol", "file": "../src/Util.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, - "sourceUnit": 48905, + "scope": 50067, + "sourceUnit": 48902, "symbolAliases": [], "unitAlias": "" }, { - "id": 49452, + "id": 49449, "nodeType": "ImportDirective", "src": "201:30:63", "nodes": [], "absolutePath": "src/Constants.sol", "file": "../src/Constants.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, - "sourceUnit": 46265, + "scope": 50067, + "sourceUnit": 46262, "symbolAliases": [], "unitAlias": "" }, { - "id": 49453, + "id": 49450, "nodeType": "ImportDirective", "src": "232:66:63", "nodes": [], "absolutePath": "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", "file": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, + "scope": 50067, "sourceUnit": 43895, "symbolAliases": [], "unitAlias": "" }, { - "id": 49454, + "id": 49451, "nodeType": "ImportDirective", "src": "299:59:63", "nodes": [], "absolutePath": "lib_uniswap/v3-core/contracts/libraries/TickMath.sol", "file": "@uniswap/v3-core/contracts/libraries/TickMath.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, + "scope": 50067, "sourceUnit": 45060, "symbolAliases": [], "unitAlias": "" }, { - "id": 49455, + "id": 49452, "nodeType": "ImportDirective", "src": "359:84:63", "nodes": [], "absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol", "file": "@uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, + "scope": 50067, "sourceUnit": 45294, "symbolAliases": [], "unitAlias": "" }, { - "id": 49456, + "id": 49453, "nodeType": "ImportDirective", "src": "444:68:63", "nodes": [], "absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol", "file": "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, + "scope": 50067, "sourceUnit": 45455, "symbolAliases": [], "unitAlias": "" }, { - "id": 49457, + "id": 49454, "nodeType": "ImportDirective", "src": "513:72:63", "nodes": [], "absolutePath": "lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol", "file": "@uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol", "nameLocation": "-1:-1:-1", - "scope": 50070, + "scope": 50067, "sourceUnit": 45795, "symbolAliases": [], "unitAlias": "" }, { - "id": 50069, + "id": 50066, "nodeType": "ContractDefinition", "src": "588:6124:63", "nodes": [ { - "id": 49462, + "id": 49459, "nodeType": "VariableDeclaration", "src": "612:87:63", "nodes": [], @@ -1243,7 +1243,7 @@ "mutability": "mutable", "name": "nfpm", "nameLocation": "647:4:63", - "scope": 50069, + "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1251,10 +1251,10 @@ "typeString": "contract INonfungiblePositionManager" }, "typeName": { - "id": 49459, + "id": 49456, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49458, + "id": 49455, "name": "INonfungiblePositionManager", "nameLocations": [ "612:27:63" @@ -1272,18 +1272,18 @@ }, "value": { "expression": { - "id": 49460, + "id": 49457, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "654:9:63", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 49461, + "id": 49458, "isConstant": false, "isLValue": false, "isPure": true, @@ -1301,7 +1301,7 @@ "visibility": "public" }, { - "id": 49467, + "id": 49464, "nodeType": "VariableDeclaration", "src": "705:58:63", "nodes": [], @@ -1310,7 +1310,7 @@ "mutability": "mutable", "name": "swapper", "nameLocation": "724:7:63", - "scope": 50069, + "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1318,10 +1318,10 @@ "typeString": "contract ISwapRouter" }, "typeName": { - "id": 49464, + "id": 49461, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49463, + "id": 49460, "name": "ISwapRouter", "nameLocations": [ "705:11:63" @@ -1339,18 +1339,18 @@ }, "value": { "expression": { - "id": 49465, + "id": 49462, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "734:9:63", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 49466, + "id": 49463, "isConstant": false, "isLValue": false, "isPure": true, @@ -1368,7 +1368,7 @@ "visibility": "public" }, { - "id": 49470, + "id": 49467, "nodeType": "VariableDeclaration", "src": "769:26:63", "nodes": [], @@ -1377,7 +1377,7 @@ "mutability": "mutable", "name": "pool", "nameLocation": "791:4:63", - "scope": 50069, + "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1385,10 +1385,10 @@ "typeString": "contract IUniswapV3Pool" }, "typeName": { - "id": 49469, + "id": 49466, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49468, + "id": 49465, "name": "IUniswapV3Pool", "nameLocations": [ "769:14:63" @@ -1407,7 +1407,7 @@ "visibility": "public" }, { - "id": 49472, + "id": 49469, "nodeType": "VariableDeclaration", "src": "801:17:63", "nodes": [], @@ -1416,7 +1416,7 @@ "mutability": "mutable", "name": "fee", "nameLocation": "815:3:63", - "scope": 50069, + "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1424,7 +1424,7 @@ "typeString": "uint24" }, "typeName": { - "id": 49471, + "id": 49468, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "801:6:63", @@ -1436,7 +1436,7 @@ "visibility": "public" }, { - "id": 49475, + "id": 49472, "nodeType": "VariableDeclaration", "src": "824:21:63", "nodes": [], @@ -1445,11 +1445,50 @@ "mutability": "mutable", "name": "COIN", "nameLocation": "841:4:63", - "scope": 50069, + "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", + "typeString": "contract MockERC20" + }, + "typeName": { + "id": 49471, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 49470, + "name": "MockERC20", + "nameLocations": [ + "824:9:63" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46475, + "src": "824:9:63" + }, + "referencedDeclaration": 46475, + "src": "824:9:63", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$46475", + "typeString": "contract MockERC20" + } + }, + "visibility": "public" + }, + { + "id": 49475, + "nodeType": "VariableDeclaration", + "src": "851:20:63", + "nodes": [], + "constant": false, + "functionSelector": "1bf6c21b", + "mutability": "mutable", + "name": "USD", + "nameLocation": "868:3:63", + "scope": 50066, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { @@ -1458,63 +1497,24 @@ "pathNode": { "id": 49473, "name": "MockERC20", - "nameLocations": [ - "824:9:63" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, - "src": "824:9:63" - }, - "referencedDeclaration": 46478, - "src": "824:9:63", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", - "typeString": "contract MockERC20" - } - }, - "visibility": "public" - }, - { - "id": 49478, - "nodeType": "VariableDeclaration", - "src": "851:20:63", - "nodes": [], - "constant": false, - "functionSelector": "1bf6c21b", - "mutability": "mutable", - "name": "USD", - "nameLocation": "868:3:63", - "scope": 50069, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", - "typeString": "contract MockERC20" - }, - "typeName": { - "id": 49477, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 49476, - "name": "MockERC20", "nameLocations": [ "851:9:63" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "851:9:63" }, - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "851:9:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "public" }, { - "id": 49480, + "id": 49477, "nodeType": "VariableDeclaration", "src": "877:21:63", "nodes": [], @@ -1523,7 +1523,7 @@ "mutability": "mutable", "name": "token0", "nameLocation": "892:6:63", - "scope": 50069, + "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1531,7 +1531,7 @@ "typeString": "address" }, "typeName": { - "id": 49479, + "id": 49476, "name": "address", "nodeType": "ElementaryTypeName", "src": "877:7:63", @@ -1544,7 +1544,7 @@ "visibility": "public" }, { - "id": 49482, + "id": 49479, "nodeType": "VariableDeclaration", "src": "961:21:63", "nodes": [], @@ -1553,7 +1553,7 @@ "mutability": "mutable", "name": "token1", "nameLocation": "976:6:63", - "scope": 50069, + "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1561,7 +1561,7 @@ "typeString": "address" }, "typeName": { - "id": 49481, + "id": 49478, "name": "address", "nodeType": "ElementaryTypeName", "src": "961:7:63", @@ -1574,7 +1574,7 @@ "visibility": "public" }, { - "id": 49484, + "id": 49481, "nodeType": "VariableDeclaration", "src": "988:20:63", "nodes": [], @@ -1583,7 +1583,7 @@ "mutability": "mutable", "name": "inverted", "nameLocation": "1000:8:63", - "scope": 50069, + "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1591,7 +1591,7 @@ "typeString": "bool" }, "typeName": { - "id": 49483, + "id": 49480, "name": "bool", "nodeType": "ElementaryTypeName", "src": "988:4:63", @@ -1603,32 +1603,32 @@ "visibility": "public" }, { - "id": 49634, + "id": 49631, "nodeType": "FunctionDefinition", "src": "1349:1125:63", "nodes": [], "body": { - "id": 49633, + "id": 49630, "nodeType": "Block", "src": "1372:1102:63", "nodes": [], "statements": [ { "expression": { - "id": 49495, + "id": 49492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49487, + "id": 49484, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "1382:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, @@ -1638,7 +1638,7 @@ "arguments": [ { "hexValue": "4d6f636b20457468657265756d2048617264666f726b", - "id": 49491, + "id": 49488, "isConstant": false, "isLValue": false, "isPure": true, @@ -1654,7 +1654,7 @@ }, { "hexValue": "4d4548", - "id": 49492, + "id": 49489, "isConstant": false, "isLValue": false, "isPure": true, @@ -1670,7 +1670,7 @@ }, { "hexValue": "3138", - "id": 49493, + "id": 49490, "isConstant": false, "isLValue": false, "isPure": true, @@ -1700,7 +1700,7 @@ "typeString": "int_const 18" } ], - "id": 49490, + "id": 49487, "isConstant": false, "isLValue": false, "isPure": false, @@ -1708,31 +1708,31 @@ "nodeType": "NewExpression", "src": "1389:13:63", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_MockERC20_$46478_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_MockERC20_$46475_$", "typeString": "function (string memory,string memory,uint8) returns (contract MockERC20)" }, "typeName": { - "id": 49489, + "id": 49486, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49488, + "id": 49485, "name": "MockERC20", "nameLocations": [ "1393:9:63" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "1393:9:63" }, - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "1393:9:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } }, - "id": 49494, + "id": 49491, "isConstant": false, "isLValue": false, "isPure": false, @@ -1744,17 +1744,17 @@ "src": "1389:50:63", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "src": "1382:57:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 49496, + "id": 49493, "nodeType": "ExpressionStatement", "src": "1382:57:63" }, @@ -1763,7 +1763,7 @@ "arguments": [ { "hexValue": "4d4548", - "id": 49500, + "id": 49497, "isConstant": false, "isLValue": false, "isPure": true, @@ -1786,7 +1786,7 @@ } ], "expression": { - "id": 49497, + "id": 49494, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1797,7 +1797,7 @@ "typeString": "type(library console2)" } }, - "id": 49499, + "id": 49496, "isConstant": false, "isLValue": false, "isPure": false, @@ -1812,7 +1812,7 @@ "typeString": "function (string memory) pure" } }, - "id": 49501, + "id": 49498, "isConstant": false, "isLValue": false, "isPure": false, @@ -1828,7 +1828,7 @@ "typeString": "tuple()" } }, - "id": 49502, + "id": 49499, "nodeType": "ExpressionStatement", "src": "1449:19:63" }, @@ -1838,14 +1838,14 @@ { "arguments": [ { - "id": 49508, + "id": 49505, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "1499:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -1853,11 +1853,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49507, + "id": 49504, "isConstant": false, "isLValue": false, "isPure": true, @@ -1869,14 +1869,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49506, + "id": 49503, "name": "address", "nodeType": "ElementaryTypeName", "src": "1491:7:63", "typeDescriptions": {} } }, - "id": 49509, + "id": 49506, "isConstant": false, "isLValue": false, "isPure": false, @@ -1901,7 +1901,7 @@ } ], "expression": { - "id": 49503, + "id": 49500, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1912,7 +1912,7 @@ "typeString": "type(library console2)" } }, - "id": 49505, + "id": 49502, "isConstant": false, "isLValue": false, "isPure": false, @@ -1927,7 +1927,7 @@ "typeString": "function (address) pure" } }, - "id": 49510, + "id": 49507, "isConstant": false, "isLValue": false, "isPure": false, @@ -1943,26 +1943,26 @@ "typeString": "tuple()" } }, - "id": 49511, + "id": 49508, "nodeType": "ExpressionStatement", "src": "1478:27:63" }, { "expression": { - "id": 49520, + "id": 49517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49512, + "id": 49509, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "1515:3:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, @@ -1972,7 +1972,7 @@ "arguments": [ { "hexValue": "4a6f6b652043757272656e6379205844", - "id": 49516, + "id": 49513, "isConstant": false, "isLValue": false, "isPure": true, @@ -1988,7 +1988,7 @@ }, { "hexValue": "55535844", - "id": 49517, + "id": 49514, "isConstant": false, "isLValue": false, "isPure": true, @@ -2004,7 +2004,7 @@ }, { "hexValue": "36", - "id": 49518, + "id": 49515, "isConstant": false, "isLValue": false, "isPure": true, @@ -2034,7 +2034,7 @@ "typeString": "int_const 6" } ], - "id": 49515, + "id": 49512, "isConstant": false, "isLValue": false, "isPure": false, @@ -2042,31 +2042,31 @@ "nodeType": "NewExpression", "src": "1521:13:63", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_MockERC20_$46478_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_MockERC20_$46475_$", "typeString": "function (string memory,string memory,uint8) returns (contract MockERC20)" }, "typeName": { - "id": 49514, + "id": 49511, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49513, + "id": 49510, "name": "MockERC20", "nameLocations": [ "1525:9:63" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "1525:9:63" }, - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "1525:9:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } }, - "id": 49519, + "id": 49516, "isConstant": false, "isLValue": false, "isPure": false, @@ -2078,17 +2078,17 @@ "src": "1521:44:63", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "src": "1515:50:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 49521, + "id": 49518, "nodeType": "ExpressionStatement", "src": "1515:50:63" }, @@ -2097,7 +2097,7 @@ "arguments": [ { "hexValue": "55535844", - "id": 49525, + "id": 49522, "isConstant": false, "isLValue": false, "isPure": true, @@ -2120,7 +2120,7 @@ } ], "expression": { - "id": 49522, + "id": 49519, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2131,7 +2131,7 @@ "typeString": "type(library console2)" } }, - "id": 49524, + "id": 49521, "isConstant": false, "isLValue": false, "isPure": false, @@ -2146,7 +2146,7 @@ "typeString": "function (string memory) pure" } }, - "id": 49526, + "id": 49523, "isConstant": false, "isLValue": false, "isPure": false, @@ -2162,7 +2162,7 @@ "typeString": "tuple()" } }, - "id": 49527, + "id": 49524, "nodeType": "ExpressionStatement", "src": "1575:20:63" }, @@ -2172,14 +2172,14 @@ { "arguments": [ { - "id": 49533, + "id": 49530, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "1626:3:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -2187,11 +2187,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49532, + "id": 49529, "isConstant": false, "isLValue": false, "isPure": true, @@ -2203,14 +2203,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49531, + "id": 49528, "name": "address", "nodeType": "ElementaryTypeName", "src": "1618:7:63", "typeDescriptions": {} } }, - "id": 49534, + "id": 49531, "isConstant": false, "isLValue": false, "isPure": false, @@ -2235,7 +2235,7 @@ } ], "expression": { - "id": 49528, + "id": 49525, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2246,7 +2246,7 @@ "typeString": "type(library console2)" } }, - "id": 49530, + "id": 49527, "isConstant": false, "isLValue": false, "isPure": false, @@ -2261,7 +2261,7 @@ "typeString": "function (address) pure" } }, - "id": 49535, + "id": 49532, "isConstant": false, "isLValue": false, "isPure": false, @@ -2277,23 +2277,23 @@ "typeString": "tuple()" } }, - "id": 49536, + "id": 49533, "nodeType": "ExpressionStatement", "src": "1605:26:63" }, { "expression": { - "id": 49539, + "id": 49536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49537, + "id": 49534, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49472, + "referencedDeclaration": 49469, "src": "1641:3:63", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -2304,7 +2304,7 @@ "operator": "=", "rightHandSide": { "hexValue": "353030", - "id": 49538, + "id": 49535, "isConstant": false, "isLValue": false, "isPure": true, @@ -2324,23 +2324,23 @@ "typeString": "uint24" } }, - "id": 49540, + "id": 49537, "nodeType": "ExpressionStatement", "src": "1641:9:63" }, { "expression": { - "id": 49551, + "id": 49548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49541, + "id": 49538, "name": "inverted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49484, + "referencedDeclaration": 49481, "src": "1660:8:63", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2354,7 +2354,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 49550, + "id": 49547, "isConstant": false, "isLValue": false, "isPure": false, @@ -2362,14 +2362,14 @@ "leftExpression": { "arguments": [ { - "id": 49544, + "id": 49541, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "1679:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -2377,11 +2377,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49543, + "id": 49540, "isConstant": false, "isLValue": false, "isPure": true, @@ -2393,14 +2393,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49542, + "id": 49539, "name": "address", "nodeType": "ElementaryTypeName", "src": "1671:7:63", "typeDescriptions": {} } }, - "id": 49545, + "id": 49542, "isConstant": false, "isLValue": false, "isPure": false, @@ -2421,14 +2421,14 @@ "rightExpression": { "arguments": [ { - "id": 49548, + "id": 49545, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "1695:3:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -2436,11 +2436,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49547, + "id": 49544, "isConstant": false, "isLValue": false, "isPure": true, @@ -2452,14 +2452,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49546, + "id": 49543, "name": "address", "nodeType": "ElementaryTypeName", "src": "1687:7:63", "typeDescriptions": {} } }, - "id": 49549, + "id": 49546, "isConstant": false, "isLValue": false, "isPure": false, @@ -2487,23 +2487,23 @@ "typeString": "bool" } }, - "id": 49552, + "id": 49549, "nodeType": "ExpressionStatement", "src": "1660:39:63" }, { "expression": { - "id": 49564, + "id": 49561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49553, + "id": 49550, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49480, + "referencedDeclaration": 49477, "src": "1709:6:63", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2514,11 +2514,11 @@ "operator": "=", "rightHandSide": { "condition": { - "id": 49554, + "id": 49551, "name": "inverted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49484, + "referencedDeclaration": 49481, "src": "1718:8:63", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2528,14 +2528,14 @@ "falseExpression": { "arguments": [ { - "id": 49561, + "id": 49558, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "1752:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -2543,11 +2543,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49560, + "id": 49557, "isConstant": false, "isLValue": false, "isPure": true, @@ -2559,14 +2559,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49559, + "id": 49556, "name": "address", "nodeType": "ElementaryTypeName", "src": "1744:7:63", "typeDescriptions": {} } }, - "id": 49562, + "id": 49559, "isConstant": false, "isLValue": false, "isPure": false, @@ -2582,7 +2582,7 @@ "typeString": "address" } }, - "id": 49563, + "id": 49560, "isConstant": false, "isLValue": false, "isPure": false, @@ -2592,14 +2592,14 @@ "trueExpression": { "arguments": [ { - "id": 49557, + "id": 49554, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "1737:3:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -2607,11 +2607,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49556, + "id": 49553, "isConstant": false, "isLValue": false, "isPure": true, @@ -2623,14 +2623,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49555, + "id": 49552, "name": "address", "nodeType": "ElementaryTypeName", "src": "1729:7:63", "typeDescriptions": {} } }, - "id": 49558, + "id": 49555, "isConstant": false, "isLValue": false, "isPure": false, @@ -2657,23 +2657,23 @@ "typeString": "address" } }, - "id": 49565, + "id": 49562, "nodeType": "ExpressionStatement", "src": "1709:48:63" }, { "expression": { - "id": 49577, + "id": 49574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49566, + "id": 49563, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49482, + "referencedDeclaration": 49479, "src": "1767:6:63", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2684,11 +2684,11 @@ "operator": "=", "rightHandSide": { "condition": { - "id": 49567, + "id": 49564, "name": "inverted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49484, + "referencedDeclaration": 49481, "src": "1776:8:63", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2698,14 +2698,14 @@ "falseExpression": { "arguments": [ { - "id": 49574, + "id": 49571, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "1811:3:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -2713,11 +2713,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49573, + "id": 49570, "isConstant": false, "isLValue": false, "isPure": true, @@ -2729,14 +2729,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49572, + "id": 49569, "name": "address", "nodeType": "ElementaryTypeName", "src": "1803:7:63", "typeDescriptions": {} } }, - "id": 49575, + "id": 49572, "isConstant": false, "isLValue": false, "isPure": false, @@ -2752,7 +2752,7 @@ "typeString": "address" } }, - "id": 49576, + "id": 49573, "isConstant": false, "isLValue": false, "isPure": false, @@ -2762,14 +2762,14 @@ "trueExpression": { "arguments": [ { - "id": 49570, + "id": 49567, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "1795:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -2777,11 +2777,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49569, + "id": 49566, "isConstant": false, "isLValue": false, "isPure": true, @@ -2793,14 +2793,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49568, + "id": 49565, "name": "address", "nodeType": "ElementaryTypeName", "src": "1787:7:63", "typeDescriptions": {} } }, - "id": 49571, + "id": 49568, "isConstant": false, "isLValue": false, "isPure": false, @@ -2827,23 +2827,23 @@ "typeString": "address" } }, - "id": 49578, + "id": 49575, "nodeType": "ExpressionStatement", "src": "1767:48:63" }, { "assignments": [ - 49580 + 49577 ], "declarations": [ { "constant": false, - "id": 49580, + "id": 49577, "mutability": "mutable", "name": "initialPrice", "nameLocation": "1833:12:63", "nodeType": "VariableDeclaration", - "scope": 49633, + "scope": 49630, "src": "1825:20:63", "stateVariable": false, "storageLocation": "default", @@ -2852,7 +2852,7 @@ "typeString": "uint160" }, "typeName": { - "id": 49579, + "id": 49576, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "1825:7:63", @@ -2864,14 +2864,14 @@ "visibility": "internal" } ], - "id": 49591, + "id": 49588, "initialValue": { "condition": { - "id": 49581, + "id": 49578, "name": "inverted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49484, + "referencedDeclaration": 49481, "src": "1848:8:63", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2882,7 +2882,7 @@ "arguments": [ { "hexValue": "3739323238313632353134323634333337353933353433", - "id": 49588, + "id": 49585, "isConstant": false, "isLValue": false, "isPure": true, @@ -2904,7 +2904,7 @@ "typeString": "int_const 79228162514264337593543" } ], - "id": 49587, + "id": 49584, "isConstant": false, "isLValue": false, "isPure": true, @@ -2916,14 +2916,14 @@ "typeString": "type(uint160)" }, "typeName": { - "id": 49586, + "id": 49583, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "1906:7:63", "typeDescriptions": {} } }, - "id": 49589, + "id": 49586, "isConstant": false, "isLValue": false, "isPure": true, @@ -2939,7 +2939,7 @@ "typeString": "uint160" } }, - "id": 49590, + "id": 49587, "isConstant": false, "isLValue": false, "isPure": false, @@ -2950,7 +2950,7 @@ "arguments": [ { "hexValue": "3739323238313632353134323634333337353933353433393530333336303030303030", - "id": 49584, + "id": 49581, "isConstant": false, "isLValue": false, "isPure": true, @@ -2972,7 +2972,7 @@ "typeString": "int_const 7922...(27 digits omitted)...0000" } ], - "id": 49583, + "id": 49580, "isConstant": false, "isLValue": false, "isPure": true, @@ -2984,14 +2984,14 @@ "typeString": "type(uint160)" }, "typeName": { - "id": 49582, + "id": 49579, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "1859:7:63", "typeDescriptions": {} } }, - "id": 49585, + "id": 49582, "isConstant": false, "isLValue": false, "isPure": true, @@ -3020,7 +3020,7 @@ "arguments": [ { "hexValue": "6966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726c", - "id": 49595, + "id": 49592, "isConstant": false, "isLValue": false, "isPure": true, @@ -3043,7 +3043,7 @@ } ], "expression": { - "id": 49592, + "id": 49589, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3054,7 +3054,7 @@ "typeString": "type(library console2)" } }, - "id": 49594, + "id": 49591, "isConstant": false, "isLValue": false, "isPure": false, @@ -3069,7 +3069,7 @@ "typeString": "function (string memory) pure" } }, - "id": 49596, + "id": 49593, "isConstant": false, "isLValue": false, "isPure": false, @@ -3085,23 +3085,23 @@ "typeString": "tuple()" } }, - "id": 49597, + "id": 49594, "nodeType": "ExpressionStatement", "src": "1957:99:63" }, { "expression": { - "id": 49608, + "id": 49605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49598, + "id": 49595, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49470, + "referencedDeclaration": 49467, "src": "2166:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", @@ -3115,11 +3115,11 @@ { "arguments": [ { - "id": 49602, + "id": 49599, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49480, + "referencedDeclaration": 49477, "src": "2228:6:63", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3127,11 +3127,11 @@ } }, { - "id": 49603, + "id": 49600, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49482, + "referencedDeclaration": 49479, "src": "2236:6:63", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3139,11 +3139,11 @@ } }, { - "id": 49604, + "id": 49601, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49472, + "referencedDeclaration": 49469, "src": "2244:3:63", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -3151,11 +3151,11 @@ } }, { - "id": 49605, + "id": 49602, "name": "initialPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49580, + "referencedDeclaration": 49577, "src": "2249:12:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -3183,18 +3183,18 @@ } ], "expression": { - "id": 49600, + "id": 49597, "name": "nfpm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49462, + "referencedDeclaration": 49459, "src": "2188:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } }, - "id": 49601, + "id": 49598, "isConstant": false, "isLValue": false, "isPure": false, @@ -3209,7 +3209,7 @@ "typeString": "function (address,address,uint24,uint160) payable external returns (address)" } }, - "id": 49606, + "id": 49603, "isConstant": false, "isLValue": false, "isPure": false, @@ -3233,7 +3233,7 @@ "typeString": "address" } ], - "id": 49599, + "id": 49596, "name": "IUniswapV3Pool", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3244,7 +3244,7 @@ "typeString": "type(contract IUniswapV3Pool)" } }, - "id": 49607, + "id": 49604, "isConstant": false, "isLValue": false, "isPure": false, @@ -3266,7 +3266,7 @@ "typeString": "contract IUniswapV3Pool" } }, - "id": 49609, + "id": 49606, "nodeType": "ExpressionStatement", "src": "2166:97:63" }, @@ -3275,7 +3275,7 @@ "arguments": [ { "hexValue": "763320706f6f6c", - "id": 49613, + "id": 49610, "isConstant": false, "isLValue": false, "isPure": true, @@ -3298,7 +3298,7 @@ } ], "expression": { - "id": 49610, + "id": 49607, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3309,7 +3309,7 @@ "typeString": "type(library console2)" } }, - "id": 49612, + "id": 49609, "isConstant": false, "isLValue": false, "isPure": false, @@ -3324,7 +3324,7 @@ "typeString": "function (string memory) pure" } }, - "id": 49614, + "id": 49611, "isConstant": false, "isLValue": false, "isPure": false, @@ -3340,7 +3340,7 @@ "typeString": "tuple()" } }, - "id": 49615, + "id": 49612, "nodeType": "ExpressionStatement", "src": "2273:23:63" }, @@ -3350,11 +3350,11 @@ { "arguments": [ { - "id": 49621, + "id": 49618, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49470, + "referencedDeclaration": 49467, "src": "2327:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", @@ -3369,7 +3369,7 @@ "typeString": "contract IUniswapV3Pool" } ], - "id": 49620, + "id": 49617, "isConstant": false, "isLValue": false, "isPure": true, @@ -3381,14 +3381,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49619, + "id": 49616, "name": "address", "nodeType": "ElementaryTypeName", "src": "2319:7:63", "typeDescriptions": {} } }, - "id": 49622, + "id": 49619, "isConstant": false, "isLValue": false, "isPure": false, @@ -3413,7 +3413,7 @@ } ], "expression": { - "id": 49616, + "id": 49613, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3424,7 +3424,7 @@ "typeString": "type(library console2)" } }, - "id": 49618, + "id": 49615, "isConstant": false, "isLValue": false, "isPure": false, @@ -3439,7 +3439,7 @@ "typeString": "function (address) pure" } }, - "id": 49623, + "id": 49620, "isConstant": false, "isLValue": false, "isPure": false, @@ -3455,7 +3455,7 @@ "typeString": "tuple()" } }, - "id": 49624, + "id": 49621, "nodeType": "ExpressionStatement", "src": "2306:27:63" }, @@ -3464,7 +3464,7 @@ "arguments": [ { "hexValue": "31305f3030305f303030", - "id": 49626, + "id": 49623, "isConstant": false, "isLValue": false, "isPure": true, @@ -3480,7 +3480,7 @@ }, { "expression": { - "id": 49627, + "id": 49624, "name": "TickMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3491,7 +3491,7 @@ "typeString": "type(library TickMath)" } }, - "id": 49628, + "id": 49625, "isConstant": false, "isLValue": false, "isPure": true, @@ -3508,7 +3508,7 @@ }, { "expression": { - "id": 49629, + "id": 49626, "name": "TickMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3519,7 +3519,7 @@ "typeString": "type(library TickMath)" } }, - "id": 49630, + "id": 49627, "isConstant": false, "isLValue": false, "isPure": true, @@ -3550,22 +3550,22 @@ "typeString": "int24" } ], - "id": 49625, + "id": 49622, "name": "stake", "nodeType": "Identifier", "overloadedDeclarations": [ - 49664, - 49701, - 49728 + 49661, + 49698, + 49725 ], - "referencedDeclaration": 49701, + "referencedDeclaration": 49698, "src": "2412:5:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_int24_$_t_int24_$returns$__$", "typeString": "function (uint256,int24,int24)" } }, - "id": 49631, + "id": 49628, "isConstant": false, "isLValue": false, "isPure": false, @@ -3581,7 +3581,7 @@ "typeString": "tuple()" } }, - "id": 49632, + "id": 49629, "nodeType": "ExpressionStatement", "src": "2412:55:63" } @@ -3594,29 +3594,29 @@ "name": "init", "nameLocation": "1358:4:63", "parameters": { - "id": 49485, + "id": 49482, "nodeType": "ParameterList", "parameters": [], "src": "1362:2:63" }, "returnParameters": { - "id": 49486, + "id": 49483, "nodeType": "ParameterList", "parameters": [], "src": "1372:0:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49664, + "id": 49661, "nodeType": "FunctionDefinition", "src": "2481:179:63", "nodes": [], "body": { - "id": 49663, + "id": 49660, "nodeType": "Block", "src": "2532:128:63", "nodes": [], @@ -3629,17 +3629,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 49644, + "id": 49641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 49642, + "id": 49639, "name": "width", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49638, + "referencedDeclaration": 49635, "src": "2550:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -3650,7 +3650,7 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 49643, + "id": 49640, "isConstant": false, "isLValue": false, "isPure": true, @@ -3678,7 +3678,7 @@ "typeString": "bool" } ], - "id": 49641, + "id": 49638, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3692,7 +3692,7 @@ "typeString": "function (bool) pure" } }, - "id": 49645, + "id": 49642, "isConstant": false, "isLValue": false, "isPure": false, @@ -3708,14 +3708,14 @@ "typeString": "tuple()" } }, - "id": 49646, + "id": 49643, "nodeType": "ExpressionStatement", "src": "2542:16:63" }, { "assignments": [ null, - 49648, + 49645, null, null, null, @@ -3726,12 +3726,12 @@ null, { "constant": false, - "id": 49648, + "id": 49645, "mutability": "mutable", "name": "tick", "nameLocation": "2577:4:63", "nodeType": "VariableDeclaration", - "scope": 49663, + "scope": 49660, "src": "2571:10:63", "stateVariable": false, "storageLocation": "default", @@ -3740,7 +3740,7 @@ "typeString": "int24" }, "typeName": { - "id": 49647, + "id": 49644, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2571:5:63", @@ -3757,24 +3757,24 @@ null, null ], - "id": 49652, + "id": 49649, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 49649, + "id": 49646, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49470, + "referencedDeclaration": 49467, "src": "2594:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, - "id": 49650, + "id": 49647, "isConstant": false, "isLValue": false, "isPure": false, @@ -3789,7 +3789,7 @@ "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" } }, - "id": 49651, + "id": 49648, "isConstant": false, "isLValue": false, "isPure": false, @@ -3812,11 +3812,11 @@ "expression": { "arguments": [ { - "id": 49654, + "id": 49651, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49636, + "referencedDeclaration": 49633, "src": "2622:6:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3828,17 +3828,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 49657, + "id": 49654, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 49655, + "id": 49652, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49648, + "referencedDeclaration": 49645, "src": "2630:4:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -3848,11 +3848,11 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 49656, + "id": 49653, "name": "width", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49638, + "referencedDeclaration": 49635, "src": "2635:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -3870,17 +3870,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 49660, + "id": 49657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 49658, + "id": 49655, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49648, + "referencedDeclaration": 49645, "src": "2642:4:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -3890,11 +3890,11 @@ "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { - "id": 49659, + "id": 49656, "name": "width", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49638, + "referencedDeclaration": 49635, "src": "2647:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -3923,22 +3923,22 @@ "typeString": "int24" } ], - "id": 49653, + "id": 49650, "name": "stake", "nodeType": "Identifier", "overloadedDeclarations": [ - 49664, - 49701, - 49728 + 49661, + 49698, + 49725 ], - "referencedDeclaration": 49701, + "referencedDeclaration": 49698, "src": "2616:5:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_int24_$_t_int24_$returns$__$", "typeString": "function (uint256,int24,int24)" } }, - "id": 49661, + "id": 49658, "isConstant": false, "isLValue": false, "isPure": false, @@ -3954,7 +3954,7 @@ "typeString": "tuple()" } }, - "id": 49662, + "id": 49659, "nodeType": "ExpressionStatement", "src": "2616:37:63" } @@ -3967,17 +3967,17 @@ "name": "stake", "nameLocation": "2490:5:63", "parameters": { - "id": 49639, + "id": 49636, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49636, + "id": 49633, "mutability": "mutable", "name": "amount", "nameLocation": "2504:6:63", "nodeType": "VariableDeclaration", - "scope": 49664, + "scope": 49661, "src": "2496:14:63", "stateVariable": false, "storageLocation": "default", @@ -3986,7 +3986,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49635, + "id": 49632, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2496:7:63", @@ -3999,12 +3999,12 @@ }, { "constant": false, - "id": 49638, + "id": 49635, "mutability": "mutable", "name": "width", "nameLocation": "2518:5:63", "nodeType": "VariableDeclaration", - "scope": 49664, + "scope": 49661, "src": "2512:11:63", "stateVariable": false, "storageLocation": "default", @@ -4013,7 +4013,7 @@ "typeString": "int24" }, "typeName": { - "id": 49637, + "id": 49634, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2512:5:63", @@ -4028,40 +4028,40 @@ "src": "2495:29:63" }, "returnParameters": { - "id": 49640, + "id": 49637, "nodeType": "ParameterList", "parameters": [], "src": "2532:0:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49701, + "id": 49698, "nodeType": "FunctionDefinition", "src": "2667:221:63", "nodes": [], "body": { - "id": 49700, + "id": 49697, "nodeType": "Block", "src": "2731:157:63", "nodes": [], "statements": [ { "assignments": [ - 49674 + 49671 ], "declarations": [ { "constant": false, - "id": 49674, + "id": 49671, "mutability": "mutable", "name": "coinAmount", "nameLocation": "2749:10:63", "nodeType": "VariableDeclaration", - "scope": 49700, + "scope": 49697, "src": "2741:18:63", "stateVariable": false, "storageLocation": "default", @@ -4070,7 +4070,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49673, + "id": 49670, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2741:7:63", @@ -4082,13 +4082,13 @@ "visibility": "internal" } ], - "id": 49682, + "id": 49679, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 49681, + "id": 49678, "isConstant": false, "isLValue": false, "isPure": false, @@ -4098,17 +4098,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 49679, + "id": 49676, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 49675, + "id": 49672, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49666, + "referencedDeclaration": 49663, "src": "2762:6:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4122,14 +4122,14 @@ "typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000" }, - "id": 49678, + "id": 49675, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 49676, + "id": 49673, "isConstant": false, "isLValue": false, "isPure": true, @@ -4147,7 +4147,7 @@ "operator": "**", "rightExpression": { "hexValue": "3138", - "id": 49677, + "id": 49674, "isConstant": false, "isLValue": false, "isPure": true, @@ -4177,7 +4177,7 @@ "operator": "/", "rightExpression": { "hexValue": "32", - "id": 49680, + "id": 49677, "isConstant": false, "isLValue": false, "isPure": true, @@ -4202,17 +4202,17 @@ }, { "assignments": [ - 49684 + 49681 ], "declarations": [ { "constant": false, - "id": 49684, + "id": 49681, "mutability": "mutable", "name": "usdAmount", "nameLocation": "2799:9:63", "nodeType": "VariableDeclaration", - "scope": 49700, + "scope": 49697, "src": "2791:17:63", "stateVariable": false, "storageLocation": "default", @@ -4221,7 +4221,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49683, + "id": 49680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2791:7:63", @@ -4233,13 +4233,13 @@ "visibility": "internal" } ], - "id": 49692, + "id": 49689, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 49691, + "id": 49688, "isConstant": false, "isLValue": false, "isPure": false, @@ -4249,17 +4249,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 49689, + "id": 49686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 49685, + "id": 49682, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49666, + "referencedDeclaration": 49663, "src": "2811:6:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4273,14 +4273,14 @@ "typeIdentifier": "t_rational_1000000_by_1", "typeString": "int_const 1000000" }, - "id": 49688, + "id": 49685, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 49686, + "id": 49683, "isConstant": false, "isLValue": false, "isPure": true, @@ -4298,7 +4298,7 @@ "operator": "**", "rightExpression": { "hexValue": "36", - "id": 49687, + "id": 49684, "isConstant": false, "isLValue": false, "isPure": true, @@ -4328,7 +4328,7 @@ "operator": "/", "rightExpression": { "hexValue": "32", - "id": 49690, + "id": 49687, "isConstant": false, "isLValue": false, "isPure": true, @@ -4355,11 +4355,11 @@ "expression": { "arguments": [ { - "id": 49694, + "id": 49691, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49674, + "referencedDeclaration": 49671, "src": "2845:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4367,11 +4367,11 @@ } }, { - "id": 49695, + "id": 49692, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49684, + "referencedDeclaration": 49681, "src": "2857:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4379,11 +4379,11 @@ } }, { - "id": 49696, + "id": 49693, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49668, + "referencedDeclaration": 49665, "src": "2868:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -4391,11 +4391,11 @@ } }, { - "id": 49697, + "id": 49694, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49670, + "referencedDeclaration": 49667, "src": "2875:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -4422,22 +4422,22 @@ "typeString": "int24" } ], - "id": 49693, + "id": 49690, "name": "stake", "nodeType": "Identifier", "overloadedDeclarations": [ - 49664, - 49701, - 49728 + 49661, + 49698, + 49725 ], - "referencedDeclaration": 49728, + "referencedDeclaration": 49725, "src": "2839:5:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "function (uint256,uint256,int24,int24) returns (uint256,uint128,uint256,uint256)" } }, - "id": 49698, + "id": 49695, "isConstant": false, "isLValue": false, "isPure": false, @@ -4453,7 +4453,7 @@ "typeString": "tuple(uint256,uint128,uint256,uint256)" } }, - "id": 49699, + "id": 49696, "nodeType": "ExpressionStatement", "src": "2839:42:63" } @@ -4466,17 +4466,17 @@ "name": "stake", "nameLocation": "2676:5:63", "parameters": { - "id": 49671, + "id": 49668, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49666, + "id": 49663, "mutability": "mutable", "name": "amount", "nameLocation": "2690:6:63", "nodeType": "VariableDeclaration", - "scope": 49701, + "scope": 49698, "src": "2682:14:63", "stateVariable": false, "storageLocation": "default", @@ -4485,7 +4485,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49665, + "id": 49662, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2682:7:63", @@ -4498,12 +4498,12 @@ }, { "constant": false, - "id": 49668, + "id": 49665, "mutability": "mutable", "name": "lower", "nameLocation": "2704:5:63", "nodeType": "VariableDeclaration", - "scope": 49701, + "scope": 49698, "src": "2698:11:63", "stateVariable": false, "storageLocation": "default", @@ -4512,7 +4512,7 @@ "typeString": "int24" }, "typeName": { - "id": 49667, + "id": 49664, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2698:5:63", @@ -4525,12 +4525,12 @@ }, { "constant": false, - "id": 49670, + "id": 49667, "mutability": "mutable", "name": "upper", "nameLocation": "2717:5:63", "nodeType": "VariableDeclaration", - "scope": 49701, + "scope": 49698, "src": "2711:11:63", "stateVariable": false, "storageLocation": "default", @@ -4539,7 +4539,7 @@ "typeString": "int24" }, "typeName": { - "id": 49669, + "id": 49666, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2711:5:63", @@ -4554,23 +4554,23 @@ "src": "2681:42:63" }, "returnParameters": { - "id": 49672, + "id": 49669, "nodeType": "ParameterList", "parameters": [], "src": "2731:0:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49728, + "id": 49725, "nodeType": "FunctionDefinition", "src": "2895:279:63", "nodes": [], "body": { - "id": 49727, + "id": 49724, "nodeType": "Block", "src": "3107:67:63", "nodes": [], @@ -4579,11 +4579,11 @@ "expression": { "arguments": [ { - "id": 49721, + "id": 49718, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49703, + "referencedDeclaration": 49700, "src": "3131:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4591,11 +4591,11 @@ } }, { - "id": 49722, + "id": 49719, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49705, + "referencedDeclaration": 49702, "src": "3143:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4603,11 +4603,11 @@ } }, { - "id": 49723, + "id": 49720, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49707, + "referencedDeclaration": 49704, "src": "3154:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -4615,11 +4615,11 @@ } }, { - "id": 49724, + "id": 49721, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49709, + "referencedDeclaration": 49706, "src": "3161:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -4646,18 +4646,18 @@ "typeString": "int24" } ], - "id": 49720, + "id": 49717, "name": "_stake", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49873, + "referencedDeclaration": 49870, "src": "3124:6:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "function (uint256,uint256,int24,int24) returns (uint256,uint128,uint256,uint256)" } }, - "id": 49725, + "id": 49722, "isConstant": false, "isLValue": false, "isPure": false, @@ -4673,8 +4673,8 @@ "typeString": "tuple(uint256,uint128,uint256,uint256)" } }, - "functionReturnParameters": 49719, - "id": 49726, + "functionReturnParameters": 49716, + "id": 49723, "nodeType": "Return", "src": "3117:50:63" } @@ -4687,17 +4687,17 @@ "name": "stake", "nameLocation": "2904:5:63", "parameters": { - "id": 49710, + "id": 49707, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49703, + "id": 49700, "mutability": "mutable", "name": "coinAmount", "nameLocation": "2918:10:63", "nodeType": "VariableDeclaration", - "scope": 49728, + "scope": 49725, "src": "2910:18:63", "stateVariable": false, "storageLocation": "default", @@ -4706,7 +4706,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49702, + "id": 49699, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2910:7:63", @@ -4719,12 +4719,12 @@ }, { "constant": false, - "id": 49705, + "id": 49702, "mutability": "mutable", "name": "usdAmount", "nameLocation": "2938:9:63", "nodeType": "VariableDeclaration", - "scope": 49728, + "scope": 49725, "src": "2930:17:63", "stateVariable": false, "storageLocation": "default", @@ -4733,7 +4733,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49704, + "id": 49701, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2930:7:63", @@ -4746,12 +4746,12 @@ }, { "constant": false, - "id": 49707, + "id": 49704, "mutability": "mutable", "name": "lower", "nameLocation": "2955:5:63", "nodeType": "VariableDeclaration", - "scope": 49728, + "scope": 49725, "src": "2949:11:63", "stateVariable": false, "storageLocation": "default", @@ -4760,7 +4760,7 @@ "typeString": "int24" }, "typeName": { - "id": 49706, + "id": 49703, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2949:5:63", @@ -4773,12 +4773,12 @@ }, { "constant": false, - "id": 49709, + "id": 49706, "mutability": "mutable", "name": "upper", "nameLocation": "2968:5:63", "nodeType": "VariableDeclaration", - "scope": 49728, + "scope": 49725, "src": "2962:11:63", "stateVariable": false, "storageLocation": "default", @@ -4787,7 +4787,7 @@ "typeString": "int24" }, "typeName": { - "id": 49708, + "id": 49705, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2962:5:63", @@ -4802,17 +4802,17 @@ "src": "2909:65:63" }, "returnParameters": { - "id": 49719, + "id": 49716, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49712, + "id": 49709, "mutability": "mutable", "name": "tokenId", "nameLocation": "3012:7:63", "nodeType": "VariableDeclaration", - "scope": 49728, + "scope": 49725, "src": "3004:15:63", "stateVariable": false, "storageLocation": "default", @@ -4821,7 +4821,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49711, + "id": 49708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3004:7:63", @@ -4834,12 +4834,12 @@ }, { "constant": false, - "id": 49714, + "id": 49711, "mutability": "mutable", "name": "liquidity", "nameLocation": "3037:9:63", "nodeType": "VariableDeclaration", - "scope": 49728, + "scope": 49725, "src": "3029:17:63", "stateVariable": false, "storageLocation": "default", @@ -4848,7 +4848,7 @@ "typeString": "uint128" }, "typeName": { - "id": 49713, + "id": 49710, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "3029:7:63", @@ -4861,12 +4861,12 @@ }, { "constant": false, - "id": 49716, + "id": 49713, "mutability": "mutable", "name": "amount0", "nameLocation": "3064:7:63", "nodeType": "VariableDeclaration", - "scope": 49728, + "scope": 49725, "src": "3056:15:63", "stateVariable": false, "storageLocation": "default", @@ -4875,7 +4875,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49715, + "id": 49712, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3056:7:63", @@ -4888,12 +4888,12 @@ }, { "constant": false, - "id": 49718, + "id": 49715, "mutability": "mutable", "name": "amount1", "nameLocation": "3089:7:63", "nodeType": "VariableDeclaration", - "scope": 49728, + "scope": 49725, "src": "3081:15:63", "stateVariable": false, "storageLocation": "default", @@ -4902,7 +4902,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49717, + "id": 49714, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3081:7:63", @@ -4916,18 +4916,18 @@ ], "src": "2994:108:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49873, + "id": 49870, "nodeType": "FunctionDefinition", "src": "3180:1597:63", "nodes": [], "body": { - "id": 49872, + "id": 49869, "nodeType": "Block", "src": "3394:1383:63", "nodes": [], @@ -4938,14 +4938,14 @@ { "arguments": [ { - "id": 49752, + "id": 49749, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3534:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } } @@ -4953,11 +4953,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } ], - "id": 49751, + "id": 49748, "isConstant": false, "isLValue": false, "isPure": true, @@ -4969,14 +4969,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49750, + "id": 49747, "name": "address", "nodeType": "ElementaryTypeName", "src": "3526:7:63", "typeDescriptions": {} } }, - "id": 49753, + "id": 49750, "isConstant": false, "isLValue": false, "isPure": false, @@ -4993,11 +4993,11 @@ } }, { - "id": 49754, + "id": 49751, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49730, + "referencedDeclaration": 49727, "src": "3541:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5017,18 +5017,18 @@ } ], "expression": { - "id": 49747, + "id": 49744, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "3516:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 49749, + "id": 49746, "isConstant": false, "isLValue": false, "isPure": false, @@ -5036,14 +5036,14 @@ "memberLocation": "3521:4:63", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "3516:9:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 49755, + "id": 49752, "isConstant": false, "isLValue": false, "isPure": false, @@ -5059,7 +5059,7 @@ "typeString": "tuple()" } }, - "id": 49756, + "id": 49753, "nodeType": "ExpressionStatement", "src": "3516:36:63" }, @@ -5069,11 +5069,11 @@ { "arguments": [ { - "id": 49762, + "id": 49759, "name": "nfpm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49462, + "referencedDeclaration": 49459, "src": "3583:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", @@ -5088,7 +5088,7 @@ "typeString": "contract INonfungiblePositionManager" } ], - "id": 49761, + "id": 49758, "isConstant": false, "isLValue": false, "isPure": true, @@ -5100,14 +5100,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49760, + "id": 49757, "name": "address", "nodeType": "ElementaryTypeName", "src": "3575:7:63", "typeDescriptions": {} } }, - "id": 49763, + "id": 49760, "isConstant": false, "isLValue": false, "isPure": false, @@ -5124,11 +5124,11 @@ } }, { - "id": 49764, + "id": 49761, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49730, + "referencedDeclaration": 49727, "src": "3590:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5148,18 +5148,18 @@ } ], "expression": { - "id": 49757, + "id": 49754, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "3562:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 49759, + "id": 49756, "isConstant": false, "isLValue": false, "isPure": false, @@ -5174,7 +5174,7 @@ "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 49765, + "id": 49762, "isConstant": false, "isLValue": false, "isPure": false, @@ -5190,7 +5190,7 @@ "typeString": "bool" } }, - "id": 49766, + "id": 49763, "nodeType": "ExpressionStatement", "src": "3562:39:63" }, @@ -5200,14 +5200,14 @@ { "arguments": [ { - "id": 49772, + "id": 49769, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3667:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } } @@ -5215,11 +5215,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } ], - "id": 49771, + "id": 49768, "isConstant": false, "isLValue": false, "isPure": true, @@ -5231,14 +5231,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49770, + "id": 49767, "name": "address", "nodeType": "ElementaryTypeName", "src": "3659:7:63", "typeDescriptions": {} } }, - "id": 49773, + "id": 49770, "isConstant": false, "isLValue": false, "isPure": false, @@ -5255,11 +5255,11 @@ } }, { - "id": 49774, + "id": 49771, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49732, + "referencedDeclaration": 49729, "src": "3674:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5279,18 +5279,18 @@ } ], "expression": { - "id": 49767, + "id": 49764, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "3650:3:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 49769, + "id": 49766, "isConstant": false, "isLValue": false, "isPure": false, @@ -5298,14 +5298,14 @@ "memberLocation": "3654:4:63", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "3650:8:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 49775, + "id": 49772, "isConstant": false, "isLValue": false, "isPure": false, @@ -5321,7 +5321,7 @@ "typeString": "tuple()" } }, - "id": 49776, + "id": 49773, "nodeType": "ExpressionStatement", "src": "3650:34:63" }, @@ -5331,11 +5331,11 @@ { "arguments": [ { - "id": 49782, + "id": 49779, "name": "nfpm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49462, + "referencedDeclaration": 49459, "src": "3714:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", @@ -5350,7 +5350,7 @@ "typeString": "contract INonfungiblePositionManager" } ], - "id": 49781, + "id": 49778, "isConstant": false, "isLValue": false, "isPure": true, @@ -5362,14 +5362,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49780, + "id": 49777, "name": "address", "nodeType": "ElementaryTypeName", "src": "3706:7:63", "typeDescriptions": {} } }, - "id": 49783, + "id": 49780, "isConstant": false, "isLValue": false, "isPure": false, @@ -5386,11 +5386,11 @@ } }, { - "id": 49784, + "id": 49781, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49732, + "referencedDeclaration": 49729, "src": "3721:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5410,18 +5410,18 @@ } ], "expression": { - "id": 49777, + "id": 49774, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "3694:3:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 49779, + "id": 49776, "isConstant": false, "isLValue": false, "isPure": false, @@ -5436,7 +5436,7 @@ "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 49785, + "id": 49782, "isConstant": false, "isLValue": false, "isPure": false, @@ -5452,23 +5452,23 @@ "typeString": "bool" } }, - "id": 49786, + "id": 49783, "nodeType": "ExpressionStatement", "src": "3694:37:63" }, { "assignments": [ - 49788 + 49785 ], "declarations": [ { "constant": false, - "id": 49788, + "id": 49785, "mutability": "mutable", "name": "ts", "nameLocation": "4235:2:63", "nodeType": "VariableDeclaration", - "scope": 49872, + "scope": 49869, "src": "4229:8:63", "stateVariable": false, "storageLocation": "default", @@ -5477,7 +5477,7 @@ "typeString": "int24" }, "typeName": { - "id": 49787, + "id": 49784, "name": "int24", "nodeType": "ElementaryTypeName", "src": "4229:5:63", @@ -5489,24 +5489,24 @@ "visibility": "internal" } ], - "id": 49792, + "id": 49789, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 49789, + "id": 49786, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49470, + "referencedDeclaration": 49467, "src": "4240:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, - "id": 49790, + "id": 49787, "isConstant": false, "isLValue": false, "isPure": false, @@ -5521,7 +5521,7 @@ "typeString": "function () view external returns (int24)" } }, - "id": 49791, + "id": 49788, "isConstant": false, "isLValue": false, "isPure": false, @@ -5542,17 +5542,17 @@ }, { "expression": { - "id": 49799, + "id": 49796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49793, + "id": 49790, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49734, + "referencedDeclaration": 49731, "src": "4268:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5564,11 +5564,11 @@ "rightHandSide": { "arguments": [ { - "id": 49796, + "id": 49793, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49734, + "referencedDeclaration": 49731, "src": "4291:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5576,11 +5576,11 @@ } }, { - "id": 49797, + "id": 49794, "name": "ts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49788, + "referencedDeclaration": 49785, "src": "4298:2:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5600,18 +5600,18 @@ } ], "expression": { - "id": 49794, + "id": 49791, "name": "Util", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48904, + "referencedDeclaration": 48901, "src": "4276:4:63", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Util_$48904_$", + "typeIdentifier": "t_type$_t_contract$_Util_$48901_$", "typeString": "type(library Util)" } }, - "id": 49795, + "id": 49792, "isConstant": false, "isLValue": false, "isPure": false, @@ -5619,14 +5619,14 @@ "memberLocation": "4281:9:63", "memberName": "roundTick", "nodeType": "MemberAccess", - "referencedDeclaration": 48903, + "referencedDeclaration": 48900, "src": "4276:14:63", "typeDescriptions": { "typeIdentifier": "t_function_delegatecall_pure$_t_int24_$_t_int24_$returns$_t_int24_$", "typeString": "function (int24,int24) pure returns (int24)" } }, - "id": 49798, + "id": 49795, "isConstant": false, "isLValue": false, "isPure": false, @@ -5648,23 +5648,23 @@ "typeString": "int24" } }, - "id": 49800, + "id": 49797, "nodeType": "ExpressionStatement", "src": "4268:33:63" }, { "expression": { - "id": 49807, + "id": 49804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49801, + "id": 49798, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49736, + "referencedDeclaration": 49733, "src": "4311:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5676,11 +5676,11 @@ "rightHandSide": { "arguments": [ { - "id": 49804, + "id": 49801, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49736, + "referencedDeclaration": 49733, "src": "4334:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5688,11 +5688,11 @@ } }, { - "id": 49805, + "id": 49802, "name": "ts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49788, + "referencedDeclaration": 49785, "src": "4341:2:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5712,18 +5712,18 @@ } ], "expression": { - "id": 49802, + "id": 49799, "name": "Util", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48904, + "referencedDeclaration": 48901, "src": "4319:4:63", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Util_$48904_$", + "typeIdentifier": "t_type$_t_contract$_Util_$48901_$", "typeString": "type(library Util)" } }, - "id": 49803, + "id": 49800, "isConstant": false, "isLValue": false, "isPure": false, @@ -5731,14 +5731,14 @@ "memberLocation": "4324:9:63", "memberName": "roundTick", "nodeType": "MemberAccess", - "referencedDeclaration": 48903, + "referencedDeclaration": 48900, "src": "4319:14:63", "typeDescriptions": { "typeIdentifier": "t_function_delegatecall_pure$_t_int24_$_t_int24_$returns$_t_int24_$", "typeString": "function (int24,int24) pure returns (int24)" } }, - "id": 49806, + "id": 49803, "isConstant": false, "isLValue": false, "isPure": false, @@ -5760,23 +5760,23 @@ "typeString": "int24" } }, - "id": 49808, + "id": 49805, "nodeType": "ExpressionStatement", "src": "4311:33:63" }, { "assignments": [ - 49813 + 49810 ], "declarations": [ { "constant": false, - "id": 49813, + "id": 49810, "mutability": "mutable", "name": "params", "nameLocation": "4400:6:63", "nodeType": "VariableDeclaration", - "scope": 49872, + "scope": 49869, "src": "4354:52:63", "stateVariable": false, "storageLocation": "memory", @@ -5785,10 +5785,10 @@ "typeString": "struct INonfungiblePositionManager.MintParams" }, "typeName": { - "id": 49812, + "id": 49809, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49811, + "id": 49808, "name": "INonfungiblePositionManager.MintParams", "nameLocations": [ "4354:27:63", @@ -5808,20 +5808,20 @@ "visibility": "internal" } ], - "id": 49836, + "id": 49833, "initialValue": { "arguments": [ { "arguments": [ { - "id": 49818, + "id": 49815, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "4469:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -5829,11 +5829,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49817, + "id": 49814, "isConstant": false, "isLValue": false, "isPure": true, @@ -5845,14 +5845,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49816, + "id": 49813, "name": "address", "nodeType": "ElementaryTypeName", "src": "4461:7:63", "typeDescriptions": {} } }, - "id": 49819, + "id": 49816, "isConstant": false, "isLValue": false, "isPure": false, @@ -5871,14 +5871,14 @@ { "arguments": [ { - "id": 49822, + "id": 49819, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "4484:3:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -5886,11 +5886,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49821, + "id": 49818, "isConstant": false, "isLValue": false, "isPure": true, @@ -5902,14 +5902,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49820, + "id": 49817, "name": "address", "nodeType": "ElementaryTypeName", "src": "4476:7:63", "typeDescriptions": {} } }, - "id": 49823, + "id": 49820, "isConstant": false, "isLValue": false, "isPure": false, @@ -5926,11 +5926,11 @@ } }, { - "id": 49824, + "id": 49821, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49472, + "referencedDeclaration": 49469, "src": "4490:3:63", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -5938,11 +5938,11 @@ } }, { - "id": 49825, + "id": 49822, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49734, + "referencedDeclaration": 49731, "src": "4495:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5950,11 +5950,11 @@ } }, { - "id": 49826, + "id": 49823, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49736, + "referencedDeclaration": 49733, "src": "4502:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5962,11 +5962,11 @@ } }, { - "id": 49827, + "id": 49824, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49730, + "referencedDeclaration": 49727, "src": "4509:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5974,11 +5974,11 @@ } }, { - "id": 49828, + "id": 49825, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49732, + "referencedDeclaration": 49729, "src": "4521:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5987,7 +5987,7 @@ }, { "hexValue": "30", - "id": 49829, + "id": 49826, "isConstant": false, "isLValue": false, "isPure": true, @@ -6003,7 +6003,7 @@ }, { "hexValue": "30", - "id": 49830, + "id": 49827, "isConstant": false, "isLValue": false, "isPure": true, @@ -6019,7 +6019,7 @@ }, { "expression": { - "id": 49831, + "id": 49828, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6030,7 +6030,7 @@ "typeString": "msg" } }, - "id": 49832, + "id": 49829, "isConstant": false, "isLValue": false, "isPure": false, @@ -6046,7 +6046,7 @@ }, { "expression": { - "id": 49833, + "id": 49830, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6057,7 +6057,7 @@ "typeString": "block" } }, - "id": 49834, + "id": 49831, "isConstant": false, "isLValue": false, "isPure": false, @@ -6120,7 +6120,7 @@ } ], "expression": { - "id": 49814, + "id": 49811, "name": "INonfungiblePositionManager", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6131,7 +6131,7 @@ "typeString": "type(contract INonfungiblePositionManager)" } }, - "id": 49815, + "id": 49812, "isConstant": false, "isLValue": false, "isPure": false, @@ -6146,7 +6146,7 @@ "typeString": "type(struct INonfungiblePositionManager.MintParams storage pointer)" } }, - "id": 49835, + "id": 49832, "isConstant": false, "isLValue": false, "isPure": false, @@ -6167,7 +6167,7 @@ }, { "expression": { - "id": 49846, + "id": 49843, "isConstant": false, "isLValue": false, "isPure": false, @@ -6175,11 +6175,11 @@ "leftHandSide": { "components": [ { - "id": 49837, + "id": 49834, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49739, + "referencedDeclaration": 49736, "src": "4586:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6187,11 +6187,11 @@ } }, { - "id": 49838, + "id": 49835, "name": "liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49741, + "referencedDeclaration": 49738, "src": "4595:9:63", "typeDescriptions": { "typeIdentifier": "t_uint128", @@ -6199,11 +6199,11 @@ } }, { - "id": 49839, + "id": 49836, "name": "amount0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49743, + "referencedDeclaration": 49740, "src": "4606:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6211,11 +6211,11 @@ } }, { - "id": 49840, + "id": 49837, "name": "amount1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49745, + "referencedDeclaration": 49742, "src": "4615:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6223,7 +6223,7 @@ } } ], - "id": 49841, + "id": 49838, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -6241,11 +6241,11 @@ "rightHandSide": { "arguments": [ { - "id": 49844, + "id": 49841, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49813, + "referencedDeclaration": 49810, "src": "4636:6:63", "typeDescriptions": { "typeIdentifier": "t_struct$_MintParams_$45203_memory_ptr", @@ -6261,18 +6261,18 @@ } ], "expression": { - "id": 49842, + "id": 49839, "name": "nfpm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49462, + "referencedDeclaration": 49459, "src": "4626:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } }, - "id": 49843, + "id": 49840, "isConstant": false, "isLValue": false, "isPure": false, @@ -6287,7 +6287,7 @@ "typeString": "function (struct INonfungiblePositionManager.MintParams memory) payable external returns (uint256,uint128,uint256,uint256)" } }, - "id": 49845, + "id": 49842, "isConstant": false, "isLValue": false, "isPure": false, @@ -6309,7 +6309,7 @@ "typeString": "tuple()" } }, - "id": 49847, + "id": 49844, "nodeType": "ExpressionStatement", "src": "4585:58:63" }, @@ -6318,7 +6318,7 @@ "arguments": [ { "hexValue": "6d696e746564", - "id": 49851, + "id": 49848, "isConstant": false, "isLValue": false, "isPure": true, @@ -6341,7 +6341,7 @@ } ], "expression": { - "id": 49848, + "id": 49845, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6352,7 +6352,7 @@ "typeString": "type(library console2)" } }, - "id": 49850, + "id": 49847, "isConstant": false, "isLValue": false, "isPure": false, @@ -6367,7 +6367,7 @@ "typeString": "function (string memory) pure" } }, - "id": 49852, + "id": 49849, "isConstant": false, "isLValue": false, "isPure": false, @@ -6383,7 +6383,7 @@ "typeString": "tuple()" } }, - "id": 49853, + "id": 49850, "nodeType": "ExpressionStatement", "src": "4653:22:63" }, @@ -6391,11 +6391,11 @@ "expression": { "arguments": [ { - "id": 49857, + "id": 49854, "name": "liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49741, + "referencedDeclaration": 49738, "src": "4698:9:63", "typeDescriptions": { "typeIdentifier": "t_uint128", @@ -6411,7 +6411,7 @@ } ], "expression": { - "id": 49854, + "id": 49851, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6422,7 +6422,7 @@ "typeString": "type(library console2)" } }, - "id": 49856, + "id": 49853, "isConstant": false, "isLValue": false, "isPure": false, @@ -6437,7 +6437,7 @@ "typeString": "function (uint256) pure" } }, - "id": 49858, + "id": 49855, "isConstant": false, "isLValue": false, "isPure": false, @@ -6453,7 +6453,7 @@ "typeString": "tuple()" } }, - "id": 49859, + "id": 49856, "nodeType": "ExpressionStatement", "src": "4685:23:63" }, @@ -6461,11 +6461,11 @@ "expression": { "arguments": [ { - "id": 49863, + "id": 49860, "name": "amount0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49743, + "referencedDeclaration": 49740, "src": "4731:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6481,7 +6481,7 @@ } ], "expression": { - "id": 49860, + "id": 49857, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6492,7 +6492,7 @@ "typeString": "type(library console2)" } }, - "id": 49862, + "id": 49859, "isConstant": false, "isLValue": false, "isPure": false, @@ -6507,7 +6507,7 @@ "typeString": "function (uint256) pure" } }, - "id": 49864, + "id": 49861, "isConstant": false, "isLValue": false, "isPure": false, @@ -6523,7 +6523,7 @@ "typeString": "tuple()" } }, - "id": 49865, + "id": 49862, "nodeType": "ExpressionStatement", "src": "4718:21:63" }, @@ -6531,11 +6531,11 @@ "expression": { "arguments": [ { - "id": 49869, + "id": 49866, "name": "amount1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49745, + "referencedDeclaration": 49742, "src": "4762:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6551,7 +6551,7 @@ } ], "expression": { - "id": 49866, + "id": 49863, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6562,7 +6562,7 @@ "typeString": "type(library console2)" } }, - "id": 49868, + "id": 49865, "isConstant": false, "isLValue": false, "isPure": false, @@ -6577,7 +6577,7 @@ "typeString": "function (uint256) pure" } }, - "id": 49870, + "id": 49867, "isConstant": false, "isLValue": false, "isPure": false, @@ -6593,7 +6593,7 @@ "typeString": "tuple()" } }, - "id": 49871, + "id": 49868, "nodeType": "ExpressionStatement", "src": "4749:21:63" } @@ -6605,17 +6605,17 @@ "name": "_stake", "nameLocation": "3189:6:63", "parameters": { - "id": 49737, + "id": 49734, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49730, + "id": 49727, "mutability": "mutable", "name": "coinAmount", "nameLocation": "3204:10:63", "nodeType": "VariableDeclaration", - "scope": 49873, + "scope": 49870, "src": "3196:18:63", "stateVariable": false, "storageLocation": "default", @@ -6624,7 +6624,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49729, + "id": 49726, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3196:7:63", @@ -6637,12 +6637,12 @@ }, { "constant": false, - "id": 49732, + "id": 49729, "mutability": "mutable", "name": "usdAmount", "nameLocation": "3224:9:63", "nodeType": "VariableDeclaration", - "scope": 49873, + "scope": 49870, "src": "3216:17:63", "stateVariable": false, "storageLocation": "default", @@ -6651,7 +6651,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49731, + "id": 49728, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3216:7:63", @@ -6664,12 +6664,12 @@ }, { "constant": false, - "id": 49734, + "id": 49731, "mutability": "mutable", "name": "lower", "nameLocation": "3241:5:63", "nodeType": "VariableDeclaration", - "scope": 49873, + "scope": 49870, "src": "3235:11:63", "stateVariable": false, "storageLocation": "default", @@ -6678,7 +6678,7 @@ "typeString": "int24" }, "typeName": { - "id": 49733, + "id": 49730, "name": "int24", "nodeType": "ElementaryTypeName", "src": "3235:5:63", @@ -6691,12 +6691,12 @@ }, { "constant": false, - "id": 49736, + "id": 49733, "mutability": "mutable", "name": "upper", "nameLocation": "3254:5:63", "nodeType": "VariableDeclaration", - "scope": 49873, + "scope": 49870, "src": "3248:11:63", "stateVariable": false, "storageLocation": "default", @@ -6705,7 +6705,7 @@ "typeString": "int24" }, "typeName": { - "id": 49735, + "id": 49732, "name": "int24", "nodeType": "ElementaryTypeName", "src": "3248:5:63", @@ -6720,17 +6720,17 @@ "src": "3195:65:63" }, "returnParameters": { - "id": 49746, + "id": 49743, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49739, + "id": 49736, "mutability": "mutable", "name": "tokenId", "nameLocation": "3299:7:63", "nodeType": "VariableDeclaration", - "scope": 49873, + "scope": 49870, "src": "3291:15:63", "stateVariable": false, "storageLocation": "default", @@ -6739,7 +6739,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49738, + "id": 49735, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3291:7:63", @@ -6752,12 +6752,12 @@ }, { "constant": false, - "id": 49741, + "id": 49738, "mutability": "mutable", "name": "liquidity", "nameLocation": "3324:9:63", "nodeType": "VariableDeclaration", - "scope": 49873, + "scope": 49870, "src": "3316:17:63", "stateVariable": false, "storageLocation": "default", @@ -6766,7 +6766,7 @@ "typeString": "uint128" }, "typeName": { - "id": 49740, + "id": 49737, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "3316:7:63", @@ -6779,12 +6779,12 @@ }, { "constant": false, - "id": 49743, + "id": 49740, "mutability": "mutable", "name": "amount0", "nameLocation": "3351:7:63", "nodeType": "VariableDeclaration", - "scope": 49873, + "scope": 49870, "src": "3343:15:63", "stateVariable": false, "storageLocation": "default", @@ -6793,7 +6793,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49742, + "id": 49739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3343:7:63", @@ -6806,12 +6806,12 @@ }, { "constant": false, - "id": 49745, + "id": 49742, "mutability": "mutable", "name": "amount1", "nameLocation": "3376:7:63", "nodeType": "VariableDeclaration", - "scope": 49873, + "scope": 49870, "src": "3368:15:63", "stateVariable": false, "storageLocation": "default", @@ -6820,7 +6820,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49744, + "id": 49741, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3368:7:63", @@ -6834,35 +6834,35 @@ ], "src": "3281:108:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { - "id": 49914, + "id": 49911, "nodeType": "FunctionDefinition", "src": "4784:289:63", "nodes": [], "body": { - "id": 49913, + "id": 49910, "nodeType": "Block", "src": "4890:183:63", "nodes": [], "statements": [ { "assignments": [ - 49887 + 49884 ], "declarations": [ { "constant": false, - "id": 49887, + "id": 49884, "mutability": "mutable", "name": "limit", "nameLocation": "4908:5:63", "nodeType": "VariableDeclaration", - "scope": 49913, + "scope": 49910, "src": "4900:13:63", "stateVariable": false, "storageLocation": "default", @@ -6871,7 +6871,7 @@ "typeString": "uint160" }, "typeName": { - "id": 49886, + "id": 49883, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "4900:7:63", @@ -6883,14 +6883,14 @@ "visibility": "internal" } ], - "id": 49905, + "id": 49902, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, - "id": 49895, + "id": 49892, "isConstant": false, "isLValue": false, "isPure": false, @@ -6898,14 +6898,14 @@ "leftExpression": { "arguments": [ { - "id": 49890, + "id": 49887, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49876, + "referencedDeclaration": 49873, "src": "4924:7:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -6913,11 +6913,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49889, + "id": 49886, "isConstant": false, "isLValue": false, "isPure": true, @@ -6929,14 +6929,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49888, + "id": 49885, "name": "address", "nodeType": "ElementaryTypeName", "src": "4916:7:63", "typeDescriptions": {} } }, - "id": 49891, + "id": 49888, "isConstant": false, "isLValue": false, "isPure": false, @@ -6959,18 +6959,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 49892, + "id": 49889, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49470, + "referencedDeclaration": 49467, "src": "4936:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, - "id": 49893, + "id": 49890, "isConstant": false, "isLValue": false, "isPure": false, @@ -6985,7 +6985,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 49894, + "id": 49891, "isConstant": false, "isLValue": false, "isPure": false, @@ -7012,14 +7012,14 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 49903, + "id": 49900, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "expression": { - "id": 49900, + "id": 49897, "name": "TickMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7030,7 +7030,7 @@ "typeString": "type(library TickMath)" } }, - "id": 49901, + "id": 49898, "isConstant": false, "isLValue": false, "isPure": true, @@ -7049,7 +7049,7 @@ "operator": "-", "rightExpression": { "hexValue": "31", - "id": 49902, + "id": 49899, "isConstant": false, "isLValue": false, "isPure": true, @@ -7069,7 +7069,7 @@ "typeString": "uint160" } }, - "id": 49904, + "id": 49901, "isConstant": false, "isLValue": false, "isPure": false, @@ -7081,14 +7081,14 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 49899, + "id": 49896, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "expression": { - "id": 49896, + "id": 49893, "name": "TickMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7099,7 +7099,7 @@ "typeString": "type(library TickMath)" } }, - "id": 49897, + "id": 49894, "isConstant": false, "isLValue": false, "isPure": true, @@ -7118,7 +7118,7 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 49898, + "id": 49895, "isConstant": false, "isLValue": false, "isPure": true, @@ -7150,35 +7150,35 @@ "expression": { "arguments": [ { - "id": 49907, + "id": 49904, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49876, + "referencedDeclaration": 49873, "src": "5031:7:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { - "id": 49908, + "id": 49905, "name": "outToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49879, + "referencedDeclaration": 49876, "src": "5040:8:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { - "id": 49909, + "id": 49906, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49881, + "referencedDeclaration": 49878, "src": "5050:8:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7186,11 +7186,11 @@ } }, { - "id": 49910, + "id": 49907, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49887, + "referencedDeclaration": 49884, "src": "5060:5:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -7201,11 +7201,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { @@ -7217,21 +7217,21 @@ "typeString": "uint160" } ], - "id": 49906, + "id": 49903, "name": "swap", "nodeType": "Identifier", "overloadedDeclarations": [ - 49914, - 49970 + 49911, + 49967 ], - "referencedDeclaration": 49970, + "referencedDeclaration": 49967, "src": "5026:4:63", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_MockERC20_$46478_$_t_contract$_MockERC20_$46478_$_t_uint256_$_t_uint160_$returns$_t_uint256_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_MockERC20_$46475_$_t_contract$_MockERC20_$46475_$_t_uint256_$_t_uint160_$returns$_t_uint256_$", "typeString": "function (contract MockERC20,contract MockERC20,uint256,uint160) returns (uint256)" } }, - "id": 49911, + "id": 49908, "isConstant": false, "isLValue": false, "isPure": false, @@ -7247,8 +7247,8 @@ "typeString": "uint256" } }, - "functionReturnParameters": 49885, - "id": 49912, + "functionReturnParameters": 49882, + "id": 49909, "nodeType": "Return", "src": "5019:47:63" } @@ -7261,22 +7261,59 @@ "name": "swap", "nameLocation": "4793:4:63", "parameters": { - "id": 49882, + "id": 49879, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49876, + "id": 49873, "mutability": "mutable", "name": "inToken", "nameLocation": "4808:7:63", "nodeType": "VariableDeclaration", - "scope": 49914, + "scope": 49911, "src": "4798:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", + "typeString": "contract MockERC20" + }, + "typeName": { + "id": 49872, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 49871, + "name": "MockERC20", + "nameLocations": [ + "4798:9:63" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46475, + "src": "4798:9:63" + }, + "referencedDeclaration": 46475, + "src": "4798:9:63", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$46475", + "typeString": "contract MockERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49876, + "mutability": "mutable", + "name": "outToken", + "nameLocation": "4827:8:63", + "nodeType": "VariableDeclaration", + "scope": 49911, + "src": "4817:18:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { @@ -7285,54 +7322,17 @@ "pathNode": { "id": 49874, "name": "MockERC20", - "nameLocations": [ - "4798:9:63" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, - "src": "4798:9:63" - }, - "referencedDeclaration": 46478, - "src": "4798:9:63", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", - "typeString": "contract MockERC20" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49879, - "mutability": "mutable", - "name": "outToken", - "nameLocation": "4827:8:63", - "nodeType": "VariableDeclaration", - "scope": 49914, - "src": "4817:18:63", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", - "typeString": "contract MockERC20" - }, - "typeName": { - "id": 49878, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 49877, - "name": "MockERC20", "nameLocations": [ "4817:9:63" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "4817:9:63" }, - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "4817:9:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, @@ -7340,12 +7340,12 @@ }, { "constant": false, - "id": 49881, + "id": 49878, "mutability": "mutable", "name": "amountIn", "nameLocation": "4845:8:63", "nodeType": "VariableDeclaration", - "scope": 49914, + "scope": 49911, "src": "4837:16:63", "stateVariable": false, "storageLocation": "default", @@ -7354,7 +7354,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49880, + "id": 49877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4837:7:63", @@ -7369,17 +7369,17 @@ "src": "4797:57:63" }, "returnParameters": { - "id": 49885, + "id": 49882, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49884, + "id": 49881, "mutability": "mutable", "name": "amountOut", "nameLocation": "4879:9:63", "nodeType": "VariableDeclaration", - "scope": 49914, + "scope": 49911, "src": "4871:17:63", "stateVariable": false, "storageLocation": "default", @@ -7388,7 +7388,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49883, + "id": 49880, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4871:7:63", @@ -7402,18 +7402,18 @@ ], "src": "4870:19:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49970, + "id": 49967, "nodeType": "FunctionDefinition", "src": "5079:824:63", "nodes": [], "body": { - "id": 49969, + "id": 49966, "nodeType": "Block", "src": "5212:691:63", "nodes": [], @@ -7424,11 +7424,11 @@ { "arguments": [ { - "id": 49934, + "id": 49931, "name": "swapper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49467, + "referencedDeclaration": 49464, "src": "5246:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_ISwapRouter_$45454", @@ -7443,7 +7443,7 @@ "typeString": "contract ISwapRouter" } ], - "id": 49933, + "id": 49930, "isConstant": false, "isLValue": false, "isPure": true, @@ -7455,14 +7455,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49932, + "id": 49929, "name": "address", "nodeType": "ElementaryTypeName", "src": "5238:7:63", "typeDescriptions": {} } }, - "id": 49935, + "id": 49932, "isConstant": false, "isLValue": false, "isPure": false, @@ -7479,11 +7479,11 @@ } }, { - "id": 49936, + "id": 49933, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49922, + "referencedDeclaration": 49919, "src": "5256:8:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7503,18 +7503,18 @@ } ], "expression": { - "id": 49929, + "id": 49926, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49917, + "referencedDeclaration": 49914, "src": "5222:7:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 49931, + "id": 49928, "isConstant": false, "isLValue": false, "isPure": false, @@ -7529,7 +7529,7 @@ "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 49937, + "id": 49934, "isConstant": false, "isLValue": false, "isPure": false, @@ -7545,23 +7545,23 @@ "typeString": "bool" } }, - "id": 49938, + "id": 49935, "nodeType": "ExpressionStatement", "src": "5222:43:63" }, { "assignments": [ - 49943 + 49940 ], "declarations": [ { "constant": false, - "id": 49943, + "id": 49940, "mutability": "mutable", "name": "params", "nameLocation": "5679:6:63", "nodeType": "VariableDeclaration", - "scope": 49969, + "scope": 49966, "src": "5637:48:63", "stateVariable": false, "storageLocation": "memory", @@ -7570,10 +7570,10 @@ "typeString": "struct ISwapRouter.ExactInputSingleParams" }, "typeName": { - "id": 49942, + "id": 49939, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49941, + "id": 49938, "name": "ISwapRouter.ExactInputSingleParams", "nameLocations": [ "5637:11:63", @@ -7593,20 +7593,20 @@ "visibility": "internal" } ], - "id": 49963, + "id": 49960, "initialValue": { "arguments": [ { "arguments": [ { - "id": 49948, + "id": 49945, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49917, + "referencedDeclaration": 49914, "src": "5744:7:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -7614,11 +7614,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49947, + "id": 49944, "isConstant": false, "isLValue": false, "isPure": true, @@ -7630,14 +7630,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49946, + "id": 49943, "name": "address", "nodeType": "ElementaryTypeName", "src": "5736:7:63", "typeDescriptions": {} } }, - "id": 49949, + "id": 49946, "isConstant": false, "isLValue": false, "isPure": false, @@ -7656,14 +7656,14 @@ { "arguments": [ { - "id": 49952, + "id": 49949, "name": "outToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49920, + "referencedDeclaration": 49917, "src": "5762:8:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -7671,11 +7671,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 49951, + "id": 49948, "isConstant": false, "isLValue": false, "isPure": true, @@ -7687,14 +7687,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49950, + "id": 49947, "name": "address", "nodeType": "ElementaryTypeName", "src": "5754:7:63", "typeDescriptions": {} } }, - "id": 49953, + "id": 49950, "isConstant": false, "isLValue": false, "isPure": false, @@ -7711,11 +7711,11 @@ } }, { - "id": 49954, + "id": 49951, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49472, + "referencedDeclaration": 49469, "src": "5773:3:63", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -7724,7 +7724,7 @@ }, { "expression": { - "id": 49955, + "id": 49952, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7735,7 +7735,7 @@ "typeString": "msg" } }, - "id": 49956, + "id": 49953, "isConstant": false, "isLValue": false, "isPure": false, @@ -7751,7 +7751,7 @@ }, { "expression": { - "id": 49957, + "id": 49954, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7762,7 +7762,7 @@ "typeString": "block" } }, - "id": 49958, + "id": 49955, "isConstant": false, "isLValue": false, "isPure": false, @@ -7777,11 +7777,11 @@ } }, { - "id": 49959, + "id": 49956, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49922, + "referencedDeclaration": 49919, "src": "5807:8:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7790,7 +7790,7 @@ }, { "hexValue": "30", - "id": 49960, + "id": 49957, "isConstant": false, "isLValue": false, "isPure": true, @@ -7805,11 +7805,11 @@ "value": "0" }, { - "id": 49961, + "id": 49958, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49924, + "referencedDeclaration": 49921, "src": "5820:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -7853,7 +7853,7 @@ } ], "expression": { - "id": 49944, + "id": 49941, "name": "ISwapRouter", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7864,7 +7864,7 @@ "typeString": "type(contract ISwapRouter)" } }, - "id": 49945, + "id": 49942, "isConstant": false, "isLValue": false, "isPure": false, @@ -7879,7 +7879,7 @@ "typeString": "type(struct ISwapRouter.ExactInputSingleParams storage pointer)" } }, - "id": 49962, + "id": 49959, "isConstant": false, "isLValue": false, "isPure": false, @@ -7902,11 +7902,11 @@ "expression": { "arguments": [ { - "id": 49966, + "id": 49963, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49943, + "referencedDeclaration": 49940, "src": "5889:6:63", "typeDescriptions": { "typeIdentifier": "t_struct$_ExactInputSingleParams_$45378_memory_ptr", @@ -7922,18 +7922,18 @@ } ], "expression": { - "id": 49964, + "id": 49961, "name": "swapper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49467, + "referencedDeclaration": 49464, "src": "5864:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_ISwapRouter_$45454", "typeString": "contract ISwapRouter" } }, - "id": 49965, + "id": 49962, "isConstant": false, "isLValue": false, "isPure": false, @@ -7948,7 +7948,7 @@ "typeString": "function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)" } }, - "id": 49967, + "id": 49964, "isConstant": false, "isLValue": false, "isPure": false, @@ -7964,8 +7964,8 @@ "typeString": "uint256" } }, - "functionReturnParameters": 49928, - "id": 49968, + "functionReturnParameters": 49925, + "id": 49965, "nodeType": "Return", "src": "5857:39:63" } @@ -7978,22 +7978,59 @@ "name": "swap", "nameLocation": "5088:4:63", "parameters": { - "id": 49925, + "id": 49922, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49917, + "id": 49914, "mutability": "mutable", "name": "inToken", "nameLocation": "5103:7:63", "nodeType": "VariableDeclaration", - "scope": 49970, + "scope": 49967, "src": "5093:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", + "typeString": "contract MockERC20" + }, + "typeName": { + "id": 49913, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 49912, + "name": "MockERC20", + "nameLocations": [ + "5093:9:63" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46475, + "src": "5093:9:63" + }, + "referencedDeclaration": 46475, + "src": "5093:9:63", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$46475", + "typeString": "contract MockERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49917, + "mutability": "mutable", + "name": "outToken", + "nameLocation": "5122:8:63", + "nodeType": "VariableDeclaration", + "scope": 49967, + "src": "5112:18:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { @@ -8002,54 +8039,17 @@ "pathNode": { "id": 49915, "name": "MockERC20", - "nameLocations": [ - "5093:9:63" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, - "src": "5093:9:63" - }, - "referencedDeclaration": 46478, - "src": "5093:9:63", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", - "typeString": "contract MockERC20" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49920, - "mutability": "mutable", - "name": "outToken", - "nameLocation": "5122:8:63", - "nodeType": "VariableDeclaration", - "scope": 49970, - "src": "5112:18:63", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", - "typeString": "contract MockERC20" - }, - "typeName": { - "id": 49919, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 49918, - "name": "MockERC20", "nameLocations": [ "5112:9:63" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "5112:9:63" }, - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "5112:9:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, @@ -8057,12 +8057,12 @@ }, { "constant": false, - "id": 49922, + "id": 49919, "mutability": "mutable", "name": "amountIn", "nameLocation": "5140:8:63", "nodeType": "VariableDeclaration", - "scope": 49970, + "scope": 49967, "src": "5132:16:63", "stateVariable": false, "storageLocation": "default", @@ -8071,7 +8071,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49921, + "id": 49918, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5132:7:63", @@ -8084,12 +8084,12 @@ }, { "constant": false, - "id": 49924, + "id": 49921, "mutability": "mutable", "name": "sqrtPriceLimitX96", "nameLocation": "5158:17:63", "nodeType": "VariableDeclaration", - "scope": 49970, + "scope": 49967, "src": "5150:25:63", "stateVariable": false, "storageLocation": "default", @@ -8098,7 +8098,7 @@ "typeString": "uint160" }, "typeName": { - "id": 49923, + "id": 49920, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "5150:7:63", @@ -8113,17 +8113,17 @@ "src": "5092:84:63" }, "returnParameters": { - "id": 49928, + "id": 49925, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49927, + "id": 49924, "mutability": "mutable", "name": "amountOut", "nameLocation": "5201:9:63", "nodeType": "VariableDeclaration", - "scope": 49970, + "scope": 49967, "src": "5193:17:63", "stateVariable": false, "storageLocation": "default", @@ -8132,7 +8132,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49926, + "id": 49923, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5193:7:63", @@ -8146,25 +8146,25 @@ ], "src": "5192:19:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49983, + "id": 49980, "nodeType": "FunctionDefinition", "src": "5909:112:63", "nodes": [], "body": { - "id": 49982, + "id": 49979, "nodeType": "Block", "src": "5969:52:63", "nodes": [], "statements": [ { "expression": { - "id": 49980, + "id": 49977, "isConstant": false, "isLValue": false, "isPure": false, @@ -8172,11 +8172,11 @@ "leftHandSide": { "components": [ { - "id": 49975, + "id": 49972, "name": "sqrtPriceX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49973, + "referencedDeclaration": 49970, "src": "5980:12:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8190,7 +8190,7 @@ null, null ], - "id": 49976, + "id": 49973, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -8210,18 +8210,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 49977, + "id": 49974, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49470, + "referencedDeclaration": 49467, "src": "6002:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, - "id": 49978, + "id": 49975, "isConstant": false, "isLValue": false, "isPure": false, @@ -8236,7 +8236,7 @@ "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" } }, - "id": 49979, + "id": 49976, "isConstant": false, "isLValue": false, "isPure": false, @@ -8258,7 +8258,7 @@ "typeString": "tuple()" } }, - "id": 49981, + "id": 49978, "nodeType": "ExpressionStatement", "src": "5979:35:63" } @@ -8271,23 +8271,23 @@ "name": "price", "nameLocation": "5918:5:63", "parameters": { - "id": 49971, + "id": 49968, "nodeType": "ParameterList", "parameters": [], "src": "5923:2:63" }, "returnParameters": { - "id": 49974, + "id": 49971, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49973, + "id": 49970, "mutability": "mutable", "name": "sqrtPriceX96", "nameLocation": "5955:12:63", "nodeType": "VariableDeclaration", - "scope": 49983, + "scope": 49980, "src": "5947:20:63", "stateVariable": false, "storageLocation": "default", @@ -8296,7 +8296,7 @@ "typeString": "uint160" }, "typeName": { - "id": 49972, + "id": 49969, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "5947:7:63", @@ -8310,18 +8310,18 @@ ], "src": "5946:22:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 50068, + "id": 50065, "nodeType": "FunctionDefinition", "src": "6027:683:63", "nodes": [], "body": { - "id": 50067, + "id": 50064, "nodeType": "Block", "src": "6082:628:63", "nodes": [], @@ -8331,7 +8331,7 @@ "arguments": [ { "hexValue": "73776170546f5072696365", - "id": 49991, + "id": 49988, "isConstant": false, "isLValue": false, "isPure": true, @@ -8354,7 +8354,7 @@ } ], "expression": { - "id": 49988, + "id": 49985, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8365,7 +8365,7 @@ "typeString": "type(library console2)" } }, - "id": 49990, + "id": 49987, "isConstant": false, "isLValue": false, "isPure": false, @@ -8380,7 +8380,7 @@ "typeString": "function (string memory) pure" } }, - "id": 49992, + "id": 49989, "isConstant": false, "isLValue": false, "isPure": false, @@ -8396,7 +8396,7 @@ "typeString": "tuple()" } }, - "id": 49993, + "id": 49990, "nodeType": "ExpressionStatement", "src": "6092:27:63" }, @@ -8404,11 +8404,11 @@ "expression": { "arguments": [ { - "id": 49997, + "id": 49994, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49985, + "referencedDeclaration": 49982, "src": "6142:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8424,7 +8424,7 @@ } ], "expression": { - "id": 49994, + "id": 49991, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8435,7 +8435,7 @@ "typeString": "type(library console2)" } }, - "id": 49996, + "id": 49993, "isConstant": false, "isLValue": false, "isPure": false, @@ -8450,7 +8450,7 @@ "typeString": "function (uint256) pure" } }, - "id": 49998, + "id": 49995, "isConstant": false, "isLValue": false, "isPure": false, @@ -8466,23 +8466,23 @@ "typeString": "tuple()" } }, - "id": 49999, + "id": 49996, "nodeType": "ExpressionStatement", "src": "6129:31:63" }, { "assignments": [ - 50001 + 49998 ], "declarations": [ { "constant": false, - "id": 50001, + "id": 49998, "mutability": "mutable", "name": "curPrice", "nameLocation": "6178:8:63", "nodeType": "VariableDeclaration", - "scope": 50067, + "scope": 50064, "src": "6170:16:63", "stateVariable": false, "storageLocation": "default", @@ -8491,7 +8491,7 @@ "typeString": "uint160" }, "typeName": { - "id": 50000, + "id": 49997, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "6170:7:63", @@ -8503,23 +8503,23 @@ "visibility": "internal" } ], - "id": 50004, + "id": 50001, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], - "id": 50002, + "id": 49999, "name": "price", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49983, + "referencedDeclaration": 49980, "src": "6189:5:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint160_$", "typeString": "function () view returns (uint160)" } }, - "id": 50003, + "id": 50000, "isConstant": false, "isLValue": false, "isPure": false, @@ -8542,11 +8542,11 @@ "expression": { "arguments": [ { - "id": 50008, + "id": 50005, "name": "curPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50001, + "referencedDeclaration": 49998, "src": "6219:8:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8562,7 +8562,7 @@ } ], "expression": { - "id": 50005, + "id": 50002, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8573,7 +8573,7 @@ "typeString": "type(library console2)" } }, - "id": 50007, + "id": 50004, "isConstant": false, "isLValue": false, "isPure": false, @@ -8588,7 +8588,7 @@ "typeString": "function (uint256) pure" } }, - "id": 50009, + "id": 50006, "isConstant": false, "isLValue": false, "isPure": false, @@ -8604,7 +8604,7 @@ "typeString": "tuple()" } }, - "id": 50010, + "id": 50007, "nodeType": "ExpressionStatement", "src": "6206:22:63" }, @@ -8614,17 +8614,17 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 50013, + "id": 50010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50011, + "id": 50008, "name": "curPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50001, + "referencedDeclaration": 49998, "src": "6242:8:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8634,11 +8634,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50012, + "id": 50009, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49985, + "referencedDeclaration": 49982, "src": "6254:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8651,77 +8651,77 @@ "typeString": "bool" } }, - "id": 50015, + "id": 50012, "nodeType": "IfStatement", "src": "6238:55:63", "trueBody": { - "functionReturnParameters": 49987, - "id": 50014, + "functionReturnParameters": 49984, + "id": 50011, "nodeType": "Return", "src": "6286:7:63" } }, { "assignments": [ - 50018 + 50015 ], "declarations": [ { "constant": false, - "id": 50018, + "id": 50015, "mutability": "mutable", "name": "inToken", "nameLocation": "6312:7:63", "nodeType": "VariableDeclaration", - "scope": 50067, + "scope": 50064, "src": "6302:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { - "id": 50017, + "id": 50014, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 50016, + "id": 50013, "name": "MockERC20", "nameLocations": [ "6302:9:63" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "6302:9:63" }, - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "6302:9:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" } ], - "id": 50029, + "id": 50026, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 50021, + "id": 50018, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50019, + "id": 50016, "name": "curPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50001, + "referencedDeclaration": 49998, "src": "6322:8:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8731,11 +8731,11 @@ "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { - "id": 50020, + "id": 50017, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49985, + "referencedDeclaration": 49982, "src": "6333:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8751,11 +8751,11 @@ "falseExpression": { "arguments": [ { - "id": 50026, + "id": 50023, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49482, + "referencedDeclaration": 49479, "src": "6383:6:63", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8763,62 +8763,6 @@ } } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 50025, - "name": "MockERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46478, - "src": "6373:9:63", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MockERC20_$46478_$", - "typeString": "type(contract MockERC20)" - } - }, - "id": 50027, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6373:17:63", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", - "typeString": "contract MockERC20" - } - }, - "id": 50028, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "6322:68:63", - "trueExpression": { - "arguments": [ - { - "id": 50023, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49480, - "src": "6363:6:63", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], "expression": { "argumentTypes": [ { @@ -8830,10 +8774,10 @@ "name": "MockERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46478, - "src": "6353:9:63", + "referencedDeclaration": 46475, + "src": "6373:9:63", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MockERC20_$46478_$", + "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", "typeString": "type(contract MockERC20)" } }, @@ -8846,15 +8790,71 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", + "src": "6373:17:63", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$46475", + "typeString": "contract MockERC20" + } + }, + "id": 50025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "6322:68:63", + "trueExpression": { + "arguments": [ + { + "id": 50020, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49477, + "src": "6363:6:63", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 50019, + "name": "MockERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46475, + "src": "6353:9:63", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", + "typeString": "type(contract MockERC20)" + } + }, + "id": 50021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", "src": "6353:17:63", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, @@ -8863,65 +8863,65 @@ }, { "assignments": [ - 50032 + 50029 ], "declarations": [ { "constant": false, - "id": 50032, + "id": 50029, "mutability": "mutable", "name": "outToken", "nameLocation": "6410:8:63", "nodeType": "VariableDeclaration", - "scope": 50067, + "scope": 50064, "src": "6400:18:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { - "id": 50031, + "id": 50028, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 50030, + "id": 50027, "name": "MockERC20", "nameLocations": [ "6400:9:63" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "6400:9:63" }, - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "6400:9:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" } ], - "id": 50043, + "id": 50040, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 50035, + "id": 50032, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50033, + "id": 50030, "name": "curPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50001, + "referencedDeclaration": 49998, "src": "6421:8:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8931,11 +8931,11 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 50034, + "id": 50031, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49985, + "referencedDeclaration": 49982, "src": "6432:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8951,11 +8951,11 @@ "falseExpression": { "arguments": [ { - "id": 50040, + "id": 50037, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49482, + "referencedDeclaration": 49479, "src": "6482:6:63", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8963,62 +8963,6 @@ } } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 50039, - "name": "MockERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46478, - "src": "6472:9:63", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MockERC20_$46478_$", - "typeString": "type(contract MockERC20)" - } - }, - "id": 50041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6472:17:63", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", - "typeString": "contract MockERC20" - } - }, - "id": 50042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "6421:68:63", - "trueExpression": { - "arguments": [ - { - "id": 50037, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49480, - "src": "6462:6:63", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], "expression": { "argumentTypes": [ { @@ -9030,10 +8974,10 @@ "name": "MockERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46478, - "src": "6452:9:63", + "referencedDeclaration": 46475, + "src": "6472:9:63", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MockERC20_$46478_$", + "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", "typeString": "type(contract MockERC20)" } }, @@ -9046,15 +8990,71 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", + "src": "6472:17:63", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$46475", + "typeString": "contract MockERC20" + } + }, + "id": 50039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "6421:68:63", + "trueExpression": { + "arguments": [ + { + "id": 50034, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49477, + "src": "6462:6:63", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 50033, + "name": "MockERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46475, + "src": "6452:9:63", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", + "typeString": "type(contract MockERC20)" + } + }, + "id": 50035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", "src": "6452:17:63", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, @@ -9063,17 +9063,17 @@ }, { "assignments": [ - 50045 + 50042 ], "declarations": [ { "constant": false, - "id": 50045, + "id": 50042, "mutability": "mutable", "name": "aLot", "nameLocation": "6589:4:63", "nodeType": "VariableDeclaration", - "scope": 50067, + "scope": 50064, "src": "6581:12:63", "stateVariable": false, "storageLocation": "default", @@ -9082,7 +9082,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50044, + "id": 50041, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6581:7:63", @@ -9094,20 +9094,20 @@ "visibility": "internal" } ], - "id": 50049, + "id": 50046, "initialValue": { "commonType": { "typeIdentifier": "t_rational_1267650600228229401496703205376_by_1", "typeString": "int_const 1267650600228229401496703205376" }, - "id": 50048, + "id": 50045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 50046, + "id": 50043, "isConstant": false, "isLValue": false, "isPure": true, @@ -9125,7 +9125,7 @@ "operator": "**", "rightExpression": { "hexValue": "313030", - "id": 50047, + "id": 50044, "isConstant": false, "isLValue": false, "isPure": true, @@ -9154,14 +9154,14 @@ { "arguments": [ { - "id": 50055, + "id": 50052, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "6633:4:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } } @@ -9169,11 +9169,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockEnv_$50069", + "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } ], - "id": 50054, + "id": 50051, "isConstant": false, "isLValue": false, "isPure": true, @@ -9185,14 +9185,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 50053, + "id": 50050, "name": "address", "nodeType": "ElementaryTypeName", "src": "6625:7:63", "typeDescriptions": {} } }, - "id": 50056, + "id": 50053, "isConstant": false, "isLValue": false, "isPure": false, @@ -9209,11 +9209,11 @@ } }, { - "id": 50057, + "id": 50054, "name": "aLot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50045, + "referencedDeclaration": 50042, "src": "6640:4:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9233,18 +9233,18 @@ } ], "expression": { - "id": 50050, + "id": 50047, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50018, + "referencedDeclaration": 50015, "src": "6612:7:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 50052, + "id": 50049, "isConstant": false, "isLValue": false, "isPure": false, @@ -9252,14 +9252,14 @@ "memberLocation": "6620:4:63", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "6612:12:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 50058, + "id": 50055, "isConstant": false, "isLValue": false, "isPure": false, @@ -9275,7 +9275,7 @@ "typeString": "tuple()" } }, - "id": 50059, + "id": 50056, "nodeType": "ExpressionStatement", "src": "6612:33:63" }, @@ -9283,35 +9283,35 @@ "expression": { "arguments": [ { - "id": 50061, + "id": 50058, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50018, + "referencedDeclaration": 50015, "src": "6660:7:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { - "id": 50062, + "id": 50059, "name": "outToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50032, + "referencedDeclaration": 50029, "src": "6669:8:63", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { - "id": 50063, + "id": 50060, "name": "aLot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50045, + "referencedDeclaration": 50042, "src": "6679:4:63", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9319,11 +9319,11 @@ } }, { - "id": 50064, + "id": 50061, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49985, + "referencedDeclaration": 49982, "src": "6685:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -9334,11 +9334,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { @@ -9350,21 +9350,21 @@ "typeString": "uint160" } ], - "id": 50060, + "id": 50057, "name": "swap", "nodeType": "Identifier", "overloadedDeclarations": [ - 49914, - 49970 + 49911, + 49967 ], - "referencedDeclaration": 49970, + "referencedDeclaration": 49967, "src": "6655:4:63", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_MockERC20_$46478_$_t_contract$_MockERC20_$46478_$_t_uint256_$_t_uint160_$returns$_t_uint256_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_MockERC20_$46475_$_t_contract$_MockERC20_$46475_$_t_uint256_$_t_uint160_$returns$_t_uint256_$", "typeString": "function (contract MockERC20,contract MockERC20,uint256,uint160) returns (uint256)" } }, - "id": 50065, + "id": 50062, "isConstant": false, "isLValue": false, "isPure": false, @@ -9380,7 +9380,7 @@ "typeString": "uint256" } }, - "id": 50066, + "id": 50063, "nodeType": "ExpressionStatement", "src": "6655:48:63" } @@ -9393,17 +9393,17 @@ "name": "swapToPrice", "nameLocation": "6036:11:63", "parameters": { - "id": 49986, + "id": 49983, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49985, + "id": 49982, "mutability": "mutable", "name": "sqrtPriceLimitX96", "nameLocation": "6056:17:63", "nodeType": "VariableDeclaration", - "scope": 50068, + "scope": 50065, "src": "6048:25:63", "stateVariable": false, "storageLocation": "default", @@ -9412,7 +9412,7 @@ "typeString": "uint160" }, "typeName": { - "id": 49984, + "id": 49981, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "6048:7:63", @@ -9427,12 +9427,12 @@ "src": "6047:27:63" }, "returnParameters": { - "id": 49987, + "id": 49984, "nodeType": "ParameterList", "parameters": [], "src": "6082:0:63" }, - "scope": 50069, + "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -9442,7 +9442,7 @@ "baseContracts": [], "canonicalName": "MockEnv", "contractDependencies": [ - 46478 + 46475 ], "contractKind": "contract", "fullyImplemented": true, @@ -9450,11 +9450,11 @@ "21582": 1 }, "linearizedBaseContracts": [ - 50069 + 50066 ], "name": "MockEnv", "nameLocation": "597:7:63", - "scope": 50070, + "scope": 50067, "usedErrors": [], "usedEvents": [] } diff --git a/deployment/alpha/out/OrderLib.sol/OrderLib.json b/deployment/alpha/out/OrderLib.sol/OrderLib.json index 0aedcae..a39cb0f 100644 --- a/deployment/alpha/out/OrderLib.sol/OrderLib.json +++ b/deployment/alpha/out/OrderLib.sol/OrderLib.json @@ -65,17 +65,17 @@ } ], "bytecode": { - "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208e118d174de92b5bfa45d6e4f9e42c970d7a9786586b75ee62665451c6903d5564736f6c63430008160033", + "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8ce6a8ce630aeccbfa5335ae60d2947e9d64d7fab189ecb754f11079c0d4cb464736f6c63430008160033", "sourceMap": "245:13715:54:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;245:13715:54;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208e118d174de92b5bfa45d6e4f9e42c970d7a9786586b75ee62665451c6903d5564736f6c63430008160033", + "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8ce6a8ce630aeccbfa5335ae60d2947e9d64d7fab189ecb754f11079c0d4cb464736f6c63430008160033", "sourceMap": "245:13715:54:-:0;;;;;;;;", "linkReferences": {} }, "methodIdentifiers": {}, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"DexorderSwapCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"DexorderSwapFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startOrderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"numOrders\",\"type\":\"uint8\"}],\"name\":\"DexorderSwapPlaced\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/OrderLib.sol\":\"OrderLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"DexorderSwapCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"DexorderSwapFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startOrderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"numOrders\",\"type\":\"uint8\"}],\"name\":\"DexorderSwapPlaced\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/OrderLib.sol\":\"OrderLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -380,10 +380,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -408,10 +408,10 @@ }, "ast": { "absolutePath": "src/OrderLib.sol", - "id": 47923, + "id": 47920, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "IERC165": [ 43789 @@ -474,7 +474,7 @@ 43908 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 @@ -483,7 +483,7 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "console2": [ 29653 @@ -493,7 +493,7 @@ "src": "66:13895:54", "nodes": [ { - "id": 46480, + "id": 46477, "nodeType": "PragmaDirective", "src": "66:24:54", "nodes": [], @@ -505,7 +505,7 @@ ] }, { - "id": 46481, + "id": 46478, "nodeType": "PragmaDirective", "src": "91:19:54", "nodes": [], @@ -515,51 +515,51 @@ ] }, { - "id": 46482, + "id": 46479, "nodeType": "ImportDirective", "src": "112:66:54", "nodes": [], "absolutePath": "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", "file": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", "nameLocation": "-1:-1:-1", - "scope": 47923, + "scope": 47920, "sourceUnit": 43895, "symbolAliases": [], "unitAlias": "" }, { - "id": 46483, + "id": 46480, "nodeType": "ImportDirective", "src": "179:30:54", "nodes": [], "absolutePath": "src/UniswapSwapper.sol", "file": "./UniswapSwapper.sol", "nameLocation": "-1:-1:-1", - "scope": 47923, - "sourceUnit": 48848, + "scope": 47920, + "sourceUnit": 48845, "symbolAliases": [], "unitAlias": "" }, { - "id": 46484, + "id": 46481, "nodeType": "ImportDirective", "src": "210:32:54", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 47923, + "scope": 47920, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 47922, + "id": 47919, "nodeType": "ContractDefinition", "src": "245:13715:54", "nodes": [ { - "id": 46491, + "id": 46488, "nodeType": "VariableDeclaration", "src": "314:52:54", "nodes": [], @@ -567,7 +567,7 @@ "mutability": "constant", "name": "NO_CHAIN", "nameLocation": "339:8:54", - "scope": 47922, + "scope": 47919, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -575,7 +575,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46485, + "id": 46482, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "314:6:54", @@ -588,7 +588,7 @@ "expression": { "arguments": [ { - "id": 46488, + "id": 46485, "isConstant": false, "isLValue": false, "isPure": true, @@ -600,7 +600,7 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 46487, + "id": 46484, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "355:6:54", @@ -615,7 +615,7 @@ "typeString": "type(uint64)" } ], - "id": 46486, + "id": 46483, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -626,7 +626,7 @@ "typeString": "function () pure" } }, - "id": 46489, + "id": 46486, "isConstant": false, "isLValue": false, "isPure": true, @@ -642,7 +642,7 @@ "typeString": "type(uint64)" } }, - "id": 46490, + "id": 46487, "isConstant": false, "isLValue": false, "isPure": true, @@ -659,7 +659,7 @@ "visibility": "internal" }, { - "id": 46498, + "id": 46495, "nodeType": "VariableDeclaration", "src": "372:56:54", "nodes": [], @@ -667,7 +667,7 @@ "mutability": "constant", "name": "NO_OCO_INDEX", "nameLocation": "397:12:54", - "scope": 47922, + "scope": 47919, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -675,7 +675,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46492, + "id": 46489, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "372:6:54", @@ -688,7 +688,7 @@ "expression": { "arguments": [ { - "id": 46495, + "id": 46492, "isConstant": false, "isLValue": false, "isPure": true, @@ -700,7 +700,7 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 46494, + "id": 46491, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "417:6:54", @@ -715,7 +715,7 @@ "typeString": "type(uint64)" } ], - "id": 46493, + "id": 46490, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -726,7 +726,7 @@ "typeString": "function () pure" } }, - "id": 46496, + "id": 46493, "isConstant": false, "isLValue": false, "isPure": true, @@ -742,7 +742,7 @@ "typeString": "type(uint64)" } }, - "id": 46497, + "id": 46494, "isConstant": false, "isLValue": false, "isPure": true, @@ -759,7 +759,7 @@ "visibility": "internal" }, { - "id": 46509, + "id": 46506, "nodeType": "StructDefinition", "src": "435:217:54", "nodes": [], @@ -767,12 +767,12 @@ "members": [ { "constant": false, - "id": 46500, + "id": 46497, "mutability": "mutable", "name": "_ignored", "nameLocation": "468:8:54", "nodeType": "VariableDeclaration", - "scope": 46509, + "scope": 46506, "src": "463:13:54", "stateVariable": false, "storageLocation": "default", @@ -781,7 +781,7 @@ "typeString": "bool" }, "typeName": { - "id": 46499, + "id": 46496, "name": "bool", "nodeType": "ElementaryTypeName", "src": "463:4:54", @@ -794,45 +794,45 @@ }, { "constant": false, - "id": 46504, + "id": 46501, "mutability": "mutable", "name": "orders", "nameLocation": "609:6:54", "nodeType": "VariableDeclaration", - "scope": 46509, + "scope": 46506, "src": "591:24:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus[]" }, "typeName": { "baseType": { - "id": 46502, + "id": 46499, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46501, + "id": 46498, "name": "SwapOrderStatus", "nameLocations": [ "591:15:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "591:15:54" }, - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "591:15:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus" } }, - "id": 46503, + "id": 46500, "nodeType": "ArrayTypeName", "src": "591:17:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus[]" } }, @@ -840,45 +840,45 @@ }, { "constant": false, - "id": 46508, + "id": 46505, "mutability": "mutable", "name": "ocoGroups", "nameLocation": "636:9:54", "nodeType": "VariableDeclaration", - "scope": 46509, + "scope": 46506, "src": "625:20:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46653_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46650_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.OcoGroup[]" }, "typeName": { "baseType": { - "id": 46506, + "id": 46503, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46505, + "id": 46502, "name": "OcoGroup", "nameLocations": [ "625:8:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46653, + "referencedDeclaration": 46650, "src": "625:8:54" }, - "referencedDeclaration": 46653, + "referencedDeclaration": 46650, "src": "625:8:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_storage_ptr", + "typeIdentifier": "t_struct$_OcoGroup_$46650_storage_ptr", "typeString": "struct OrderLib.OcoGroup" } }, - "id": 46507, + "id": 46504, "nodeType": "ArrayTypeName", "src": "625:10:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46653_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46650_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.OcoGroup[]" } }, @@ -887,11 +887,11 @@ ], "name": "OrdersInfo", "nameLocation": "442:10:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46515, + "id": 46512, "nodeType": "EventDefinition", "src": "658:67:54", "nodes": [], @@ -900,18 +900,18 @@ "name": "DexorderSwapPlaced", "nameLocation": "664:18:54", "parameters": { - "id": 46514, + "id": 46511, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46511, + "id": 46508, "indexed": false, "mutability": "mutable", "name": "startOrderIndex", "nameLocation": "691:15:54", "nodeType": "VariableDeclaration", - "scope": 46515, + "scope": 46512, "src": "684:22:54", "stateVariable": false, "storageLocation": "default", @@ -920,7 +920,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46510, + "id": 46507, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "684:6:54", @@ -933,13 +933,13 @@ }, { "constant": false, - "id": 46513, + "id": 46510, "indexed": false, "mutability": "mutable", "name": "numOrders", "nameLocation": "714:9:54", "nodeType": "VariableDeclaration", - "scope": 46515, + "scope": 46512, "src": "708:15:54", "stateVariable": false, "storageLocation": "default", @@ -948,7 +948,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46512, + "id": 46509, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "708:5:54", @@ -964,7 +964,7 @@ } }, { - "id": 46525, + "id": 46522, "nodeType": "EventDefinition", "src": "731:102:54", "nodes": [], @@ -973,18 +973,18 @@ "name": "DexorderSwapFilled", "nameLocation": "737:18:54", "parameters": { - "id": 46524, + "id": 46521, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46517, + "id": 46514, "indexed": false, "mutability": "mutable", "name": "orderIndex", "nameLocation": "764:10:54", "nodeType": "VariableDeclaration", - "scope": 46525, + "scope": 46522, "src": "757:17:54", "stateVariable": false, "storageLocation": "default", @@ -993,7 +993,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46516, + "id": 46513, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "757:6:54", @@ -1006,13 +1006,13 @@ }, { "constant": false, - "id": 46519, + "id": 46516, "indexed": false, "mutability": "mutable", "name": "trancheIndex", "nameLocation": "782:12:54", "nodeType": "VariableDeclaration", - "scope": 46525, + "scope": 46522, "src": "776:18:54", "stateVariable": false, "storageLocation": "default", @@ -1021,7 +1021,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46518, + "id": 46515, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "776:5:54", @@ -1034,13 +1034,13 @@ }, { "constant": false, - "id": 46521, + "id": 46518, "indexed": false, "mutability": "mutable", "name": "amountIn", "nameLocation": "804:8:54", "nodeType": "VariableDeclaration", - "scope": 46525, + "scope": 46522, "src": "796:16:54", "stateVariable": false, "storageLocation": "default", @@ -1049,7 +1049,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46520, + "id": 46517, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "796:7:54", @@ -1062,13 +1062,13 @@ }, { "constant": false, - "id": 46523, + "id": 46520, "indexed": false, "mutability": "mutable", "name": "amountOut", "nameLocation": "822:9:54", "nodeType": "VariableDeclaration", - "scope": 46525, + "scope": 46522, "src": "814:17:54", "stateVariable": false, "storageLocation": "default", @@ -1077,7 +1077,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46522, + "id": 46519, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "814:7:54", @@ -1093,7 +1093,7 @@ } }, { - "id": 46529, + "id": 46526, "nodeType": "EventDefinition", "src": "839:47:54", "nodes": [], @@ -1102,18 +1102,18 @@ "name": "DexorderSwapCanceled", "nameLocation": "845:20:54", "parameters": { - "id": 46528, + "id": 46525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46527, + "id": 46524, "indexed": false, "mutability": "mutable", "name": "orderIndex", "nameLocation": "874:10:54", "nodeType": "VariableDeclaration", - "scope": 46529, + "scope": 46526, "src": "867:17:54", "stateVariable": false, "storageLocation": "default", @@ -1122,7 +1122,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46526, + "id": 46523, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "867:6:54", @@ -1138,35 +1138,35 @@ } }, { - "id": 46534, + "id": 46531, "nodeType": "EnumDefinition", "src": "892:158:54", "nodes": [], "canonicalName": "OrderLib.SwapOrderState", "members": [ { - "id": 46530, + "id": 46527, "name": "Open", "nameLocation": "922:4:54", "nodeType": "EnumValue", "src": "922:4:54" }, { - "id": 46531, + "id": 46528, "name": "Canceled", "nameLocation": "928:8:54", "nodeType": "EnumValue", "src": "928:8:54" }, { - "id": 46532, + "id": 46529, "name": "Filled", "nameLocation": "938:6:54", "nodeType": "EnumValue", "src": "938:6:54" }, { - "id": 46533, + "id": 46530, "name": "Expired", "nameLocation": "946:7:54", "nodeType": "EnumValue", @@ -1177,21 +1177,21 @@ "nameLocation": "897:14:54" }, { - "id": 46537, + "id": 46534, "nodeType": "EnumDefinition", "src": "1056:58:54", "nodes": [], "canonicalName": "OrderLib.Exchange", "members": [ { - "id": 46535, + "id": 46532, "name": "UniswapV2", "nameLocation": "1080:9:54", "nodeType": "EnumValue", "src": "1080:9:54" }, { - "id": 46536, + "id": 46533, "name": "UniswapV3", "nameLocation": "1099:9:54", "nodeType": "EnumValue", @@ -1202,7 +1202,7 @@ "nameLocation": "1061:8:54" }, { - "id": 46543, + "id": 46540, "nodeType": "StructDefinition", "src": "1120:67:54", "nodes": [], @@ -1210,36 +1210,36 @@ "members": [ { "constant": false, - "id": 46540, + "id": 46537, "mutability": "mutable", "name": "exchange", "nameLocation": "1152:8:54", "nodeType": "VariableDeclaration", - "scope": 46543, + "scope": 46540, "src": "1143:17:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, "typeName": { - "id": 46539, + "id": 46536, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46538, + "id": 46535, "name": "Exchange", "nameLocations": [ "1143:8:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "1143:8:54" }, - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "1143:8:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, @@ -1247,12 +1247,12 @@ }, { "constant": false, - "id": 46542, + "id": 46539, "mutability": "mutable", "name": "fee", "nameLocation": "1177:3:54", "nodeType": "VariableDeclaration", - "scope": 46543, + "scope": 46540, "src": "1170:10:54", "stateVariable": false, "storageLocation": "default", @@ -1261,7 +1261,7 @@ "typeString": "uint24" }, "typeName": { - "id": 46541, + "id": 46538, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "1170:6:54", @@ -1275,11 +1275,11 @@ ], "name": "Route", "nameLocation": "1127:5:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46563, + "id": 46560, "nodeType": "StructDefinition", "src": "1193:388:54", "nodes": [], @@ -1287,12 +1287,12 @@ "members": [ { "constant": false, - "id": 46545, + "id": 46542, "mutability": "mutable", "name": "tokenIn", "nameLocation": "1228:7:54", "nodeType": "VariableDeclaration", - "scope": 46563, + "scope": 46560, "src": "1220:15:54", "stateVariable": false, "storageLocation": "default", @@ -1301,7 +1301,7 @@ "typeString": "address" }, "typeName": { - "id": 46544, + "id": 46541, "name": "address", "nodeType": "ElementaryTypeName", "src": "1220:7:54", @@ -1315,12 +1315,12 @@ }, { "constant": false, - "id": 46547, + "id": 46544, "mutability": "mutable", "name": "tokenOut", "nameLocation": "1253:8:54", "nodeType": "VariableDeclaration", - "scope": 46563, + "scope": 46560, "src": "1245:16:54", "stateVariable": false, "storageLocation": "default", @@ -1329,7 +1329,7 @@ "typeString": "address" }, "typeName": { - "id": 46546, + "id": 46543, "name": "address", "nodeType": "ElementaryTypeName", "src": "1245:7:54", @@ -1343,36 +1343,36 @@ }, { "constant": false, - "id": 46550, + "id": 46547, "mutability": "mutable", "name": "route", "nameLocation": "1277:5:54", "nodeType": "VariableDeclaration", - "scope": 46563, + "scope": 46560, "src": "1271:11:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_storage_ptr", + "typeIdentifier": "t_struct$_Route_$46540_storage_ptr", "typeString": "struct OrderLib.Route" }, "typeName": { - "id": 46549, + "id": 46546, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46548, + "id": 46545, "name": "Route", "nameLocations": [ "1271:5:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46543, + "referencedDeclaration": 46540, "src": "1271:5:54" }, - "referencedDeclaration": 46543, + "referencedDeclaration": 46540, "src": "1271:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_storage_ptr", + "typeIdentifier": "t_struct$_Route_$46540_storage_ptr", "typeString": "struct OrderLib.Route" } }, @@ -1380,12 +1380,12 @@ }, { "constant": false, - "id": 46552, + "id": 46549, "mutability": "mutable", "name": "amount", "nameLocation": "1300:6:54", "nodeType": "VariableDeclaration", - "scope": 46563, + "scope": 46560, "src": "1292:14:54", "stateVariable": false, "storageLocation": "default", @@ -1394,7 +1394,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46551, + "id": 46548, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1292:7:54", @@ -1407,12 +1407,12 @@ }, { "constant": false, - "id": 46554, + "id": 46551, "mutability": "mutable", "name": "amountIsInput", "nameLocation": "1321:13:54", "nodeType": "VariableDeclaration", - "scope": 46563, + "scope": 46560, "src": "1316:18:54", "stateVariable": false, "storageLocation": "default", @@ -1421,7 +1421,7 @@ "typeString": "bool" }, "typeName": { - "id": 46553, + "id": 46550, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1316:4:54", @@ -1434,12 +1434,12 @@ }, { "constant": false, - "id": 46556, + "id": 46553, "mutability": "mutable", "name": "outputDirectlyToOwner", "nameLocation": "1349:21:54", "nodeType": "VariableDeclaration", - "scope": 46563, + "scope": 46560, "src": "1344:26:54", "stateVariable": false, "storageLocation": "default", @@ -1448,7 +1448,7 @@ "typeString": "bool" }, "typeName": { - "id": 46555, + "id": 46552, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1344:4:54", @@ -1461,12 +1461,12 @@ }, { "constant": false, - "id": 46558, + "id": 46555, "mutability": "mutable", "name": "chainOrder", "nameLocation": "1387:10:54", "nodeType": "VariableDeclaration", - "scope": 46563, + "scope": 46560, "src": "1380:17:54", "stateVariable": false, "storageLocation": "default", @@ -1475,7 +1475,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46557, + "id": 46554, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1380:6:54", @@ -1488,45 +1488,45 @@ }, { "constant": false, - "id": 46562, + "id": 46559, "mutability": "mutable", "name": "tranches", "nameLocation": "1566:8:54", "nodeType": "VariableDeclaration", - "scope": 46563, + "scope": 46560, "src": "1556:18:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { - "id": 46560, + "id": 46557, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46559, + "id": 46556, "name": "Tranche", "nameLocations": [ "1556:7:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "1556:7:54" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "1556:7:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 46561, + "id": 46558, "nodeType": "ArrayTypeName", "src": "1556:9:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, @@ -1535,11 +1535,11 @@ ], "name": "SwapOrder", "nameLocation": "1200:9:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46584, + "id": 46581, "nodeType": "StructDefinition", "src": "1587:350:54", "nodes": [], @@ -1547,36 +1547,36 @@ "members": [ { "constant": false, - "id": 46566, + "id": 46563, "mutability": "mutable", "name": "order", "nameLocation": "1630:5:54", "nodeType": "VariableDeclaration", - "scope": 46584, + "scope": 46581, "src": "1620:15:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 46565, + "id": 46562, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46564, + "id": 46561, "name": "SwapOrder", "nameLocations": [ "1620:9:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "1620:9:54" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "1620:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, @@ -1584,36 +1584,36 @@ }, { "constant": false, - "id": 46569, + "id": 46566, "mutability": "mutable", "name": "state", "nameLocation": "1660:5:54", "nodeType": "VariableDeclaration", - "scope": 46584, + "scope": 46581, "src": "1645:20:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" }, "typeName": { - "id": 46568, + "id": 46565, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46567, + "id": 46564, "name": "SwapOrderState", "nameLocations": [ "1645:14:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "1645:14:54" }, - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "1645:14:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -1621,12 +1621,12 @@ }, { "constant": false, - "id": 46571, + "id": 46568, "mutability": "mutable", "name": "start", "nameLocation": "1682:5:54", "nodeType": "VariableDeclaration", - "scope": 46584, + "scope": 46581, "src": "1675:12:54", "stateVariable": false, "storageLocation": "default", @@ -1635,7 +1635,7 @@ "typeString": "uint32" }, "typeName": { - "id": 46570, + "id": 46567, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1675:6:54", @@ -1648,12 +1648,12 @@ }, { "constant": false, - "id": 46573, + "id": 46570, "mutability": "mutable", "name": "ocoGroup", "nameLocation": "1704:8:54", "nodeType": "VariableDeclaration", - "scope": 46584, + "scope": 46581, "src": "1697:15:54", "stateVariable": false, "storageLocation": "default", @@ -1662,7 +1662,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46572, + "id": 46569, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1697:6:54", @@ -1675,12 +1675,12 @@ }, { "constant": false, - "id": 46575, + "id": 46572, "mutability": "mutable", "name": "filledIn", "nameLocation": "1730:8:54", "nodeType": "VariableDeclaration", - "scope": 46584, + "scope": 46581, "src": "1722:16:54", "stateVariable": false, "storageLocation": "default", @@ -1689,7 +1689,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46574, + "id": 46571, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1722:7:54", @@ -1702,12 +1702,12 @@ }, { "constant": false, - "id": 46577, + "id": 46574, "mutability": "mutable", "name": "filledOut", "nameLocation": "1766:9:54", "nodeType": "VariableDeclaration", - "scope": 46584, + "scope": 46581, "src": "1758:17:54", "stateVariable": false, "storageLocation": "default", @@ -1716,7 +1716,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46576, + "id": 46573, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1758:7:54", @@ -1729,12 +1729,12 @@ }, { "constant": false, - "id": 46580, + "id": 46577, "mutability": "mutable", "name": "trancheFilledIn", "nameLocation": "1804:15:54", "nodeType": "VariableDeclaration", - "scope": 46584, + "scope": 46581, "src": "1794:25:54", "stateVariable": false, "storageLocation": "default", @@ -1744,7 +1744,7 @@ }, "typeName": { "baseType": { - "id": 46578, + "id": 46575, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1794:7:54", @@ -1753,7 +1753,7 @@ "typeString": "uint256" } }, - "id": 46579, + "id": 46576, "nodeType": "ArrayTypeName", "src": "1794:9:54", "typeDescriptions": { @@ -1765,12 +1765,12 @@ }, { "constant": false, - "id": 46583, + "id": 46580, "mutability": "mutable", "name": "trancheFilledOut", "nameLocation": "1876:16:54", "nodeType": "VariableDeclaration", - "scope": 46584, + "scope": 46581, "src": "1866:26:54", "stateVariable": false, "storageLocation": "default", @@ -1780,7 +1780,7 @@ }, "typeName": { "baseType": { - "id": 46581, + "id": 46578, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1866:7:54", @@ -1789,7 +1789,7 @@ "typeString": "uint256" } }, - "id": 46582, + "id": 46579, "nodeType": "ArrayTypeName", "src": "1866:9:54", "typeDescriptions": { @@ -1802,32 +1802,32 @@ ], "name": "SwapOrderStatus", "nameLocation": "1594:15:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46588, + "id": 46585, "nodeType": "EnumDefinition", "src": "1943:71:54", "nodes": [], "canonicalName": "OrderLib.ConstraintMode", "members": [ { - "id": 46585, + "id": 46582, "name": "Time", "nameLocation": "1973:4:54", "nodeType": "EnumValue", "src": "1973:4:54" }, { - "id": 46586, + "id": 46583, "name": "Line", "nameLocation": "1987:4:54", "nodeType": "EnumValue", "src": "1987:4:54" }, { - "id": 46587, + "id": 46584, "name": "Barrier", "nameLocation": "2001:7:54", "nodeType": "EnumValue", @@ -1838,7 +1838,7 @@ "nameLocation": "1948:14:54" }, { - "id": 46594, + "id": 46591, "nodeType": "StructDefinition", "src": "2020:162:54", "nodes": [], @@ -1846,36 +1846,36 @@ "members": [ { "constant": false, - "id": 46591, + "id": 46588, "mutability": "mutable", "name": "mode", "nameLocation": "2063:4:54", "nodeType": "VariableDeclaration", - "scope": 46594, + "scope": 46591, "src": "2048:19:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, "typeName": { - "id": 46590, + "id": 46587, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46589, + "id": 46586, "name": "ConstraintMode", "nameLocations": [ "2048:14:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "2048:14:54" }, - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "2048:14:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -1883,12 +1883,12 @@ }, { "constant": false, - "id": 46593, + "id": 46590, "mutability": "mutable", "name": "constraint", "nameLocation": "2103:10:54", "nodeType": "VariableDeclaration", - "scope": 46594, + "scope": 46591, "src": "2097:16:54", "stateVariable": false, "storageLocation": "default", @@ -1897,7 +1897,7 @@ "typeString": "bytes" }, "typeName": { - "id": 46592, + "id": 46589, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2097:5:54", @@ -1911,11 +1911,11 @@ ], "name": "Constraint", "nameLocation": "2027:10:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46605, + "id": 46602, "nodeType": "StructDefinition", "src": "2188:180:54", "nodes": [], @@ -1923,12 +1923,12 @@ "members": [ { "constant": false, - "id": 46596, + "id": 46593, "mutability": "mutable", "name": "isAbove", "nameLocation": "2225:7:54", "nodeType": "VariableDeclaration", - "scope": 46605, + "scope": 46602, "src": "2220:12:54", "stateVariable": false, "storageLocation": "default", @@ -1937,7 +1937,7 @@ "typeString": "bool" }, "typeName": { - "id": 46595, + "id": 46592, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2220:4:54", @@ -1950,12 +1950,12 @@ }, { "constant": false, - "id": 46598, + "id": 46595, "mutability": "mutable", "name": "isRatio", "nameLocation": "2247:7:54", "nodeType": "VariableDeclaration", - "scope": 46605, + "scope": 46602, "src": "2242:12:54", "stateVariable": false, "storageLocation": "default", @@ -1964,7 +1964,7 @@ "typeString": "bool" }, "typeName": { - "id": 46597, + "id": 46594, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2242:4:54", @@ -1977,12 +1977,12 @@ }, { "constant": false, - "id": 46600, + "id": 46597, "mutability": "mutable", "name": "time", "nameLocation": "2271:4:54", "nodeType": "VariableDeclaration", - "scope": 46605, + "scope": 46602, "src": "2264:11:54", "stateVariable": false, "storageLocation": "default", @@ -1991,7 +1991,7 @@ "typeString": "uint32" }, "typeName": { - "id": 46599, + "id": 46596, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2264:6:54", @@ -2004,12 +2004,12 @@ }, { "constant": false, - "id": 46602, + "id": 46599, "mutability": "mutable", "name": "valueSqrtX96", "nameLocation": "2293:12:54", "nodeType": "VariableDeclaration", - "scope": 46605, + "scope": 46602, "src": "2285:20:54", "stateVariable": false, "storageLocation": "default", @@ -2018,7 +2018,7 @@ "typeString": "uint160" }, "typeName": { - "id": 46601, + "id": 46598, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "2285:7:54", @@ -2031,12 +2031,12 @@ }, { "constant": false, - "id": 46604, + "id": 46601, "mutability": "mutable", "name": "slopeSqrtX96", "nameLocation": "2322:12:54", "nodeType": "VariableDeclaration", - "scope": 46605, + "scope": 46602, "src": "2315:19:54", "stateVariable": false, "storageLocation": "default", @@ -2045,7 +2045,7 @@ "typeString": "int160" }, "typeName": { - "id": 46603, + "id": 46600, "name": "int160", "nodeType": "ElementaryTypeName", "src": "2315:6:54", @@ -2059,25 +2059,25 @@ ], "name": "LineConstraint", "nameLocation": "2195:14:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46608, + "id": 46605, "nodeType": "EnumDefinition", "src": "2374:144:54", "nodes": [], "canonicalName": "OrderLib.TimeMode", "members": [ { - "id": 46606, + "id": 46603, "name": "Timestamp", "nameLocation": "2398:9:54", "nodeType": "EnumValue", "src": "2398:9:54" }, { - "id": 46607, + "id": 46604, "name": "SinceOrderStart", "nameLocation": "2439:15:54", "nodeType": "EnumValue", @@ -2088,7 +2088,7 @@ "nameLocation": "2379:8:54" }, { - "id": 46614, + "id": 46611, "nodeType": "StructDefinition", "src": "2524:63:54", "nodes": [], @@ -2096,36 +2096,36 @@ "members": [ { "constant": false, - "id": 46611, + "id": 46608, "mutability": "mutable", "name": "mode", "nameLocation": "2555:4:54", "nodeType": "VariableDeclaration", - "scope": 46614, + "scope": 46611, "src": "2546:13:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_TimeMode_$46608", + "typeIdentifier": "t_enum$_TimeMode_$46605", "typeString": "enum OrderLib.TimeMode" }, "typeName": { - "id": 46610, + "id": 46607, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46609, + "id": 46606, "name": "TimeMode", "nameLocations": [ "2546:8:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46608, + "referencedDeclaration": 46605, "src": "2546:8:54" }, - "referencedDeclaration": 46608, + "referencedDeclaration": 46605, "src": "2546:8:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_TimeMode_$46608", + "typeIdentifier": "t_enum$_TimeMode_$46605", "typeString": "enum OrderLib.TimeMode" } }, @@ -2133,12 +2133,12 @@ }, { "constant": false, - "id": 46613, + "id": 46610, "mutability": "mutable", "name": "time", "nameLocation": "2576:4:54", "nodeType": "VariableDeclaration", - "scope": 46614, + "scope": 46611, "src": "2569:11:54", "stateVariable": false, "storageLocation": "default", @@ -2147,7 +2147,7 @@ "typeString": "uint32" }, "typeName": { - "id": 46612, + "id": 46609, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2569:6:54", @@ -2161,11 +2161,11 @@ ], "name": "Time", "nameLocation": "2531:4:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46617, + "id": 46614, "nodeType": "VariableDeclaration", "src": "2593:32:54", "nodes": [], @@ -2173,7 +2173,7 @@ "mutability": "constant", "name": "DISTANT_PAST", "nameLocation": "2609:12:54", - "scope": 47922, + "scope": 47919, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2181,7 +2181,7 @@ "typeString": "uint32" }, "typeName": { - "id": 46615, + "id": 46612, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2593:6:54", @@ -2192,7 +2192,7 @@ }, "value": { "hexValue": "30", - "id": 46616, + "id": 46613, "isConstant": false, "isLValue": false, "isPure": true, @@ -2209,7 +2209,7 @@ "visibility": "internal" }, { - "id": 46624, + "id": 46621, "nodeType": "VariableDeclaration", "src": "2631:49:54", "nodes": [], @@ -2217,7 +2217,7 @@ "mutability": "constant", "name": "DISTANT_FUTURE", "nameLocation": "2647:14:54", - "scope": 47922, + "scope": 47919, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2225,7 +2225,7 @@ "typeString": "uint32" }, "typeName": { - "id": 46618, + "id": 46615, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2631:6:54", @@ -2238,7 +2238,7 @@ "expression": { "arguments": [ { - "id": 46621, + "id": 46618, "isConstant": false, "isLValue": false, "isPure": true, @@ -2250,7 +2250,7 @@ "typeString": "type(uint32)" }, "typeName": { - "id": 46620, + "id": 46617, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2669:6:54", @@ -2265,7 +2265,7 @@ "typeString": "type(uint32)" } ], - "id": 46619, + "id": 46616, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2276,7 +2276,7 @@ "typeString": "function () pure" } }, - "id": 46622, + "id": 46619, "isConstant": false, "isLValue": false, "isPure": true, @@ -2292,7 +2292,7 @@ "typeString": "type(uint32)" } }, - "id": 46623, + "id": 46620, "isConstant": false, "isLValue": false, "isPure": true, @@ -2309,7 +2309,7 @@ "visibility": "internal" }, { - "id": 46631, + "id": 46628, "nodeType": "StructDefinition", "src": "2687:73:54", "nodes": [], @@ -2317,17 +2317,54 @@ "members": [ { "constant": false, - "id": 46627, + "id": 46624, "mutability": "mutable", "name": "earliest", "nameLocation": "2724:8:54", "nodeType": "VariableDeclaration", - "scope": 46631, + "scope": 46628, "src": "2719:13:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_storage_ptr", + "typeIdentifier": "t_struct$_Time_$46611_storage_ptr", + "typeString": "struct OrderLib.Time" + }, + "typeName": { + "id": 46623, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 46622, + "name": "Time", + "nameLocations": [ + "2719:4:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46611, + "src": "2719:4:54" + }, + "referencedDeclaration": 46611, + "src": "2719:4:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Time_$46611_storage_ptr", + "typeString": "struct OrderLib.Time" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 46627, + "mutability": "mutable", + "name": "latest", + "nameLocation": "2747:6:54", + "nodeType": "VariableDeclaration", + "scope": 46628, + "src": "2742:11:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Time_$46611_storage_ptr", "typeString": "struct OrderLib.Time" }, "typeName": { @@ -2336,54 +2373,17 @@ "pathNode": { "id": 46625, "name": "Time", - "nameLocations": [ - "2719:4:54" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46614, - "src": "2719:4:54" - }, - "referencedDeclaration": 46614, - "src": "2719:4:54", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_storage_ptr", - "typeString": "struct OrderLib.Time" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 46630, - "mutability": "mutable", - "name": "latest", - "nameLocation": "2747:6:54", - "nodeType": "VariableDeclaration", - "scope": 46631, - "src": "2742:11:54", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_storage_ptr", - "typeString": "struct OrderLib.Time" - }, - "typeName": { - "id": 46629, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 46628, - "name": "Time", "nameLocations": [ "2742:4:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46614, + "referencedDeclaration": 46611, "src": "2742:4:54" }, - "referencedDeclaration": 46614, + "referencedDeclaration": 46611, "src": "2742:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_storage_ptr", + "typeIdentifier": "t_struct$_Time_$46611_storage_ptr", "typeString": "struct OrderLib.Time" } }, @@ -2392,11 +2392,11 @@ ], "name": "TimeConstraint", "nameLocation": "2694:14:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46638, + "id": 46635, "nodeType": "StructDefinition", "src": "2766:174:54", "nodes": [], @@ -2404,12 +2404,12 @@ "members": [ { "constant": false, - "id": 46633, + "id": 46630, "mutability": "mutable", "name": "fraction", "nameLocation": "2798:8:54", "nodeType": "VariableDeclaration", - "scope": 46638, + "scope": 46635, "src": "2791:15:54", "stateVariable": false, "storageLocation": "default", @@ -2418,7 +2418,7 @@ "typeString": "uint16" }, "typeName": { - "id": 46632, + "id": 46629, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "2791:6:54", @@ -2431,45 +2431,45 @@ }, { "constant": false, - "id": 46637, + "id": 46634, "mutability": "mutable", "name": "constraints", "nameLocation": "2922:11:54", "nodeType": "VariableDeclaration", - "scope": 46638, + "scope": 46635, "src": "2909:24:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { - "id": 46635, + "id": 46632, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46634, + "id": 46631, "name": "Constraint", "nameLocations": [ "2909:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "2909:10:54" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "2909:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 46636, + "id": 46633, "nodeType": "ArrayTypeName", "src": "2909:12:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, @@ -2478,11 +2478,11 @@ ], "name": "Tranche", "nameLocation": "2773:7:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46641, + "id": 46638, "nodeType": "StructDefinition", "src": "2946:61:54", "nodes": [], @@ -2490,12 +2490,12 @@ "members": [ { "constant": false, - "id": 46640, + "id": 46637, "mutability": "mutable", "name": "proof", "nameLocation": "2995:5:54", "nodeType": "VariableDeclaration", - "scope": 46641, + "scope": 46638, "src": "2990:10:54", "stateVariable": false, "storageLocation": "default", @@ -2504,7 +2504,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46639, + "id": 46636, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2990:4:54", @@ -2518,32 +2518,32 @@ ], "name": "PriceProof", "nameLocation": "2953:10:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46645, + "id": 46642, "nodeType": "EnumDefinition", "src": "3013:97:54", "nodes": [], "canonicalName": "OrderLib.OcoMode", "members": [ { - "id": 46642, + "id": 46639, "name": "NO_OCO", "nameLocation": "3036:6:54", "nodeType": "EnumValue", "src": "3036:6:54" }, { - "id": 46643, + "id": 46640, "name": "CANCEL_ON_PARTIAL_FILL", "nameLocation": "3052:22:54", "nodeType": "EnumValue", "src": "3052:22:54" }, { - "id": 46644, + "id": 46641, "name": "CANCEL_ON_COMPLETION", "nameLocation": "3084:20:54", "nodeType": "EnumValue", @@ -2554,7 +2554,7 @@ "nameLocation": "3018:7:54" }, { - "id": 46653, + "id": 46650, "nodeType": "StructDefinition", "src": "3116:167:54", "nodes": [], @@ -2562,36 +2562,36 @@ "members": [ { "constant": false, - "id": 46648, + "id": 46645, "mutability": "mutable", "name": "mode", "nameLocation": "3150:4:54", "nodeType": "VariableDeclaration", - "scope": 46653, + "scope": 46650, "src": "3142:12:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" }, "typeName": { - "id": 46647, + "id": 46644, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46646, + "id": 46643, "name": "OcoMode", "nameLocations": [ "3142:7:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "3142:7:54" }, - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "3142:7:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -2599,12 +2599,12 @@ }, { "constant": false, - "id": 46650, + "id": 46647, "mutability": "mutable", "name": "startIndex", "nameLocation": "3171:10:54", "nodeType": "VariableDeclaration", - "scope": 46653, + "scope": 46650, "src": "3164:17:54", "stateVariable": false, "storageLocation": "default", @@ -2613,7 +2613,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46649, + "id": 46646, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3164:6:54", @@ -2626,12 +2626,12 @@ }, { "constant": false, - "id": 46652, + "id": 46649, "mutability": "mutable", "name": "num", "nameLocation": "3233:3:54", "nodeType": "VariableDeclaration", - "scope": 46653, + "scope": 46650, "src": "3227:9:54", "stateVariable": false, "storageLocation": "default", @@ -2640,7 +2640,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46651, + "id": 46648, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3227:5:54", @@ -2654,78 +2654,78 @@ ], "name": "OcoGroup", "nameLocation": "3123:8:54", - "scope": 47922, + "scope": 47919, "visibility": "public" }, { - "id": 46688, + "id": 46685, "nodeType": "FunctionDefinition", "src": "3289:226:54", "nodes": [], "body": { - "id": 46687, + "id": 46684, "nodeType": "Block", "src": "3368:147:54", "nodes": [], "statements": [ { "assignments": [ - 46666 + 46663 ], "declarations": [ { "constant": false, - "id": 46666, + "id": 46663, "mutability": "mutable", "name": "orders", "nameLocation": "3397:6:54", "nodeType": "VariableDeclaration", - "scope": 46687, + "scope": 46684, "src": "3378:25:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder[]" }, "typeName": { "baseType": { - "id": 46664, + "id": 46661, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46663, + "id": 46660, "name": "SwapOrder", "nameLocations": [ "3378:9:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3378:9:54" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3378:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, - "id": 46665, + "id": 46662, "nodeType": "ArrayTypeName", "src": "3378:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.SwapOrder[]" } }, "visibility": "internal" } ], - "id": 46673, + "id": 46670, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 46671, + "id": 46668, "isConstant": false, "isLValue": false, "isPure": true, @@ -2747,7 +2747,7 @@ "typeString": "int_const 1" } ], - "id": 46670, + "id": 46667, "isConstant": false, "isLValue": false, "isPure": true, @@ -2755,40 +2755,40 @@ "nodeType": "NewExpression", "src": "3406:15:54", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.SwapOrder memory[] memory)" }, "typeName": { "baseType": { - "id": 46668, + "id": 46665, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46667, + "id": 46664, "name": "SwapOrder", "nameLocations": [ "3410:9:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3410:9:54" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3410:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, - "id": 46669, + "id": 46666, "nodeType": "ArrayTypeName", "src": "3410:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.SwapOrder[]" } } }, - "id": 46672, + "id": 46669, "isConstant": false, "isLValue": false, "isPure": true, @@ -2800,7 +2800,7 @@ "src": "3406:18:54", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, @@ -2809,28 +2809,28 @@ }, { "expression": { - "id": 46678, + "id": 46675, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 46674, + "id": 46671, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46666, + "referencedDeclaration": 46663, "src": "3434:6:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, - "id": 46676, + "id": 46673, "indexExpression": { "hexValue": "30", - "id": 46675, + "id": 46672, "isConstant": false, "isLValue": false, "isPure": true, @@ -2851,31 +2851,31 @@ "nodeType": "IndexAccess", "src": "3434:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 46677, + "id": 46674, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46659, + "referencedDeclaration": 46656, "src": "3446:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, "src": "3434:17:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46679, + "id": 46676, "nodeType": "ExpressionStatement", "src": "3434:17:54" }, @@ -2883,43 +2883,43 @@ "expression": { "arguments": [ { - "id": 46681, + "id": 46678, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46656, + "referencedDeclaration": 46653, "src": "3481:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, { - "id": 46682, + "id": 46679, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46666, + "referencedDeclaration": 46663, "src": "3486:6:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, { "expression": { - "id": 46683, + "id": 46680, "name": "OcoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "3493:7:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_OcoMode_$46645_$", + "typeIdentifier": "t_type$_t_enum$_OcoMode_$46642_$", "typeString": "type(enum OrderLib.OcoMode)" } }, - "id": 46684, + "id": 46681, "isConstant": false, "isLValue": false, "isPure": true, @@ -2927,10 +2927,10 @@ "memberLocation": "3501:6:54", "memberName": "NO_OCO", "nodeType": "MemberAccess", - "referencedDeclaration": 46642, + "referencedDeclaration": 46639, "src": "3493:14:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } } @@ -2938,30 +2938,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" }, { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" }, { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } ], - "id": 46680, + "id": 46677, "name": "_placeOrders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47021, + "referencedDeclaration": 47018, "src": "3468:12:54", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr_$_t_enum$_OcoMode_$46645_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr_$_t_enum$_OcoMode_$46642_$returns$__$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,struct OrderLib.SwapOrder memory[] memory,enum OrderLib.OcoMode)" } }, - "id": 46685, + "id": 46682, "isConstant": false, "isLValue": false, "isPure": false, @@ -2977,8 +2977,8 @@ "typeString": "tuple()" } }, - "functionReturnParameters": 46661, - "id": 46686, + "functionReturnParameters": 46658, + "id": 46683, "nodeType": "Return", "src": "3461:47:54" } @@ -2990,41 +2990,41 @@ "name": "_placeOrder", "nameLocation": "3298:11:54", "parameters": { - "id": 46660, + "id": 46657, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46656, + "id": 46653, "mutability": "mutable", "name": "self", "nameLocation": "3329:4:54", "nodeType": "VariableDeclaration", - "scope": 46688, + "scope": 46685, "src": "3310:23:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" }, "typeName": { - "id": 46655, + "id": 46652, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46654, + "id": 46651, "name": "OrdersInfo", "nameLocations": [ "3310:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "3310:10:54" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "3310:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } }, @@ -3032,36 +3032,36 @@ }, { "constant": false, - "id": 46659, + "id": 46656, "mutability": "mutable", "name": "order", "nameLocation": "3352:5:54", "nodeType": "VariableDeclaration", - "scope": 46688, + "scope": 46685, "src": "3335:22:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 46658, + "id": 46655, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46657, + "id": 46654, "name": "SwapOrder", "nameLocations": [ "3335:9:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3335:9:54" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3335:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, @@ -3071,23 +3071,23 @@ "src": "3309:49:54" }, "returnParameters": { - "id": 46661, + "id": 46658, "nodeType": "ParameterList", "parameters": [], "src": "3368:0:54" }, - "scope": 47922, + "scope": 47919, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 47021, + "id": 47018, "nodeType": "FunctionDefinition", "src": "3521:2345:54", "nodes": [], "body": { - "id": 47020, + "id": 47017, "nodeType": "Block", "src": "3621:2245:54", "nodes": [], @@ -3100,25 +3100,25 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 46709, + "id": 46706, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 46702, + "id": 46699, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46695, + "referencedDeclaration": 46692, "src": "3639:6:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, - "id": 46703, + "id": 46700, "isConstant": false, "isLValue": false, "isPure": false, @@ -3138,7 +3138,7 @@ "expression": { "arguments": [ { - "id": 46706, + "id": 46703, "isConstant": false, "isLValue": false, "isPure": true, @@ -3150,7 +3150,7 @@ "typeString": "type(uint8)" }, "typeName": { - "id": 46705, + "id": 46702, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3660:5:54", @@ -3165,7 +3165,7 @@ "typeString": "type(uint8)" } ], - "id": 46704, + "id": 46701, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3176,7 +3176,7 @@ "typeString": "function () pure" } }, - "id": 46707, + "id": 46704, "isConstant": false, "isLValue": false, "isPure": true, @@ -3192,7 +3192,7 @@ "typeString": "type(uint8)" } }, - "id": 46708, + "id": 46705, "isConstant": false, "isLValue": false, "isPure": true, @@ -3220,7 +3220,7 @@ "typeString": "bool" } ], - "id": 46701, + "id": 46698, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3234,7 +3234,7 @@ "typeString": "function (bool) pure" } }, - "id": 46710, + "id": 46707, "isConstant": false, "isLValue": false, "isPure": false, @@ -3250,23 +3250,23 @@ "typeString": "tuple()" } }, - "id": 46711, + "id": 46708, "nodeType": "ExpressionStatement", "src": "3631:40:54" }, { "assignments": [ - 46713 + 46710 ], "declarations": [ { "constant": false, - "id": 46713, + "id": 46710, "mutability": "mutable", "name": "startIndex", "nameLocation": "3688:10:54", "nodeType": "VariableDeclaration", - "scope": 47020, + "scope": 47017, "src": "3681:17:54", "stateVariable": false, "storageLocation": "default", @@ -3275,7 +3275,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46712, + "id": 46709, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3681:6:54", @@ -3287,24 +3287,24 @@ "visibility": "internal" } ], - "id": 46720, + "id": 46717, "initialValue": { "arguments": [ { "expression": { "expression": { - "id": 46716, + "id": 46713, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46691, + "referencedDeclaration": 46688, "src": "3708:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 46717, + "id": 46714, "isConstant": false, "isLValue": true, "isPure": false, @@ -3312,14 +3312,14 @@ "memberLocation": "3713:6:54", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "3708:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 46718, + "id": 46715, "isConstant": false, "isLValue": false, "isPure": false, @@ -3341,7 +3341,7 @@ "typeString": "uint256" } ], - "id": 46715, + "id": 46712, "isConstant": false, "isLValue": false, "isPure": true, @@ -3353,14 +3353,14 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 46714, + "id": 46711, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3701:6:54", "typeDescriptions": {} } }, - "id": 46719, + "id": 46716, "isConstant": false, "isLValue": false, "isPure": false, @@ -3387,17 +3387,17 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 46728, + "id": 46725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 46722, + "id": 46719, "name": "startIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46713, + "referencedDeclaration": 46710, "src": "3745:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -3410,7 +3410,7 @@ "expression": { "arguments": [ { - "id": 46725, + "id": 46722, "isConstant": false, "isLValue": false, "isPure": true, @@ -3422,7 +3422,7 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 46724, + "id": 46721, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3763:6:54", @@ -3437,7 +3437,7 @@ "typeString": "type(uint64)" } ], - "id": 46723, + "id": 46720, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3448,7 +3448,7 @@ "typeString": "function () pure" } }, - "id": 46726, + "id": 46723, "isConstant": false, "isLValue": false, "isPure": true, @@ -3464,7 +3464,7 @@ "typeString": "type(uint64)" } }, - "id": 46727, + "id": 46724, "isConstant": false, "isLValue": false, "isPure": true, @@ -3492,7 +3492,7 @@ "typeString": "bool" } ], - "id": 46721, + "id": 46718, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3506,7 +3506,7 @@ "typeString": "function (bool) pure" } }, - "id": 46729, + "id": 46726, "isConstant": false, "isLValue": false, "isPure": false, @@ -3522,23 +3522,23 @@ "typeString": "tuple()" } }, - "id": 46730, + "id": 46727, "nodeType": "ExpressionStatement", "src": "3737:38:54" }, { "assignments": [ - 46732 + 46729 ], "declarations": [ { "constant": false, - "id": 46732, + "id": 46729, "mutability": "mutable", "name": "ocoGroup", "nameLocation": "3792:8:54", "nodeType": "VariableDeclaration", - "scope": 47020, + "scope": 47017, "src": "3785:15:54", "stateVariable": false, "storageLocation": "default", @@ -3547,7 +3547,7 @@ "typeString": "uint64" }, "typeName": { - "id": 46731, + "id": 46728, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3785:6:54", @@ -3559,30 +3559,30 @@ "visibility": "internal" } ], - "id": 46733, + "id": 46730, "nodeType": "VariableDeclarationStatement", "src": "3785:15:54" }, { "condition": { "commonType": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" }, - "id": 46737, + "id": 46734, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 46734, + "id": 46731, "name": "ocoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46698, + "referencedDeclaration": 46695, "src": "3814:7:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -3590,18 +3590,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 46735, + "id": 46732, "name": "OcoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "3825:7:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_OcoMode_$46645_$", + "typeIdentifier": "t_type$_t_enum$_OcoMode_$46642_$", "typeString": "type(enum OrderLib.OcoMode)" } }, - "id": 46736, + "id": 46733, "isConstant": false, "isLValue": false, "isPure": true, @@ -3609,10 +3609,10 @@ "memberLocation": "3833:6:54", "memberName": "NO_OCO", "nodeType": "MemberAccess", - "referencedDeclaration": 46642, + "referencedDeclaration": 46639, "src": "3825:14:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -3628,30 +3628,30 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 46750, + "id": 46747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" }, - "id": 46745, + "id": 46742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 46742, + "id": 46739, "name": "ocoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46698, + "referencedDeclaration": 46695, "src": "3897:7:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -3659,18 +3659,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 46743, + "id": 46740, "name": "OcoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "3908:7:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_OcoMode_$46645_$", + "typeIdentifier": "t_type$_t_enum$_OcoMode_$46642_$", "typeString": "type(enum OrderLib.OcoMode)" } }, - "id": 46744, + "id": 46741, "isConstant": false, "isLValue": false, "isPure": true, @@ -3678,10 +3678,10 @@ "memberLocation": "3916:22:54", "memberName": "CANCEL_ON_PARTIAL_FILL", "nodeType": "MemberAccess", - "referencedDeclaration": 46643, + "referencedDeclaration": 46640, "src": "3908:30:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -3695,23 +3695,23 @@ "operator": "||", "rightExpression": { "commonType": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" }, - "id": 46749, + "id": 46746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 46746, + "id": 46743, "name": "ocoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46698, + "referencedDeclaration": 46695, "src": "3942:7:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -3719,18 +3719,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 46747, + "id": 46744, "name": "OcoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "3953:7:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_OcoMode_$46645_$", + "typeIdentifier": "t_type$_t_enum$_OcoMode_$46642_$", "typeString": "type(enum OrderLib.OcoMode)" } }, - "id": 46748, + "id": 46745, "isConstant": false, "isLValue": false, "isPure": true, @@ -3738,10 +3738,10 @@ "memberLocation": "3961:20:54", "memberName": "CANCEL_ON_COMPLETION", "nodeType": "MemberAccess", - "referencedDeclaration": 46644, + "referencedDeclaration": 46641, "src": "3953:28:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -3762,7 +3762,7 @@ "arguments": [ { "hexValue": "4f434f4d", - "id": 46778, + "id": 46775, "isConstant": false, "isLValue": false, "isPure": true, @@ -3784,7 +3784,7 @@ "typeString": "literal_string \"OCOM\"" } ], - "id": 46777, + "id": 46774, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3798,7 +3798,7 @@ "typeString": "function (string memory) pure" } }, - "id": 46779, + "id": 46776, "isConstant": false, "isLValue": false, "isPure": false, @@ -3814,31 +3814,31 @@ "typeString": "tuple()" } }, - "id": 46780, + "id": 46777, "nodeType": "ExpressionStatement", "src": "4160:14:54" }, - "id": 46781, + "id": 46778, "nodeType": "IfStatement", "src": "3892:282:54", "trueBody": { - "id": 46776, + "id": 46773, "nodeType": "Block", "src": "3983:151:54", "statements": [ { "expression": { - "id": 46758, + "id": 46755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 46751, + "id": 46748, "name": "ocoGroup", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46732, + "referencedDeclaration": 46729, "src": "3997:8:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -3852,18 +3852,18 @@ { "expression": { "expression": { - "id": 46754, + "id": 46751, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46691, + "referencedDeclaration": 46688, "src": "4015:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 46755, + "id": 46752, "isConstant": false, "isLValue": true, "isPure": false, @@ -3871,14 +3871,14 @@ "memberLocation": "4020:9:54", "memberName": "ocoGroups", "nodeType": "MemberAccess", - "referencedDeclaration": 46508, + "referencedDeclaration": 46505, "src": "4015:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46653_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46650_storage_$dyn_storage", "typeString": "struct OrderLib.OcoGroup storage ref[] storage ref" } }, - "id": 46756, + "id": 46753, "isConstant": false, "isLValue": false, "isPure": false, @@ -3900,7 +3900,7 @@ "typeString": "uint256" } ], - "id": 46753, + "id": 46750, "isConstant": false, "isLValue": false, "isPure": true, @@ -3912,14 +3912,14 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 46752, + "id": 46749, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "4008:6:54", "typeDescriptions": {} } }, - "id": 46757, + "id": 46754, "isConstant": false, "isLValue": false, "isPure": false, @@ -3941,7 +3941,7 @@ "typeString": "uint64" } }, - "id": 46759, + "id": 46756, "nodeType": "ExpressionStatement", "src": "3997:40:54" }, @@ -3951,23 +3951,23 @@ { "arguments": [ { - "id": 46766, + "id": 46763, "name": "ocoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46698, + "referencedDeclaration": 46695, "src": "4080:7:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, { - "id": 46767, + "id": 46764, "name": "startIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46713, + "referencedDeclaration": 46710, "src": "4089:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -3978,18 +3978,18 @@ "arguments": [ { "expression": { - "id": 46770, + "id": 46767, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46695, + "referencedDeclaration": 46692, "src": "4107:6:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, - "id": 46771, + "id": 46768, "isConstant": false, "isLValue": false, "isPure": false, @@ -4011,7 +4011,7 @@ "typeString": "uint256" } ], - "id": 46769, + "id": 46766, "isConstant": false, "isLValue": false, "isPure": true, @@ -4023,14 +4023,14 @@ "typeString": "type(uint8)" }, "typeName": { - "id": 46768, + "id": 46765, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4101:5:54", "typeDescriptions": {} } }, - "id": 46772, + "id": 46769, "isConstant": false, "isLValue": false, "isPure": false, @@ -4050,7 +4050,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" }, { @@ -4062,18 +4062,18 @@ "typeString": "uint8" } ], - "id": 46765, + "id": 46762, "name": "OcoGroup", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46653, + "referencedDeclaration": 46650, "src": "4071:8:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_OcoGroup_$46653_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_OcoGroup_$46650_storage_ptr_$", "typeString": "type(struct OrderLib.OcoGroup storage pointer)" } }, - "id": 46773, + "id": 46770, "isConstant": false, "isLValue": false, "isPure": false, @@ -4085,7 +4085,7 @@ "src": "4071:51:54", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_memory_ptr", + "typeIdentifier": "t_struct$_OcoGroup_$46650_memory_ptr", "typeString": "struct OrderLib.OcoGroup memory" } } @@ -4093,24 +4093,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_OcoGroup_$46653_memory_ptr", + "typeIdentifier": "t_struct$_OcoGroup_$46650_memory_ptr", "typeString": "struct OrderLib.OcoGroup memory" } ], "expression": { "expression": { - "id": 46760, + "id": 46757, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46691, + "referencedDeclaration": 46688, "src": "4051:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 46763, + "id": 46760, "isConstant": false, "isLValue": true, "isPure": false, @@ -4118,14 +4118,14 @@ "memberLocation": "4056:9:54", "memberName": "ocoGroups", "nodeType": "MemberAccess", - "referencedDeclaration": 46508, + "referencedDeclaration": 46505, "src": "4051:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46653_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46650_storage_$dyn_storage", "typeString": "struct OrderLib.OcoGroup storage ref[] storage ref" } }, - "id": 46764, + "id": 46761, "isConstant": false, "isLValue": false, "isPure": false, @@ -4135,11 +4135,11 @@ "nodeType": "MemberAccess", "src": "4051:19:54", "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_OcoGroup_$46653_storage_$dyn_storage_ptr_$_t_struct$_OcoGroup_$46653_storage_$returns$__$attached_to$_t_array$_t_struct$_OcoGroup_$46653_storage_$dyn_storage_ptr_$", + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_OcoGroup_$46650_storage_$dyn_storage_ptr_$_t_struct$_OcoGroup_$46650_storage_$returns$__$attached_to$_t_array$_t_struct$_OcoGroup_$46650_storage_$dyn_storage_ptr_$", "typeString": "function (struct OrderLib.OcoGroup storage ref[] storage pointer,struct OrderLib.OcoGroup storage ref)" } }, - "id": 46774, + "id": 46771, "isConstant": false, "isLValue": false, "isPure": false, @@ -4155,29 +4155,29 @@ "typeString": "tuple()" } }, - "id": 46775, + "id": 46772, "nodeType": "ExpressionStatement", "src": "4051:72:54" } ] } }, - "id": 46782, + "id": 46779, "nodeType": "IfStatement", "src": "3810:364:54", "trueBody": { "expression": { - "id": 46740, + "id": 46737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 46738, + "id": 46735, "name": "ocoGroup", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46732, + "referencedDeclaration": 46729, "src": "3854:8:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4187,11 +4187,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 46739, + "id": 46736, "name": "NO_OCO_INDEX", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46498, + "referencedDeclaration": 46495, "src": "3865:12:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4204,81 +4204,81 @@ "typeString": "uint64" } }, - "id": 46741, + "id": 46738, "nodeType": "ExpressionStatement", "src": "3854:23:54" } }, { "body": { - "id": 47009, + "id": 47006, "nodeType": "Block", "src": "4227:1567:54", "statements": [ { "assignments": [ - 46796 + 46793 ], "declarations": [ { "constant": false, - "id": 46796, + "id": 46793, "mutability": "mutable", "name": "order", "nameLocation": "4258:5:54", "nodeType": "VariableDeclaration", - "scope": 47009, + "scope": 47006, "src": "4241:22:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 46795, + "id": 46792, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46794, + "id": 46791, "name": "SwapOrder", "nameLocations": [ "4241:9:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "4241:9:54" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "4241:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], - "id": 46800, + "id": 46797, "initialValue": { "baseExpression": { - "id": 46797, + "id": 46794, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46695, + "referencedDeclaration": 46692, "src": "4266:6:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, - "id": 46799, + "id": 46796, "indexExpression": { - "id": 46798, + "id": 46795, "name": "o", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46784, + "referencedDeclaration": 46781, "src": "4273:1:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -4292,7 +4292,7 @@ "nodeType": "IndexAccess", "src": "4266:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, @@ -4304,10 +4304,10 @@ "arguments": [ { "commonType": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, - "id": 46807, + "id": 46804, "isConstant": false, "isLValue": false, "isPure": false, @@ -4315,18 +4315,18 @@ "leftExpression": { "expression": { "expression": { - "id": 46802, + "id": 46799, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "4297:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46803, + "id": 46800, "isConstant": false, "isLValue": true, "isPure": false, @@ -4334,14 +4334,14 @@ "memberLocation": "4303:5:54", "memberName": "route", "nodeType": "MemberAccess", - "referencedDeclaration": 46550, + "referencedDeclaration": 46547, "src": "4297:11:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, - "id": 46804, + "id": 46801, "isConstant": false, "isLValue": true, "isPure": false, @@ -4349,10 +4349,10 @@ "memberLocation": "4309:8:54", "memberName": "exchange", "nodeType": "MemberAccess", - "referencedDeclaration": 46540, + "referencedDeclaration": 46537, "src": "4297:20:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, @@ -4360,18 +4360,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 46805, + "id": 46802, "name": "Exchange", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "4321:8:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", + "typeIdentifier": "t_type$_t_enum$_Exchange_$46534_$", "typeString": "type(enum OrderLib.Exchange)" } }, - "id": 46806, + "id": 46803, "isConstant": false, "isLValue": false, "isPure": true, @@ -4379,10 +4379,10 @@ "memberLocation": "4330:9:54", "memberName": "UniswapV3", "nodeType": "MemberAccess", - "referencedDeclaration": 46536, + "referencedDeclaration": 46533, "src": "4321:18:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, @@ -4394,7 +4394,7 @@ }, { "hexValue": "5552", - "id": 46808, + "id": 46805, "isConstant": false, "isLValue": false, "isPure": true, @@ -4420,7 +4420,7 @@ "typeString": "literal_string \"UR\"" } ], - "id": 46801, + "id": 46798, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4434,7 +4434,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 46809, + "id": 46806, "isConstant": false, "isLValue": false, "isPure": false, @@ -4450,23 +4450,23 @@ "typeString": "tuple()" } }, - "id": 46810, + "id": 46807, "nodeType": "ExpressionStatement", "src": "4289:57:54" }, { "assignments": [ - 46812 + 46809 ], "declarations": [ { "constant": false, - "id": 46812, + "id": 46809, "mutability": "mutable", "name": "orderIndex", "nameLocation": "4565:10:54", "nodeType": "VariableDeclaration", - "scope": 47009, + "scope": 47006, "src": "4560:15:54", "stateVariable": false, "storageLocation": "default", @@ -4475,7 +4475,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46811, + "id": 46808, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4560:4:54", @@ -4487,22 +4487,22 @@ "visibility": "internal" } ], - "id": 46816, + "id": 46813, "initialValue": { "expression": { "expression": { - "id": 46813, + "id": 46810, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46691, + "referencedDeclaration": 46688, "src": "4578:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 46814, + "id": 46811, "isConstant": false, "isLValue": true, "isPure": false, @@ -4510,14 +4510,14 @@ "memberLocation": "4583:6:54", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "4578:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 46815, + "id": 46812, "isConstant": false, "isLValue": false, "isPure": false, @@ -4541,18 +4541,18 @@ "argumentTypes": [], "expression": { "expression": { - "id": 46817, + "id": 46814, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46691, + "referencedDeclaration": 46688, "src": "4610:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 46820, + "id": 46817, "isConstant": false, "isLValue": true, "isPure": false, @@ -4560,14 +4560,14 @@ "memberLocation": "4615:6:54", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "4610:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 46821, + "id": 46818, "isConstant": false, "isLValue": false, "isPure": false, @@ -4577,11 +4577,11 @@ "nodeType": "MemberAccess", "src": "4610:16:54", "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage_ptr_$returns$_t_struct$_SwapOrderStatus_$46584_storage_$attached_to$_t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage_ptr_$", + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage_ptr_$returns$_t_struct$_SwapOrderStatus_$46581_storage_$attached_to$_t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage_ptr_$", "typeString": "function (struct OrderLib.SwapOrderStatus storage ref[] storage pointer) returns (struct OrderLib.SwapOrderStatus storage ref)" } }, - "id": 46822, + "id": 46819, "isConstant": false, "isLValue": true, "isPure": false, @@ -4593,73 +4593,73 @@ "src": "4610:18:54", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref" } }, - "id": 46823, + "id": 46820, "nodeType": "ExpressionStatement", "src": "4610:18:54" }, { "assignments": [ - 46826 + 46823 ], "declarations": [ { "constant": false, - "id": 46826, + "id": 46823, "mutability": "mutable", "name": "status", "nameLocation": "4666:6:54", "nodeType": "VariableDeclaration", - "scope": 47009, + "scope": 47006, "src": "4642:30:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus" }, "typeName": { - "id": 46825, + "id": 46822, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46824, + "id": 46821, "name": "SwapOrderStatus", "nameLocations": [ "4642:15:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "4642:15:54" }, - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "4642:15:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus" } }, "visibility": "internal" } ], - "id": 46831, + "id": 46828, "initialValue": { "baseExpression": { "expression": { - "id": 46827, + "id": 46824, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46691, + "referencedDeclaration": 46688, "src": "4675:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 46828, + "id": 46825, "isConstant": false, "isLValue": true, "isPure": false, @@ -4667,20 +4667,20 @@ "memberLocation": "4680:6:54", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "4675:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 46830, + "id": 46827, "indexExpression": { - "id": 46829, + "id": 46826, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46812, + "referencedDeclaration": 46809, "src": "4687:10:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4694,7 +4694,7 @@ "nodeType": "IndexAccess", "src": "4675:23:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref" } }, @@ -4703,7 +4703,7 @@ }, { "expression": { - "id": 46839, + "id": 46836, "isConstant": false, "isLValue": false, "isPure": false, @@ -4711,18 +4711,18 @@ "leftHandSide": { "expression": { "expression": { - "id": 46832, + "id": 46829, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "4712:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46835, + "id": 46832, "isConstant": false, "isLValue": true, "isPure": false, @@ -4730,14 +4730,14 @@ "memberLocation": "4719:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "4712:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46836, + "id": 46833, "isConstant": false, "isLValue": true, "isPure": false, @@ -4745,7 +4745,7 @@ "memberLocation": "4725:6:54", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 46552, + "referencedDeclaration": 46549, "src": "4712:19:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4756,18 +4756,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46837, + "id": 46834, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "4734:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46838, + "id": 46835, "isConstant": false, "isLValue": true, "isPure": false, @@ -4775,7 +4775,7 @@ "memberLocation": "4740:6:54", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 46552, + "referencedDeclaration": 46549, "src": "4734:12:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4788,13 +4788,13 @@ "typeString": "uint256" } }, - "id": 46840, + "id": 46837, "nodeType": "ExpressionStatement", "src": "4712:34:54" }, { "expression": { - "id": 46848, + "id": 46845, "isConstant": false, "isLValue": false, "isPure": false, @@ -4802,18 +4802,18 @@ "leftHandSide": { "expression": { "expression": { - "id": 46841, + "id": 46838, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "4760:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46844, + "id": 46841, "isConstant": false, "isLValue": true, "isPure": false, @@ -4821,14 +4821,14 @@ "memberLocation": "4767:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "4760:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46845, + "id": 46842, "isConstant": false, "isLValue": true, "isPure": false, @@ -4836,7 +4836,7 @@ "memberLocation": "4773:13:54", "memberName": "amountIsInput", "nodeType": "MemberAccess", - "referencedDeclaration": 46554, + "referencedDeclaration": 46551, "src": "4760:26:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4847,18 +4847,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46846, + "id": 46843, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "4789:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46847, + "id": 46844, "isConstant": false, "isLValue": true, "isPure": false, @@ -4866,7 +4866,7 @@ "memberLocation": "4795:13:54", "memberName": "amountIsInput", "nodeType": "MemberAccess", - "referencedDeclaration": 46554, + "referencedDeclaration": 46551, "src": "4789:19:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4879,13 +4879,13 @@ "typeString": "bool" } }, - "id": 46849, + "id": 46846, "nodeType": "ExpressionStatement", "src": "4760:48:54" }, { "expression": { - "id": 46857, + "id": 46854, "isConstant": false, "isLValue": false, "isPure": false, @@ -4893,18 +4893,18 @@ "leftHandSide": { "expression": { "expression": { - "id": 46850, + "id": 46847, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "4822:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46853, + "id": 46850, "isConstant": false, "isLValue": true, "isPure": false, @@ -4912,14 +4912,14 @@ "memberLocation": "4829:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "4822:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46854, + "id": 46851, "isConstant": false, "isLValue": true, "isPure": false, @@ -4927,7 +4927,7 @@ "memberLocation": "4835:7:54", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46545, + "referencedDeclaration": 46542, "src": "4822:20:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4938,18 +4938,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46855, + "id": 46852, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "4845:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46856, + "id": 46853, "isConstant": false, "isLValue": true, "isPure": false, @@ -4957,7 +4957,7 @@ "memberLocation": "4851:7:54", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46545, + "referencedDeclaration": 46542, "src": "4845:13:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4970,13 +4970,13 @@ "typeString": "address" } }, - "id": 46858, + "id": 46855, "nodeType": "ExpressionStatement", "src": "4822:36:54" }, { "expression": { - "id": 46866, + "id": 46863, "isConstant": false, "isLValue": false, "isPure": false, @@ -4984,18 +4984,18 @@ "leftHandSide": { "expression": { "expression": { - "id": 46859, + "id": 46856, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "4872:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46862, + "id": 46859, "isConstant": false, "isLValue": true, "isPure": false, @@ -5003,14 +5003,14 @@ "memberLocation": "4879:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "4872:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46863, + "id": 46860, "isConstant": false, "isLValue": true, "isPure": false, @@ -5018,7 +5018,7 @@ "memberLocation": "4885:8:54", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46547, + "referencedDeclaration": 46544, "src": "4872:21:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5029,18 +5029,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46864, + "id": 46861, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "4896:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46865, + "id": 46862, "isConstant": false, "isLValue": true, "isPure": false, @@ -5048,7 +5048,7 @@ "memberLocation": "4902:8:54", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46547, + "referencedDeclaration": 46544, "src": "4896:14:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5061,13 +5061,13 @@ "typeString": "address" } }, - "id": 46867, + "id": 46864, "nodeType": "ExpressionStatement", "src": "4872:38:54" }, { "expression": { - "id": 46875, + "id": 46872, "isConstant": false, "isLValue": false, "isPure": false, @@ -5075,18 +5075,18 @@ "leftHandSide": { "expression": { "expression": { - "id": 46868, + "id": 46865, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "4924:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46871, + "id": 46868, "isConstant": false, "isLValue": true, "isPure": false, @@ -5094,14 +5094,14 @@ "memberLocation": "4931:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "4924:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46872, + "id": 46869, "isConstant": false, "isLValue": true, "isPure": false, @@ -5109,10 +5109,10 @@ "memberLocation": "4937:5:54", "memberName": "route", "nodeType": "MemberAccess", - "referencedDeclaration": 46550, + "referencedDeclaration": 46547, "src": "4924:18:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_storage", + "typeIdentifier": "t_struct$_Route_$46540_storage", "typeString": "struct OrderLib.Route storage ref" } }, @@ -5120,18 +5120,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46873, + "id": 46870, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "4945:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46874, + "id": 46871, "isConstant": false, "isLValue": true, "isPure": false, @@ -5139,26 +5139,26 @@ "memberLocation": "4951:5:54", "memberName": "route", "nodeType": "MemberAccess", - "referencedDeclaration": 46550, + "referencedDeclaration": 46547, "src": "4945:11:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, "src": "4924:32:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_storage", + "typeIdentifier": "t_struct$_Route_$46540_storage", "typeString": "struct OrderLib.Route storage ref" } }, - "id": 46876, + "id": 46873, "nodeType": "ExpressionStatement", "src": "4924:32:54" }, { "expression": { - "id": 46884, + "id": 46881, "isConstant": false, "isLValue": false, "isPure": false, @@ -5166,18 +5166,18 @@ "leftHandSide": { "expression": { "expression": { - "id": 46877, + "id": 46874, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "4970:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46880, + "id": 46877, "isConstant": false, "isLValue": true, "isPure": false, @@ -5185,14 +5185,14 @@ "memberLocation": "4977:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "4970:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46881, + "id": 46878, "isConstant": false, "isLValue": true, "isPure": false, @@ -5200,7 +5200,7 @@ "memberLocation": "4983:10:54", "memberName": "chainOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 46558, + "referencedDeclaration": 46555, "src": "4970:23:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -5211,18 +5211,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46882, + "id": 46879, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "4996:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46883, + "id": 46880, "isConstant": false, "isLValue": true, "isPure": false, @@ -5230,7 +5230,7 @@ "memberLocation": "5002:10:54", "memberName": "chainOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 46558, + "referencedDeclaration": 46555, "src": "4996:16:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -5243,13 +5243,13 @@ "typeString": "uint64" } }, - "id": 46885, + "id": 46882, "nodeType": "ExpressionStatement", "src": "4970:42:54" }, { "expression": { - "id": 46893, + "id": 46890, "isConstant": false, "isLValue": false, "isPure": false, @@ -5257,18 +5257,18 @@ "leftHandSide": { "expression": { "expression": { - "id": 46886, + "id": 46883, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "5026:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46889, + "id": 46886, "isConstant": false, "isLValue": true, "isPure": false, @@ -5276,14 +5276,14 @@ "memberLocation": "5033:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "5026:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46890, + "id": 46887, "isConstant": false, "isLValue": true, "isPure": false, @@ -5291,7 +5291,7 @@ "memberLocation": "5039:21:54", "memberName": "outputDirectlyToOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 46556, + "referencedDeclaration": 46553, "src": "5026:34:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5302,18 +5302,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46891, + "id": 46888, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "5063:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46892, + "id": 46889, "isConstant": false, "isLValue": true, "isPure": false, @@ -5321,7 +5321,7 @@ "memberLocation": "5069:21:54", "memberName": "outputDirectlyToOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 46556, + "referencedDeclaration": 46553, "src": "5063:27:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5334,13 +5334,13 @@ "typeString": "bool" } }, - "id": 46894, + "id": 46891, "nodeType": "ExpressionStatement", "src": "5026:64:54" }, { "body": { - "id": 46984, + "id": 46981, "nodeType": "Block", "src": "5150:494:54", "statements": [ @@ -5352,18 +5352,18 @@ "expression": { "expression": { "expression": { - "id": 46907, + "id": 46904, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "5168:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46911, + "id": 46908, "isConstant": false, "isLValue": true, "isPure": false, @@ -5371,14 +5371,14 @@ "memberLocation": "5175:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "5168:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46912, + "id": 46909, "isConstant": false, "isLValue": true, "isPure": false, @@ -5386,14 +5386,14 @@ "memberLocation": "5181:8:54", "memberName": "tranches", "nodeType": "MemberAccess", - "referencedDeclaration": 46562, + "referencedDeclaration": 46559, "src": "5168:21:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage", "typeString": "struct OrderLib.Tranche storage ref[] storage ref" } }, - "id": 46913, + "id": 46910, "isConstant": false, "isLValue": false, "isPure": false, @@ -5403,11 +5403,11 @@ "nodeType": "MemberAccess", "src": "5168:26:54", "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr_$returns$_t_struct$_Tranche_$46638_storage_$attached_to$_t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr_$", + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr_$returns$_t_struct$_Tranche_$46635_storage_$attached_to$_t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr_$", "typeString": "function (struct OrderLib.Tranche storage ref[] storage pointer) returns (struct OrderLib.Tranche storage ref)" } }, - "id": 46914, + "id": 46911, "isConstant": false, "isLValue": true, "isPure": false, @@ -5419,74 +5419,74 @@ "src": "5168:28:54", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage", + "typeIdentifier": "t_struct$_Tranche_$46635_storage", "typeString": "struct OrderLib.Tranche storage ref" } }, - "id": 46915, + "id": 46912, "nodeType": "ExpressionStatement", "src": "5168:28:54" }, { "assignments": [ - 46920 + 46917 ], "declarations": [ { "constant": false, - "id": 46920, + "id": 46917, "mutability": "mutable", "name": "ot", "nameLocation": "5238:2:54", "nodeType": "VariableDeclaration", - "scope": 46984, + "scope": 46981, "src": "5214:26:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche" }, "typeName": { - "id": 46919, + "id": 46916, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46918, + "id": 46915, "name": "OrderLib.Tranche", "nameLocations": [ "5214:8:54", "5223:7:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5214:16:54" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5214:16:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "visibility": "internal" } ], - "id": 46925, + "id": 46922, "initialValue": { "baseExpression": { "expression": { - "id": 46921, + "id": 46918, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "5243:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46922, + "id": 46919, "isConstant": false, "isLValue": true, "isPure": false, @@ -5494,20 +5494,20 @@ "memberLocation": "5249:8:54", "memberName": "tranches", "nodeType": "MemberAccess", - "referencedDeclaration": 46562, + "referencedDeclaration": 46559, "src": "5243:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, - "id": 46924, + "id": 46921, "indexExpression": { - "id": 46923, + "id": 46920, "name": "t", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46896, + "referencedDeclaration": 46893, "src": "5258:1:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5521,7 +5521,7 @@ "nodeType": "IndexAccess", "src": "5243:17:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, @@ -5530,65 +5530,65 @@ }, { "assignments": [ - 46930 + 46927 ], "declarations": [ { "constant": false, - "id": 46930, + "id": 46927, "mutability": "mutable", "name": "st", "nameLocation": "5320:2:54", "nodeType": "VariableDeclaration", - "scope": 46984, + "scope": 46981, "src": "5295:27:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" }, "typeName": { - "id": 46929, + "id": 46926, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46928, + "id": 46925, "name": "OrderLib.Tranche", "nameLocations": [ "5295:8:54", "5304:7:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5295:16:54" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5295:16:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "visibility": "internal" } ], - "id": 46936, + "id": 46933, "initialValue": { "baseExpression": { "expression": { "expression": { - "id": 46931, + "id": 46928, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "5325:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46932, + "id": 46929, "isConstant": false, "isLValue": true, "isPure": false, @@ -5596,14 +5596,14 @@ "memberLocation": "5332:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "5325:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 46933, + "id": 46930, "isConstant": false, "isLValue": true, "isPure": false, @@ -5611,20 +5611,20 @@ "memberLocation": "5338:8:54", "memberName": "tranches", "nodeType": "MemberAccess", - "referencedDeclaration": 46562, + "referencedDeclaration": 46559, "src": "5325:21:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage", "typeString": "struct OrderLib.Tranche storage ref[] storage ref" } }, - "id": 46935, + "id": 46932, "indexExpression": { - "id": 46934, + "id": 46931, "name": "t", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46896, + "referencedDeclaration": 46893, "src": "5347:1:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5638,7 +5638,7 @@ "nodeType": "IndexAccess", "src": "5325:24:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage", + "typeIdentifier": "t_struct$_Tranche_$46635_storage", "typeString": "struct OrderLib.Tranche storage ref" } }, @@ -5647,25 +5647,25 @@ }, { "expression": { - "id": 46942, + "id": 46939, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 46937, + "id": 46934, "name": "st", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46930, + "referencedDeclaration": 46927, "src": "5385:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche storage pointer" } }, - "id": 46939, + "id": 46936, "isConstant": false, "isLValue": true, "isPure": false, @@ -5673,7 +5673,7 @@ "memberLocation": "5388:8:54", "memberName": "fraction", "nodeType": "MemberAccess", - "referencedDeclaration": 46633, + "referencedDeclaration": 46630, "src": "5385:11:54", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -5684,18 +5684,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46940, + "id": 46937, "name": "ot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46920, + "referencedDeclaration": 46917, "src": "5399:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 46941, + "id": 46938, "isConstant": false, "isLValue": true, "isPure": false, @@ -5703,7 +5703,7 @@ "memberLocation": "5402:8:54", "memberName": "fraction", "nodeType": "MemberAccess", - "referencedDeclaration": 46633, + "referencedDeclaration": 46630, "src": "5399:11:54", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -5716,7 +5716,7 @@ "typeString": "uint16" } }, - "id": 46943, + "id": 46940, "nodeType": "ExpressionStatement", "src": "5385:25:54" }, @@ -5727,18 +5727,18 @@ { "baseExpression": { "expression": { - "id": 46961, + "id": 46958, "name": "ot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46920, + "referencedDeclaration": 46917, "src": "5514:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 46962, + "id": 46959, "isConstant": false, "isLValue": true, "isPure": false, @@ -5746,20 +5746,20 @@ "memberLocation": "5517:11:54", "memberName": "constraints", "nodeType": "MemberAccess", - "referencedDeclaration": 46637, + "referencedDeclaration": 46634, "src": "5514:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, - "id": 46964, + "id": 46961, "indexExpression": { - "id": 46963, + "id": 46960, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46945, + "referencedDeclaration": 46942, "src": "5529:1:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5773,7 +5773,7 @@ "nodeType": "IndexAccess", "src": "5514:17:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } } @@ -5781,24 +5781,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } ], "expression": { "expression": { - "id": 46956, + "id": 46953, "name": "st", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46930, + "referencedDeclaration": 46927, "src": "5494:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche storage pointer" } }, - "id": 46959, + "id": 46956, "isConstant": false, "isLValue": true, "isPure": false, @@ -5806,14 +5806,14 @@ "memberLocation": "5497:11:54", "memberName": "constraints", "nodeType": "MemberAccess", - "referencedDeclaration": 46637, + "referencedDeclaration": 46634, "src": "5494:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage", "typeString": "struct OrderLib.Constraint storage ref[] storage ref" } }, - "id": 46960, + "id": 46957, "isConstant": false, "isLValue": false, "isPure": false, @@ -5823,11 +5823,11 @@ "nodeType": "MemberAccess", "src": "5494:19:54", "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr_$_t_struct$_Constraint_$46594_storage_$returns$__$attached_to$_t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr_$", + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr_$_t_struct$_Constraint_$46591_storage_$returns$__$attached_to$_t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr_$", "typeString": "function (struct OrderLib.Constraint storage ref[] storage pointer,struct OrderLib.Constraint storage ref)" } }, - "id": 46965, + "id": 46962, "isConstant": false, "isLValue": false, "isPure": false, @@ -5843,7 +5843,7 @@ "typeString": "tuple()" } }, - "id": 46966, + "id": 46963, "nodeType": "ExpressionStatement", "src": "5494:38:54" }, @@ -5852,17 +5852,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 46952, + "id": 46949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 46948, + "id": 46945, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46945, + "referencedDeclaration": 46942, "src": "5443:1:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5874,18 +5874,18 @@ "rightExpression": { "expression": { "expression": { - "id": 46949, + "id": 46946, "name": "ot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46920, + "referencedDeclaration": 46917, "src": "5445:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 46950, + "id": 46947, "isConstant": false, "isLValue": true, "isPure": false, @@ -5893,14 +5893,14 @@ "memberLocation": "5448:11:54", "memberName": "constraints", "nodeType": "MemberAccess", - "referencedDeclaration": 46637, + "referencedDeclaration": 46634, "src": "5445:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, - "id": 46951, + "id": 46948, "isConstant": false, "isLValue": false, "isPure": false, @@ -5920,20 +5920,20 @@ "typeString": "bool" } }, - "id": 46967, + "id": 46964, "initializationExpression": { "assignments": [ - 46945 + 46942 ], "declarations": [ { "constant": false, - "id": 46945, + "id": 46942, "mutability": "mutable", "name": "c", "nameLocation": "5438:1:54", "nodeType": "VariableDeclaration", - "scope": 46967, + "scope": 46964, "src": "5433:6:54", "stateVariable": false, "storageLocation": "default", @@ -5942,7 +5942,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46944, + "id": 46941, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5433:4:54", @@ -5954,10 +5954,10 @@ "visibility": "internal" } ], - "id": 46947, + "id": 46944, "initialValue": { "hexValue": "30", - "id": 46946, + "id": 46943, "isConstant": false, "isLValue": false, "isPure": true, @@ -5977,7 +5977,7 @@ "isSimpleCounterLoop": true, "loopExpression": { "expression": { - "id": 46954, + "id": 46951, "isConstant": false, "isLValue": false, "isPure": false, @@ -5987,11 +5987,11 @@ "prefix": false, "src": "5468:3:54", "subExpression": { - "id": 46953, + "id": 46950, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46945, + "referencedDeclaration": 46942, "src": "5468:1:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6003,7 +6003,7 @@ "typeString": "uint256" } }, - "id": 46955, + "id": 46952, "nodeType": "ExpressionStatement", "src": "5468:3:54" }, @@ -6015,7 +6015,7 @@ "arguments": [ { "hexValue": "30", - "id": 46973, + "id": 46970, "isConstant": false, "isLValue": false, "isPure": true, @@ -6039,18 +6039,18 @@ ], "expression": { "expression": { - "id": 46968, + "id": 46965, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "5550:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46971, + "id": 46968, "isConstant": false, "isLValue": true, "isPure": false, @@ -6058,14 +6058,14 @@ "memberLocation": "5557:15:54", "memberName": "trancheFilledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46580, + "referencedDeclaration": 46577, "src": "5550:22:54", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 46972, + "id": 46969, "isConstant": false, "isLValue": false, "isPure": false, @@ -6079,7 +6079,7 @@ "typeString": "function (uint256[] storage pointer,uint256)" } }, - "id": 46974, + "id": 46971, "isConstant": false, "isLValue": false, "isPure": false, @@ -6095,7 +6095,7 @@ "typeString": "tuple()" } }, - "id": 46975, + "id": 46972, "nodeType": "ExpressionStatement", "src": "5550:30:54" }, @@ -6104,7 +6104,7 @@ "arguments": [ { "hexValue": "30", - "id": 46981, + "id": 46978, "isConstant": false, "isLValue": false, "isPure": true, @@ -6128,18 +6128,18 @@ ], "expression": { "expression": { - "id": 46976, + "id": 46973, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "5598:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46979, + "id": 46976, "isConstant": false, "isLValue": true, "isPure": false, @@ -6147,14 +6147,14 @@ "memberLocation": "5605:16:54", "memberName": "trancheFilledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46583, + "referencedDeclaration": 46580, "src": "5598:23:54", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 46980, + "id": 46977, "isConstant": false, "isLValue": false, "isPure": false, @@ -6168,7 +6168,7 @@ "typeString": "function (uint256[] storage pointer,uint256)" } }, - "id": 46982, + "id": 46979, "isConstant": false, "isLValue": false, "isPure": false, @@ -6184,7 +6184,7 @@ "typeString": "tuple()" } }, - "id": 46983, + "id": 46980, "nodeType": "ExpressionStatement", "src": "5598:31:54" } @@ -6195,17 +6195,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 46903, + "id": 46900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 46899, + "id": 46896, "name": "t", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46896, + "referencedDeclaration": 46893, "src": "5119:1:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6217,18 +6217,18 @@ "rightExpression": { "expression": { "expression": { - "id": 46900, + "id": 46897, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46796, + "referencedDeclaration": 46793, "src": "5121:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, - "id": 46901, + "id": 46898, "isConstant": false, "isLValue": true, "isPure": false, @@ -6236,14 +6236,14 @@ "memberLocation": "5127:8:54", "memberName": "tranches", "nodeType": "MemberAccess", - "referencedDeclaration": 46562, + "referencedDeclaration": 46559, "src": "5121:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, - "id": 46902, + "id": 46899, "isConstant": false, "isLValue": false, "isPure": false, @@ -6263,20 +6263,20 @@ "typeString": "bool" } }, - "id": 46985, + "id": 46982, "initializationExpression": { "assignments": [ - 46896 + 46893 ], "declarations": [ { "constant": false, - "id": 46896, + "id": 46893, "mutability": "mutable", "name": "t", "nameLocation": "5114:1:54", "nodeType": "VariableDeclaration", - "scope": 46985, + "scope": 46982, "src": "5109:6:54", "stateVariable": false, "storageLocation": "default", @@ -6285,7 +6285,7 @@ "typeString": "uint256" }, "typeName": { - "id": 46895, + "id": 46892, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5109:4:54", @@ -6297,10 +6297,10 @@ "visibility": "internal" } ], - "id": 46898, + "id": 46895, "initialValue": { "hexValue": "30", - "id": 46897, + "id": 46894, "isConstant": false, "isLValue": false, "isPure": true, @@ -6320,7 +6320,7 @@ "isSimpleCounterLoop": true, "loopExpression": { "expression": { - "id": 46905, + "id": 46902, "isConstant": false, "isLValue": false, "isPure": false, @@ -6330,11 +6330,11 @@ "prefix": false, "src": "5144:3:54", "subExpression": { - "id": 46904, + "id": 46901, "name": "t", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46896, + "referencedDeclaration": 46893, "src": "5144:1:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6346,7 +6346,7 @@ "typeString": "uint256" } }, - "id": 46906, + "id": 46903, "nodeType": "ExpressionStatement", "src": "5144:3:54" }, @@ -6355,25 +6355,25 @@ }, { "expression": { - "id": 46991, + "id": 46988, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 46986, + "id": 46983, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "5657:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46988, + "id": 46985, "isConstant": false, "isLValue": true, "isPure": false, @@ -6381,10 +6381,10 @@ "memberLocation": "5664:5:54", "memberName": "state", "nodeType": "MemberAccess", - "referencedDeclaration": 46569, + "referencedDeclaration": 46566, "src": "5657:12:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -6392,18 +6392,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 46989, + "id": 46986, "name": "SwapOrderState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "5672:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46534_$", + "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46531_$", "typeString": "type(enum OrderLib.SwapOrderState)" } }, - "id": 46990, + "id": 46987, "isConstant": false, "isLValue": false, "isPure": true, @@ -6411,44 +6411,44 @@ "memberLocation": "5687:4:54", "memberName": "Open", "nodeType": "MemberAccess", - "referencedDeclaration": 46530, + "referencedDeclaration": 46527, "src": "5672:19:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, "src": "5657:34:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, - "id": 46992, + "id": 46989, "nodeType": "ExpressionStatement", "src": "5657:34:54" }, { "expression": { - "id": 47001, + "id": 46998, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 46993, + "id": 46990, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "5705:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 46995, + "id": 46992, "isConstant": false, "isLValue": true, "isPure": false, @@ -6456,7 +6456,7 @@ "memberLocation": "5712:5:54", "memberName": "start", "nodeType": "MemberAccess", - "referencedDeclaration": 46571, + "referencedDeclaration": 46568, "src": "5705:12:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -6469,7 +6469,7 @@ "arguments": [ { "expression": { - "id": 46998, + "id": 46995, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6480,7 +6480,7 @@ "typeString": "block" } }, - "id": 46999, + "id": 46996, "isConstant": false, "isLValue": false, "isPure": false, @@ -6502,7 +6502,7 @@ "typeString": "uint256" } ], - "id": 46997, + "id": 46994, "isConstant": false, "isLValue": false, "isPure": true, @@ -6514,14 +6514,14 @@ "typeString": "type(uint32)" }, "typeName": { - "id": 46996, + "id": 46993, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "5720:6:54", "typeDescriptions": {} } }, - "id": 47000, + "id": 46997, "isConstant": false, "isLValue": false, "isPure": false, @@ -6543,31 +6543,31 @@ "typeString": "uint32" } }, - "id": 47002, + "id": 46999, "nodeType": "ExpressionStatement", "src": "5705:38:54" }, { "expression": { - "id": 47007, + "id": 47004, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 47003, + "id": 47000, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46826, + "referencedDeclaration": 46823, "src": "5757:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47005, + "id": 47002, "isConstant": false, "isLValue": true, "isPure": false, @@ -6575,7 +6575,7 @@ "memberLocation": "5764:8:54", "memberName": "ocoGroup", "nodeType": "MemberAccess", - "referencedDeclaration": 46573, + "referencedDeclaration": 46570, "src": "5757:15:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -6585,11 +6585,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 47006, + "id": 47003, "name": "ocoGroup", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46732, + "referencedDeclaration": 46729, "src": "5775:8:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -6602,7 +6602,7 @@ "typeString": "uint64" } }, - "id": 47008, + "id": 47005, "nodeType": "ExpressionStatement", "src": "5757:26:54" } @@ -6613,17 +6613,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 46790, + "id": 46787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 46787, + "id": 46784, "name": "o", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46784, + "referencedDeclaration": 46781, "src": "4202:1:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -6634,18 +6634,18 @@ "operator": "<", "rightExpression": { "expression": { - "id": 46788, + "id": 46785, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46695, + "referencedDeclaration": 46692, "src": "4206:6:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, - "id": 46789, + "id": 46786, "isConstant": false, "isLValue": false, "isPure": false, @@ -6665,20 +6665,20 @@ "typeString": "bool" } }, - "id": 47010, + "id": 47007, "initializationExpression": { "assignments": [ - 46784 + 46781 ], "declarations": [ { "constant": false, - "id": 46784, + "id": 46781, "mutability": "mutable", "name": "o", "nameLocation": "4195:1:54", "nodeType": "VariableDeclaration", - "scope": 47010, + "scope": 47007, "src": "4189:7:54", "stateVariable": false, "storageLocation": "default", @@ -6687,7 +6687,7 @@ "typeString": "uint8" }, "typeName": { - "id": 46783, + "id": 46780, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4189:5:54", @@ -6699,10 +6699,10 @@ "visibility": "internal" } ], - "id": 46786, + "id": 46783, "initialValue": { "hexValue": "30", - "id": 46785, + "id": 46782, "isConstant": false, "isLValue": false, "isPure": true, @@ -6722,7 +6722,7 @@ "isSimpleCounterLoop": false, "loopExpression": { "expression": { - "id": 46792, + "id": 46789, "isConstant": false, "isLValue": false, "isPure": false, @@ -6732,11 +6732,11 @@ "prefix": false, "src": "4221:3:54", "subExpression": { - "id": 46791, + "id": 46788, "name": "o", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46784, + "referencedDeclaration": 46781, "src": "4221:1:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -6748,7 +6748,7 @@ "typeString": "uint8" } }, - "id": 46793, + "id": 46790, "nodeType": "ExpressionStatement", "src": "4221:3:54" }, @@ -6759,11 +6759,11 @@ "eventCall": { "arguments": [ { - "id": 47012, + "id": 47009, "name": "startIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46713, + "referencedDeclaration": 46710, "src": "5827:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -6774,18 +6774,18 @@ "arguments": [ { "expression": { - "id": 47015, + "id": 47012, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46695, + "referencedDeclaration": 46692, "src": "5844:6:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, - "id": 47016, + "id": 47013, "isConstant": false, "isLValue": false, "isPure": false, @@ -6807,7 +6807,7 @@ "typeString": "uint256" } ], - "id": 47014, + "id": 47011, "isConstant": false, "isLValue": false, "isPure": true, @@ -6819,14 +6819,14 @@ "typeString": "type(uint8)" }, "typeName": { - "id": 47013, + "id": 47010, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5838:5:54", "typeDescriptions": {} } }, - "id": 47017, + "id": 47014, "isConstant": false, "isLValue": false, "isPure": false, @@ -6854,18 +6854,18 @@ "typeString": "uint8" } ], - "id": 47011, + "id": 47008, "name": "DexorderSwapPlaced", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46515, + "referencedDeclaration": 46512, "src": "5808:18:54", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint8_$returns$__$", "typeString": "function (uint64,uint8)" } }, - "id": 47018, + "id": 47015, "isConstant": false, "isLValue": false, "isPure": false, @@ -6881,7 +6881,7 @@ "typeString": "tuple()" } }, - "id": 47019, + "id": 47016, "nodeType": "EmitStatement", "src": "5803:56:54" } @@ -6893,124 +6893,124 @@ "name": "_placeOrders", "nameLocation": "3530:12:54", "parameters": { - "id": 46699, + "id": 46696, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 46691, + "id": 46688, "mutability": "mutable", "name": "self", "nameLocation": "3562:4:54", "nodeType": "VariableDeclaration", - "scope": 47021, + "scope": 47018, "src": "3543:23:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" }, "typeName": { - "id": 46690, + "id": 46687, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46689, + "id": 46686, "name": "OrdersInfo", "nameLocations": [ "3543:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "3543:10:54" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "3543:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } }, "visibility": "internal" }, + { + "constant": false, + "id": 46692, + "mutability": "mutable", + "name": "orders", + "nameLocation": "3587:6:54", + "nodeType": "VariableDeclaration", + "scope": 47018, + "src": "3568:25:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", + "typeString": "struct OrderLib.SwapOrder[]" + }, + "typeName": { + "baseType": { + "id": 46690, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 46689, + "name": "SwapOrder", + "nameLocations": [ + "3568:9:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46560, + "src": "3568:9:54" + }, + "referencedDeclaration": 46560, + "src": "3568:9:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", + "typeString": "struct OrderLib.SwapOrder" + } + }, + "id": 46691, + "nodeType": "ArrayTypeName", + "src": "3568:11:54", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_storage_$dyn_storage_ptr", + "typeString": "struct OrderLib.SwapOrder[]" + } + }, + "visibility": "internal" + }, { "constant": false, "id": 46695, "mutability": "mutable", - "name": "orders", - "nameLocation": "3587:6:54", - "nodeType": "VariableDeclaration", - "scope": 47021, - "src": "3568:25:54", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", - "typeString": "struct OrderLib.SwapOrder[]" - }, - "typeName": { - "baseType": { - "id": 46693, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 46692, - "name": "SwapOrder", - "nameLocations": [ - "3568:9:54" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, - "src": "3568:9:54" - }, - "referencedDeclaration": 46563, - "src": "3568:9:54", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", - "typeString": "struct OrderLib.SwapOrder" - } - }, - "id": 46694, - "nodeType": "ArrayTypeName", - "src": "3568:11:54", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_storage_$dyn_storage_ptr", - "typeString": "struct OrderLib.SwapOrder[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 46698, - "mutability": "mutable", "name": "ocoMode", "nameLocation": "3603:7:54", "nodeType": "VariableDeclaration", - "scope": 47021, + "scope": 47018, "src": "3595:15:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" }, "typeName": { - "id": 46697, + "id": 46694, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 46696, + "id": 46693, "name": "OcoMode", "nameLocations": [ "3595:7:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "3595:7:54" }, - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "3595:7:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -7020,23 +7020,23 @@ "src": "3542:69:54" }, "returnParameters": { - "id": 46700, + "id": 46697, "nodeType": "ParameterList", "parameters": [], "src": "3621:0:54" }, - "scope": 47922, + "scope": 47919, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 47688, + "id": 47685, "nodeType": "FunctionDefinition", "src": "6139:5574:54", "nodes": [], "body": { - "id": 47687, + "id": 47684, "nodeType": "Block", "src": "6264:5449:54", "nodes": [], @@ -7046,7 +7046,7 @@ "arguments": [ { "hexValue": "65786563757465", - "id": 47039, + "id": 47036, "isConstant": false, "isLValue": false, "isPure": true, @@ -7069,7 +7069,7 @@ } ], "expression": { - "id": 47036, + "id": 47033, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7080,7 +7080,7 @@ "typeString": "type(library console2)" } }, - "id": 47038, + "id": 47035, "isConstant": false, "isLValue": false, "isPure": false, @@ -7095,7 +7095,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47040, + "id": 47037, "isConstant": false, "isLValue": false, "isPure": false, @@ -7111,7 +7111,7 @@ "typeString": "tuple()" } }, - "id": 47041, + "id": 47038, "nodeType": "ExpressionStatement", "src": "6274:23:54" }, @@ -7121,14 +7121,14 @@ { "arguments": [ { - "id": 47047, + "id": 47044, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "6328:4:54", "typeDescriptions": { - "typeIdentifier": "t_contract$_OrderLib_$47922", + "typeIdentifier": "t_contract$_OrderLib_$47919", "typeString": "library OrderLib" } } @@ -7136,11 +7136,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_OrderLib_$47922", + "typeIdentifier": "t_contract$_OrderLib_$47919", "typeString": "library OrderLib" } ], - "id": 47046, + "id": 47043, "isConstant": false, "isLValue": false, "isPure": true, @@ -7152,14 +7152,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 47045, + "id": 47042, "name": "address", "nodeType": "ElementaryTypeName", "src": "6320:7:54", "typeDescriptions": {} } }, - "id": 47048, + "id": 47045, "isConstant": false, "isLValue": false, "isPure": false, @@ -7184,7 +7184,7 @@ } ], "expression": { - "id": 47042, + "id": 47039, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7195,7 +7195,7 @@ "typeString": "type(library console2)" } }, - "id": 47044, + "id": 47041, "isConstant": false, "isLValue": false, "isPure": false, @@ -7210,7 +7210,7 @@ "typeString": "function (address) pure" } }, - "id": 47049, + "id": 47046, "isConstant": false, "isLValue": false, "isPure": false, @@ -7226,7 +7226,7 @@ "typeString": "tuple()" } }, - "id": 47050, + "id": 47047, "nodeType": "ExpressionStatement", "src": "6307:27:54" }, @@ -7236,11 +7236,11 @@ { "arguments": [ { - "id": 47056, + "id": 47053, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47028, + "referencedDeclaration": 47025, "src": "6362:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -7255,7 +7255,7 @@ "typeString": "uint64" } ], - "id": 47055, + "id": 47052, "isConstant": false, "isLValue": false, "isPure": true, @@ -7267,14 +7267,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 47054, + "id": 47051, "name": "uint", "nodeType": "ElementaryTypeName", "src": "6357:4:54", "typeDescriptions": {} } }, - "id": 47057, + "id": 47054, "isConstant": false, "isLValue": false, "isPure": false, @@ -7299,7 +7299,7 @@ } ], "expression": { - "id": 47051, + "id": 47048, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7310,7 +7310,7 @@ "typeString": "type(library console2)" } }, - "id": 47053, + "id": 47050, "isConstant": false, "isLValue": false, "isPure": false, @@ -7325,7 +7325,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47058, + "id": 47055, "isConstant": false, "isLValue": false, "isPure": false, @@ -7341,7 +7341,7 @@ "typeString": "tuple()" } }, - "id": 47059, + "id": 47056, "nodeType": "ExpressionStatement", "src": "6344:30:54" }, @@ -7351,11 +7351,11 @@ { "arguments": [ { - "id": 47065, + "id": 47062, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "6402:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -7370,7 +7370,7 @@ "typeString": "uint8" } ], - "id": 47064, + "id": 47061, "isConstant": false, "isLValue": false, "isPure": true, @@ -7382,14 +7382,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 47063, + "id": 47060, "name": "uint", "nodeType": "ElementaryTypeName", "src": "6397:4:54", "typeDescriptions": {} } }, - "id": 47066, + "id": 47063, "isConstant": false, "isLValue": false, "isPure": false, @@ -7414,7 +7414,7 @@ } ], "expression": { - "id": 47060, + "id": 47057, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7425,7 +7425,7 @@ "typeString": "type(library console2)" } }, - "id": 47062, + "id": 47059, "isConstant": false, "isLValue": false, "isPure": false, @@ -7440,7 +7440,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47067, + "id": 47064, "isConstant": false, "isLValue": false, "isPure": false, @@ -7456,69 +7456,69 @@ "typeString": "tuple()" } }, - "id": 47068, + "id": 47065, "nodeType": "ExpressionStatement", "src": "6384:32:54" }, { "assignments": [ - 47071 + 47068 ], "declarations": [ { "constant": false, - "id": 47071, + "id": 47068, "mutability": "mutable", "name": "status", "nameLocation": "6450:6:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "6426:30:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus" }, "typeName": { - "id": 47070, + "id": 47067, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47069, + "id": 47066, "name": "SwapOrderStatus", "nameLocations": [ "6426:15:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "6426:15:54" }, - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "6426:15:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus" } }, "visibility": "internal" } ], - "id": 47076, + "id": 47073, "initialValue": { "baseExpression": { "expression": { - "id": 47072, + "id": 47069, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47024, + "referencedDeclaration": 47021, "src": "6459:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 47073, + "id": 47070, "isConstant": false, "isLValue": true, "isPure": false, @@ -7526,20 +7526,20 @@ "memberLocation": "6464:6:54", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "6459:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 47075, + "id": 47072, "indexExpression": { - "id": 47074, + "id": 47071, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47028, + "referencedDeclaration": 47025, "src": "6471:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -7553,7 +7553,7 @@ "nodeType": "IndexAccess", "src": "6459:23:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref" } }, @@ -7563,28 +7563,28 @@ { "condition": { "commonType": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" }, - "id": 47081, + "id": 47078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47077, + "id": 47074, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "6496:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47078, + "id": 47075, "isConstant": false, "isLValue": true, "isPure": false, @@ -7592,10 +7592,10 @@ "memberLocation": "6503:5:54", "memberName": "state", "nodeType": "MemberAccess", - "referencedDeclaration": 46569, + "referencedDeclaration": 46566, "src": "6496:12:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -7603,18 +7603,18 @@ "operator": "!=", "rightExpression": { "expression": { - "id": 47079, + "id": 47076, "name": "SwapOrderState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "6512:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46534_$", + "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46531_$", "typeString": "type(enum OrderLib.SwapOrderState)" } }, - "id": 47080, + "id": 47077, "isConstant": false, "isLValue": false, "isPure": true, @@ -7622,10 +7622,10 @@ "memberLocation": "6527:4:54", "memberName": "Open", "nodeType": "MemberAccess", - "referencedDeclaration": 46530, + "referencedDeclaration": 46527, "src": "6512:19:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -7635,7 +7635,7 @@ "typeString": "bool" } }, - "id": 47086, + "id": 47083, "nodeType": "IfStatement", "src": "6492:65:54", "trueBody": { @@ -7643,7 +7643,7 @@ "arguments": [ { "hexValue": "4e4f", - "id": 47083, + "id": 47080, "isConstant": false, "isLValue": false, "isPure": true, @@ -7665,7 +7665,7 @@ "typeString": "literal_string \"NO\"" } ], - "id": 47082, + "id": 47079, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -7679,7 +7679,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47084, + "id": 47081, "isConstant": false, "isLValue": false, "isPure": false, @@ -7695,71 +7695,71 @@ "typeString": "tuple()" } }, - "id": 47085, + "id": 47082, "nodeType": "ExpressionStatement", "src": "6545:12:54" } }, { "assignments": [ - 47089 + 47086 ], "declarations": [ { "constant": false, - "id": 47089, + "id": 47086, "mutability": "mutable", "name": "tranche", "nameLocation": "6595:7:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "6579:23:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" }, "typeName": { - "id": 47088, + "id": 47085, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47087, + "id": 47084, "name": "Tranche", "nameLocations": [ "6579:7:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "6579:7:54" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "6579:7:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "visibility": "internal" } ], - "id": 47095, + "id": 47092, "initialValue": { "baseExpression": { "expression": { "expression": { - "id": 47090, + "id": 47087, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "6605:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47091, + "id": 47088, "isConstant": false, "isLValue": true, "isPure": false, @@ -7767,14 +7767,14 @@ "memberLocation": "6612:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "6605:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47092, + "id": 47089, "isConstant": false, "isLValue": true, "isPure": false, @@ -7782,20 +7782,20 @@ "memberLocation": "6618:8:54", "memberName": "tranches", "nodeType": "MemberAccess", - "referencedDeclaration": 46562, + "referencedDeclaration": 46559, "src": "6605:21:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage", "typeString": "struct OrderLib.Tranche storage ref[] storage ref" } }, - "id": 47094, + "id": 47091, "indexExpression": { - "id": 47093, + "id": 47090, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "6627:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -7809,7 +7809,7 @@ "nodeType": "IndexAccess", "src": "6605:35:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage", + "typeIdentifier": "t_struct$_Tranche_$46635_storage", "typeString": "struct OrderLib.Tranche storage ref" } }, @@ -7818,17 +7818,17 @@ }, { "assignments": [ - 47097 + 47094 ], "declarations": [ { "constant": false, - "id": 47097, + "id": 47094, "mutability": "mutable", "name": "sqrtPriceX96", "nameLocation": "6658:12:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "6650:20:54", "stateVariable": false, "storageLocation": "default", @@ -7837,7 +7837,7 @@ "typeString": "uint160" }, "typeName": { - "id": 47096, + "id": 47093, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "6650:7:54", @@ -7849,10 +7849,10 @@ "visibility": "internal" } ], - "id": 47099, + "id": 47096, "initialValue": { "hexValue": "30", - "id": 47098, + "id": 47095, "isConstant": false, "isLValue": false, "isPure": true, @@ -7871,17 +7871,17 @@ }, { "assignments": [ - 47101 + 47098 ], "declarations": [ { "constant": false, - "id": 47101, + "id": 47098, "mutability": "mutable", "name": "sqrtPriceLimitX96", "nameLocation": "6692:17:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "6684:25:54", "stateVariable": false, "storageLocation": "default", @@ -7890,7 +7890,7 @@ "typeString": "uint160" }, "typeName": { - "id": 47100, + "id": 47097, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "6684:7:54", @@ -7902,10 +7902,10 @@ "visibility": "internal" } ], - "id": 47103, + "id": 47100, "initialValue": { "hexValue": "30", - "id": 47102, + "id": 47099, "isConstant": false, "isLValue": false, "isPure": true, @@ -7924,17 +7924,17 @@ }, { "assignments": [ - 47105 + 47102 ], "declarations": [ { "constant": false, - "id": 47105, + "id": 47102, "mutability": "mutable", "name": "pool", "nameLocation": "6812:4:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "6804:12:54", "stateVariable": false, "storageLocation": "default", @@ -7943,7 +7943,7 @@ "typeString": "address" }, "typeName": { - "id": 47104, + "id": 47101, "name": "address", "nodeType": "ElementaryTypeName", "src": "6804:7:54", @@ -7956,24 +7956,24 @@ "visibility": "internal" } ], - "id": 47120, + "id": 47117, "initialValue": { "arguments": [ { "expression": { "expression": { - "id": 47109, + "id": 47106, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "6854:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47110, + "id": 47107, "isConstant": false, "isLValue": true, "isPure": false, @@ -7981,14 +7981,14 @@ "memberLocation": "6861:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "6854:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47111, + "id": 47108, "isConstant": false, "isLValue": true, "isPure": false, @@ -7996,7 +7996,7 @@ "memberLocation": "6867:7:54", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46545, + "referencedDeclaration": 46542, "src": "6854:20:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8006,18 +8006,18 @@ { "expression": { "expression": { - "id": 47112, + "id": 47109, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "6876:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47113, + "id": 47110, "isConstant": false, "isLValue": true, "isPure": false, @@ -8025,14 +8025,14 @@ "memberLocation": "6883:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "6876:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47114, + "id": 47111, "isConstant": false, "isLValue": true, "isPure": false, @@ -8040,7 +8040,7 @@ "memberLocation": "6889:8:54", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46547, + "referencedDeclaration": 46544, "src": "6876:21:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8051,18 +8051,18 @@ "expression": { "expression": { "expression": { - "id": 47115, + "id": 47112, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "6899:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47116, + "id": 47113, "isConstant": false, "isLValue": true, "isPure": false, @@ -8070,14 +8070,14 @@ "memberLocation": "6906:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "6899:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47117, + "id": 47114, "isConstant": false, "isLValue": true, "isPure": false, @@ -8085,14 +8085,14 @@ "memberLocation": "6912:5:54", "memberName": "route", "nodeType": "MemberAccess", - "referencedDeclaration": 46550, + "referencedDeclaration": 46547, "src": "6899:18:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_storage", + "typeIdentifier": "t_struct$_Route_$46540_storage", "typeString": "struct OrderLib.Route storage ref" } }, - "id": 47118, + "id": 47115, "isConstant": false, "isLValue": true, "isPure": false, @@ -8100,7 +8100,7 @@ "memberLocation": "6918:3:54", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 46542, + "referencedDeclaration": 46539, "src": "6899:22:54", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -8125,18 +8125,18 @@ ], "expression": { "expression": { - "id": 47106, + "id": 47103, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "6819:9:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 47107, + "id": 47104, "isConstant": false, "isLValue": false, "isPure": true, @@ -8151,7 +8151,7 @@ "typeString": "contract IUniswapV3Factory" } }, - "id": 47108, + "id": 47105, "isConstant": false, "isLValue": false, "isPure": false, @@ -8166,7 +8166,7 @@ "typeString": "function (address,address,uint24) view external returns (address)" } }, - "id": 47119, + "id": 47116, "isConstant": false, "isLValue": false, "isPure": false, @@ -8187,69 +8187,69 @@ }, { "body": { - "id": 47404, + "id": 47401, "nodeType": "Block", "src": "6987:2592:54", "statements": [ { "assignments": [ - 47135 + 47132 ], "declarations": [ { "constant": false, - "id": 47135, + "id": 47132, "mutability": "mutable", "name": "constraint", "nameLocation": "7020:10:54", "nodeType": "VariableDeclaration", - "scope": 47404, + "scope": 47401, "src": "7001:29:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" }, "typeName": { - "id": 47134, + "id": 47131, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47133, + "id": 47130, "name": "Constraint", "nameLocations": [ "7001:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "7001:10:54" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "7001:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "visibility": "internal" } ], - "id": 47140, + "id": 47137, "initialValue": { "baseExpression": { "expression": { - "id": 47136, + "id": 47133, "name": "tranche", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47089, + "referencedDeclaration": 47086, "src": "7033:7:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche storage pointer" } }, - "id": 47137, + "id": 47134, "isConstant": false, "isLValue": true, "isPure": false, @@ -8257,20 +8257,20 @@ "memberLocation": "7041:11:54", "memberName": "constraints", "nodeType": "MemberAccess", - "referencedDeclaration": 46637, + "referencedDeclaration": 46634, "src": "7033:19:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage", "typeString": "struct OrderLib.Constraint storage ref[] storage ref" } }, - "id": 47139, + "id": 47136, "indexExpression": { - "id": 47138, + "id": 47135, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47122, + "referencedDeclaration": 47119, "src": "7053:1:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -8284,7 +8284,7 @@ "nodeType": "IndexAccess", "src": "7033:22:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage", + "typeIdentifier": "t_struct$_Constraint_$46591_storage", "typeString": "struct OrderLib.Constraint storage ref" } }, @@ -8294,28 +8294,28 @@ { "condition": { "commonType": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, - "id": 47145, + "id": 47142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47141, + "id": 47138, "name": "constraint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47135, + "referencedDeclaration": 47132, "src": "7073:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint storage pointer" } }, - "id": 47142, + "id": 47139, "isConstant": false, "isLValue": true, "isPure": false, @@ -8323,10 +8323,10 @@ "memberLocation": "7084:4:54", "memberName": "mode", "nodeType": "MemberAccess", - "referencedDeclaration": 46591, + "referencedDeclaration": 46588, "src": "7073:15:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -8334,18 +8334,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 47143, + "id": 47140, "name": "ConstraintMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "7092:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 47144, + "id": 47141, "isConstant": false, "isLValue": false, "isPure": true, @@ -8353,10 +8353,10 @@ "memberLocation": "7107:4:54", "memberName": "Time", "nodeType": "MemberAccess", - "referencedDeclaration": 46585, + "referencedDeclaration": 46582, "src": "7092:19:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -8369,28 +8369,28 @@ "falseBody": { "condition": { "commonType": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, - "id": 47224, + "id": 47221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47220, + "id": 47217, "name": "constraint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47135, + "referencedDeclaration": 47132, "src": "7711:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint storage pointer" } }, - "id": 47221, + "id": 47218, "isConstant": false, "isLValue": true, "isPure": false, @@ -8398,10 +8398,10 @@ "memberLocation": "7722:4:54", "memberName": "mode", "nodeType": "MemberAccess", - "referencedDeclaration": 46591, + "referencedDeclaration": 46588, "src": "7711:15:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -8409,18 +8409,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 47222, + "id": 47219, "name": "ConstraintMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "7730:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 47223, + "id": 47220, "isConstant": false, "isLValue": false, "isPure": true, @@ -8428,10 +8428,10 @@ "memberLocation": "7745:4:54", "memberName": "Line", "nodeType": "MemberAccess", - "referencedDeclaration": 46586, + "referencedDeclaration": 46583, "src": "7730:19:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -8444,28 +8444,28 @@ "falseBody": { "condition": { "commonType": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, - "id": 47385, + "id": 47382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47381, + "id": 47378, "name": "constraint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47135, + "referencedDeclaration": 47132, "src": "9322:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint storage pointer" } }, - "id": 47382, + "id": 47379, "isConstant": false, "isLValue": true, "isPure": false, @@ -8473,10 +8473,10 @@ "memberLocation": "9333:4:54", "memberName": "mode", "nodeType": "MemberAccess", - "referencedDeclaration": 46591, + "referencedDeclaration": 46588, "src": "9322:15:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -8484,18 +8484,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 47383, + "id": 47380, "name": "ConstraintMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "9341:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 47384, + "id": 47381, "isConstant": false, "isLValue": false, "isPure": true, @@ -8503,10 +8503,10 @@ "memberLocation": "9356:7:54", "memberName": "Barrier", "nodeType": "MemberAccess", - "referencedDeclaration": 46587, + "referencedDeclaration": 46584, "src": "9341:22:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -8521,7 +8521,7 @@ "arguments": [ { "hexValue": "5543", - "id": 47398, + "id": 47395, "isConstant": false, "isLValue": false, "isPure": true, @@ -8543,7 +8543,7 @@ "typeString": "literal_string \"UC\"" } ], - "id": 47397, + "id": 47394, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -8557,7 +8557,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47399, + "id": 47396, "isConstant": false, "isLValue": false, "isPure": false, @@ -8573,15 +8573,15 @@ "typeString": "tuple()" } }, - "id": 47400, + "id": 47397, "nodeType": "ExpressionStatement", "src": "9537:12:54" }, - "id": 47401, + "id": 47398, "nodeType": "IfStatement", "src": "9318:231:54", "trueBody": { - "id": 47396, + "id": 47393, "nodeType": "Block", "src": "9365:116:54", "statements": [ @@ -8590,7 +8590,7 @@ "arguments": [ { "hexValue": "6261727269657220636f6e73747261696e74", - "id": 47389, + "id": 47386, "isConstant": false, "isLValue": false, "isPure": true, @@ -8613,7 +8613,7 @@ } ], "expression": { - "id": 47386, + "id": 47383, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8624,7 +8624,7 @@ "typeString": "type(library console2)" } }, - "id": 47388, + "id": 47385, "isConstant": false, "isLValue": false, "isPure": false, @@ -8639,7 +8639,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47390, + "id": 47387, "isConstant": false, "isLValue": false, "isPure": false, @@ -8655,7 +8655,7 @@ "typeString": "tuple()" } }, - "id": 47391, + "id": 47388, "nodeType": "ExpressionStatement", "src": "9383:34:54" }, @@ -8664,7 +8664,7 @@ "arguments": [ { "hexValue": "4e49", - "id": 47393, + "id": 47390, "isConstant": false, "isLValue": false, "isPure": true, @@ -8686,7 +8686,7 @@ "typeString": "literal_string \"NI\"" } ], - "id": 47392, + "id": 47389, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -8700,7 +8700,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47394, + "id": 47391, "isConstant": false, "isLValue": false, "isPure": false, @@ -8716,18 +8716,18 @@ "typeString": "tuple()" } }, - "id": 47395, + "id": 47392, "nodeType": "ExpressionStatement", "src": "9435:12:54" } ] } }, - "id": 47402, + "id": 47399, "nodeType": "IfStatement", "src": "7707:1842:54", "trueBody": { - "id": 47380, + "id": 47377, "nodeType": "Block", "src": "7751:1549:54", "statements": [ @@ -8736,7 +8736,7 @@ "arguments": [ { "hexValue": "6c696e6520636f6e73747261696e74", - "id": 47228, + "id": 47225, "isConstant": false, "isLValue": false, "isPure": true, @@ -8759,7 +8759,7 @@ } ], "expression": { - "id": 47225, + "id": 47222, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8770,7 +8770,7 @@ "typeString": "type(library console2)" } }, - "id": 47227, + "id": 47224, "isConstant": false, "isLValue": false, "isPure": false, @@ -8785,7 +8785,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47229, + "id": 47226, "isConstant": false, "isLValue": false, "isPure": false, @@ -8801,7 +8801,7 @@ "typeString": "tuple()" } }, - "id": 47230, + "id": 47227, "nodeType": "ExpressionStatement", "src": "7769:31:54" }, @@ -8811,17 +8811,17 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 47233, + "id": 47230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47231, + "id": 47228, "name": "sqrtPriceX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47097, + "referencedDeclaration": 47094, "src": "7822:12:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8832,7 +8832,7 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 47232, + "id": 47229, "isConstant": false, "isLValue": false, "isPure": true, @@ -8852,12 +8852,12 @@ "typeString": "bool" } }, - "id": 47243, + "id": 47240, "nodeType": "IfStatement", "src": "7818:95:54", "trueBody": { "expression": { - "id": 47241, + "id": 47238, "isConstant": false, "isLValue": false, "isPure": false, @@ -8865,11 +8865,11 @@ "leftHandSide": { "components": [ { - "id": 47234, + "id": 47231, "name": "sqrtPriceX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47097, + "referencedDeclaration": 47094, "src": "7863:12:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -8883,7 +8883,7 @@ null, null ], - "id": 47235, + "id": 47232, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -8905,11 +8905,11 @@ "expression": { "arguments": [ { - "id": 47237, + "id": 47234, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47105, + "referencedDeclaration": 47102, "src": "7900:4:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8924,7 +8924,7 @@ "typeString": "address" } ], - "id": 47236, + "id": 47233, "name": "IUniswapV3Pool", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8935,7 +8935,7 @@ "typeString": "type(contract IUniswapV3Pool)" } }, - "id": 47238, + "id": 47235, "isConstant": false, "isLValue": false, "isPure": false, @@ -8951,7 +8951,7 @@ "typeString": "contract IUniswapV3Pool" } }, - "id": 47239, + "id": 47236, "isConstant": false, "isLValue": false, "isPure": false, @@ -8966,7 +8966,7 @@ "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" } }, - "id": 47240, + "id": 47237, "isConstant": false, "isLValue": false, "isPure": false, @@ -8988,71 +8988,71 @@ "typeString": "tuple()" } }, - "id": 47242, + "id": 47239, "nodeType": "ExpressionStatement", "src": "7862:51:54" } }, { "assignments": [ - 47246 + 47243 ], "declarations": [ { "constant": false, - "id": 47246, + "id": 47243, "mutability": "mutable", "name": "lc", "nameLocation": "7953:2:54", "nodeType": "VariableDeclaration", - "scope": 47380, + "scope": 47377, "src": "7931:24:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint" }, "typeName": { - "id": 47245, + "id": 47242, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47244, + "id": 47241, "name": "LineConstraint", "nameLocations": [ "7931:14:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46605, + "referencedDeclaration": 46602, "src": "7931:14:54" }, - "referencedDeclaration": 46605, + "referencedDeclaration": 46602, "src": "7931:14:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_storage_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_storage_ptr", "typeString": "struct OrderLib.LineConstraint" } }, "visibility": "internal" } ], - "id": 47254, + "id": 47251, "initialValue": { "arguments": [ { "expression": { - "id": 47249, + "id": 47246, "name": "constraint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47135, + "referencedDeclaration": 47132, "src": "7969:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint storage pointer" } }, - "id": 47250, + "id": 47247, "isConstant": false, "isLValue": true, "isPure": false, @@ -9060,7 +9060,7 @@ "memberLocation": "7980:10:54", "memberName": "constraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46593, + "referencedDeclaration": 46590, "src": "7969:21:54", "typeDescriptions": { "typeIdentifier": "t_bytes_storage", @@ -9070,19 +9070,19 @@ { "components": [ { - "id": 47251, + "id": 47248, "name": "LineConstraint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46605, + "referencedDeclaration": 46602, "src": "7993:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46605_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46602_storage_ptr_$", "typeString": "type(struct OrderLib.LineConstraint storage pointer)" } } ], - "id": 47252, + "id": 47249, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -9091,7 +9091,7 @@ "nodeType": "TupleExpression", "src": "7992:16:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46605_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46602_storage_ptr_$", "typeString": "type(struct OrderLib.LineConstraint storage pointer)" } } @@ -9103,12 +9103,12 @@ "typeString": "bytes storage ref" }, { - "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46605_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46602_storage_ptr_$", "typeString": "type(struct OrderLib.LineConstraint storage pointer)" } ], "expression": { - "id": 47247, + "id": 47244, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9119,7 +9119,7 @@ "typeString": "abi" } }, - "id": 47248, + "id": 47245, "isConstant": false, "isLValue": false, "isPure": true, @@ -9133,7 +9133,7 @@ "typeString": "function () pure" } }, - "id": 47253, + "id": 47250, "isConstant": false, "isLValue": false, "isPure": false, @@ -9145,7 +9145,7 @@ "src": "7958:51:54", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, @@ -9154,17 +9154,17 @@ }, { "assignments": [ - 47256 + 47253 ], "declarations": [ { "constant": false, - "id": 47256, + "id": 47253, "mutability": "mutable", "name": "price", "nameLocation": "8035:5:54", "nodeType": "VariableDeclaration", - "scope": 47380, + "scope": 47377, "src": "8027:13:54", "stateVariable": false, "storageLocation": "default", @@ -9173,7 +9173,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47255, + "id": 47252, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8027:7:54", @@ -9185,13 +9185,13 @@ "visibility": "internal" } ], - "id": 47258, + "id": 47255, "initialValue": { - "id": 47257, + "id": 47254, "name": "sqrtPriceX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47097, + "referencedDeclaration": 47094, "src": "8043:12:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -9204,18 +9204,18 @@ { "condition": { "expression": { - "id": 47259, + "id": 47256, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "8077:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47260, + "id": 47257, "isConstant": false, "isLValue": true, "isPure": false, @@ -9223,14 +9223,14 @@ "memberLocation": "8080:7:54", "memberName": "isRatio", "nodeType": "MemberAccess", - "referencedDeclaration": 46598, + "referencedDeclaration": 46595, "src": "8077:10:54", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 47265, + "id": 47262, "nodeType": "IfStatement", "src": "8073:68:54", "trueBody": { @@ -9238,7 +9238,7 @@ "arguments": [ { "hexValue": "726174696f206e6f7420696d706c656d656e746564", - "id": 47262, + "id": 47259, "isConstant": false, "isLValue": false, "isPure": true, @@ -9260,7 +9260,7 @@ "typeString": "literal_string \"ratio not implemented\"" } ], - "id": 47261, + "id": 47258, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -9274,7 +9274,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47263, + "id": 47260, "isConstant": false, "isLValue": false, "isPure": false, @@ -9290,24 +9290,24 @@ "typeString": "tuple()" } }, - "id": 47264, + "id": 47261, "nodeType": "ExpressionStatement", "src": "8110:31:54" } }, { "assignments": [ - 47267 + 47264 ], "declarations": [ { "constant": false, - "id": 47267, + "id": 47264, "mutability": "mutable", "name": "limit256", "nameLocation": "8307:8:54", "nodeType": "VariableDeclaration", - "scope": 47380, + "scope": 47377, "src": "8300:15:54", "stateVariable": false, "storageLocation": "default", @@ -9316,7 +9316,7 @@ "typeString": "int256" }, "typeName": { - "id": 47266, + "id": 47263, "name": "int256", "nodeType": "ElementaryTypeName", "src": "8300:6:54", @@ -9328,25 +9328,25 @@ "visibility": "internal" } ], - "id": 47276, + "id": 47273, "initialValue": { "arguments": [ { "arguments": [ { "expression": { - "id": 47272, + "id": 47269, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "8333:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47273, + "id": 47270, "isConstant": false, "isLValue": true, "isPure": false, @@ -9354,7 +9354,7 @@ "memberLocation": "8336:12:54", "memberName": "valueSqrtX96", "nodeType": "MemberAccess", - "referencedDeclaration": 46602, + "referencedDeclaration": 46599, "src": "8333:15:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -9369,7 +9369,7 @@ "typeString": "uint160" } ], - "id": 47271, + "id": 47268, "isConstant": false, "isLValue": false, "isPure": true, @@ -9381,14 +9381,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 47270, + "id": 47267, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8325:7:54", "typeDescriptions": {} } }, - "id": 47274, + "id": 47271, "isConstant": false, "isLValue": false, "isPure": false, @@ -9412,7 +9412,7 @@ "typeString": "uint256" } ], - "id": 47269, + "id": 47266, "isConstant": false, "isLValue": false, "isPure": true, @@ -9424,14 +9424,14 @@ "typeString": "type(int256)" }, "typeName": { - "id": 47268, + "id": 47265, "name": "int256", "nodeType": "ElementaryTypeName", "src": "8318:6:54", "typeDescriptions": {} } }, - "id": 47275, + "id": 47272, "isConstant": false, "isLValue": false, "isPure": false, @@ -9456,25 +9456,25 @@ "typeIdentifier": "t_int160", "typeString": "int160" }, - "id": 47280, + "id": 47277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47277, + "id": 47274, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "8372:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47278, + "id": 47275, "isConstant": false, "isLValue": true, "isPure": false, @@ -9482,7 +9482,7 @@ "memberLocation": "8375:12:54", "memberName": "slopeSqrtX96", "nodeType": "MemberAccess", - "referencedDeclaration": 46604, + "referencedDeclaration": 46601, "src": "8372:15:54", "typeDescriptions": { "typeIdentifier": "t_int160", @@ -9493,7 +9493,7 @@ "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 47279, + "id": 47276, "isConstant": false, "isLValue": false, "isPure": true, @@ -9513,27 +9513,27 @@ "typeString": "bool" } }, - "id": 47308, + "id": 47305, "nodeType": "IfStatement", "src": "8368:269:54", "trueBody": { - "id": 47307, + "id": 47304, "nodeType": "Block", "src": "8395:242:54", "statements": [ { "expression": { - "id": 47297, + "id": 47294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 47281, + "id": 47278, "name": "limit256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47267, + "referencedDeclaration": 47264, "src": "8470:8:54", "typeDescriptions": { "typeIdentifier": "t_int256", @@ -9547,7 +9547,7 @@ "typeIdentifier": "t_int256", "typeString": "int256" }, - "id": 47296, + "id": 47293, "isConstant": false, "isLValue": false, "isPure": false, @@ -9557,7 +9557,7 @@ "typeIdentifier": "t_int256", "typeString": "int256" }, - "id": 47292, + "id": 47289, "isConstant": false, "isLValue": false, "isPure": false, @@ -9569,14 +9569,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47288, + "id": 47285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47284, + "id": 47281, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9587,7 +9587,7 @@ "typeString": "block" } }, - "id": 47285, + "id": 47282, "isConstant": false, "isLValue": false, "isPure": false, @@ -9605,18 +9605,18 @@ "operator": "-", "rightExpression": { "expression": { - "id": 47286, + "id": 47283, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "8507:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47287, + "id": 47284, "isConstant": false, "isLValue": true, "isPure": false, @@ -9624,7 +9624,7 @@ "memberLocation": "8510:4:54", "memberName": "time", "nodeType": "MemberAccess", - "referencedDeclaration": 46600, + "referencedDeclaration": 46597, "src": "8507:7:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -9645,7 +9645,7 @@ "typeString": "uint256" } ], - "id": 47283, + "id": 47280, "isConstant": false, "isLValue": false, "isPure": true, @@ -9657,14 +9657,14 @@ "typeString": "type(int256)" }, "typeName": { - "id": 47282, + "id": 47279, "name": "int256", "nodeType": "ElementaryTypeName", "src": "8482:6:54", "typeDescriptions": {} } }, - "id": 47289, + "id": 47286, "isConstant": false, "isLValue": false, "isPure": false, @@ -9684,18 +9684,18 @@ "operator": "*", "rightExpression": { "expression": { - "id": 47290, + "id": 47287, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "8518:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47291, + "id": 47288, "isConstant": false, "isLValue": true, "isPure": false, @@ -9703,7 +9703,7 @@ "memberLocation": "8521:12:54", "memberName": "slopeSqrtX96", "nodeType": "MemberAccess", - "referencedDeclaration": 46604, + "referencedDeclaration": 46601, "src": "8518:15:54", "typeDescriptions": { "typeIdentifier": "t_int160", @@ -9723,14 +9723,14 @@ "typeIdentifier": "t_rational_79228162514264337593543950336_by_1", "typeString": "int_const 79228162514264337593543950336" }, - "id": 47295, + "id": 47292, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 47293, + "id": 47290, "isConstant": false, "isLValue": false, "isPure": true, @@ -9748,7 +9748,7 @@ "operator": "**", "rightExpression": { "hexValue": "3936", - "id": 47294, + "id": 47291, "isConstant": false, "isLValue": false, "isPure": true, @@ -9780,7 +9780,7 @@ "typeString": "int256" } }, - "id": 47298, + "id": 47295, "nodeType": "ExpressionStatement", "src": "8470:71:54" }, @@ -9790,17 +9790,17 @@ "typeIdentifier": "t_int256", "typeString": "int256" }, - "id": 47301, + "id": 47298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47299, + "id": 47296, "name": "limit256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47267, + "referencedDeclaration": 47264, "src": "8567:8:54", "typeDescriptions": { "typeIdentifier": "t_int256", @@ -9811,7 +9811,7 @@ "operator": "<", "rightExpression": { "hexValue": "30", - "id": 47300, + "id": 47297, "isConstant": false, "isLValue": false, "isPure": true, @@ -9831,22 +9831,22 @@ "typeString": "bool" } }, - "id": 47306, + "id": 47303, "nodeType": "IfStatement", "src": "8563:55:54", "trueBody": { "expression": { - "id": 47304, + "id": 47301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 47302, + "id": 47299, "name": "limit256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47267, + "referencedDeclaration": 47264, "src": "8606:8:54", "typeDescriptions": { "typeIdentifier": "t_int256", @@ -9857,7 +9857,7 @@ "operator": "=", "rightHandSide": { "hexValue": "30", - "id": 47303, + "id": 47300, "isConstant": false, "isLValue": false, "isPure": true, @@ -9877,7 +9877,7 @@ "typeString": "int256" } }, - "id": 47305, + "id": 47302, "nodeType": "ExpressionStatement", "src": "8606:12:54" } @@ -9889,11 +9889,11 @@ "expression": { "arguments": [ { - "id": 47312, + "id": 47309, "name": "limit256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47267, + "referencedDeclaration": 47264, "src": "8667:8:54", "typeDescriptions": { "typeIdentifier": "t_int256", @@ -9909,7 +9909,7 @@ } ], "expression": { - "id": 47309, + "id": 47306, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9920,7 +9920,7 @@ "typeString": "type(library console2)" } }, - "id": 47311, + "id": 47308, "isConstant": false, "isLValue": false, "isPure": false, @@ -9935,7 +9935,7 @@ "typeString": "function (int256) pure" } }, - "id": 47313, + "id": 47310, "isConstant": false, "isLValue": false, "isPure": false, @@ -9951,7 +9951,7 @@ "typeString": "tuple()" } }, - "id": 47314, + "id": 47311, "nodeType": "ExpressionStatement", "src": "8654:22:54" }, @@ -9959,11 +9959,11 @@ "expression": { "arguments": [ { - "id": 47318, + "id": 47315, "name": "price", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47256, + "referencedDeclaration": 47253, "src": "8707:5:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9979,7 +9979,7 @@ } ], "expression": { - "id": 47315, + "id": 47312, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9990,7 +9990,7 @@ "typeString": "type(library console2)" } }, - "id": 47317, + "id": 47314, "isConstant": false, "isLValue": false, "isPure": false, @@ -10005,7 +10005,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47319, + "id": 47316, "isConstant": false, "isLValue": false, "isPure": false, @@ -10021,7 +10021,7 @@ "typeString": "tuple()" } }, - "id": 47320, + "id": 47317, "nodeType": "ExpressionStatement", "src": "8694:19:54" }, @@ -10030,18 +10030,18 @@ "arguments": [ { "expression": { - "id": 47324, + "id": 47321, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "8744:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47325, + "id": 47322, "isConstant": false, "isLValue": true, "isPure": false, @@ -10049,7 +10049,7 @@ "memberLocation": "8747:7:54", "memberName": "isAbove", "nodeType": "MemberAccess", - "referencedDeclaration": 46596, + "referencedDeclaration": 46593, "src": "8744:10:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10065,7 +10065,7 @@ } ], "expression": { - "id": 47321, + "id": 47318, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -10076,7 +10076,7 @@ "typeString": "type(library console2)" } }, - "id": 47323, + "id": 47320, "isConstant": false, "isLValue": false, "isPure": false, @@ -10091,7 +10091,7 @@ "typeString": "function (bool) pure" } }, - "id": 47326, + "id": 47323, "isConstant": false, "isLValue": false, "isPure": false, @@ -10107,23 +10107,23 @@ "typeString": "tuple()" } }, - "id": 47327, + "id": 47324, "nodeType": "ExpressionStatement", "src": "8731:24:54" }, { "assignments": [ - 47329 + 47326 ], "declarations": [ { "constant": false, - "id": 47329, + "id": 47326, "mutability": "mutable", "name": "limit", "nameLocation": "8781:5:54", "nodeType": "VariableDeclaration", - "scope": 47380, + "scope": 47377, "src": "8773:13:54", "stateVariable": false, "storageLocation": "default", @@ -10132,7 +10132,7 @@ "typeString": "uint160" }, "typeName": { - "id": 47328, + "id": 47325, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "8773:7:54", @@ -10144,17 +10144,17 @@ "visibility": "internal" } ], - "id": 47337, + "id": 47334, "initialValue": { "arguments": [ { "arguments": [ { - "id": 47334, + "id": 47331, "name": "limit256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47267, + "referencedDeclaration": 47264, "src": "8805:8:54", "typeDescriptions": { "typeIdentifier": "t_int256", @@ -10169,7 +10169,7 @@ "typeString": "int256" } ], - "id": 47333, + "id": 47330, "isConstant": false, "isLValue": false, "isPure": true, @@ -10181,14 +10181,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 47332, + "id": 47329, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8797:7:54", "typeDescriptions": {} } }, - "id": 47335, + "id": 47332, "isConstant": false, "isLValue": false, "isPure": false, @@ -10212,7 +10212,7 @@ "typeString": "uint256" } ], - "id": 47331, + "id": 47328, "isConstant": false, "isLValue": false, "isPure": true, @@ -10224,14 +10224,14 @@ "typeString": "type(uint160)" }, "typeName": { - "id": 47330, + "id": 47327, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "8789:7:54", "typeDescriptions": {} } }, - "id": 47336, + "id": 47333, "isConstant": false, "isLValue": false, "isPure": false, @@ -10256,7 +10256,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 47351, + "id": 47348, "isConstant": false, "isLValue": false, "isPure": false, @@ -10266,25 +10266,25 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 47343, + "id": 47340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47338, + "id": 47335, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "8955:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47339, + "id": 47336, "isConstant": false, "isLValue": true, "isPure": false, @@ -10292,7 +10292,7 @@ "memberLocation": "8958:7:54", "memberName": "isAbove", "nodeType": "MemberAccess", - "referencedDeclaration": 46596, + "referencedDeclaration": 46593, "src": "8955:10:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10306,17 +10306,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47342, + "id": 47339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47340, + "id": 47337, "name": "price", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47256, + "referencedDeclaration": 47253, "src": "8969:5:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10326,11 +10326,11 @@ "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { - "id": 47341, + "id": 47338, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47329, + "referencedDeclaration": 47326, "src": "8978:5:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10356,13 +10356,13 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 47350, + "id": 47347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47346, + "id": 47343, "isConstant": false, "isLValue": false, "isPure": false, @@ -10373,18 +10373,18 @@ "src": "8987:11:54", "subExpression": { "expression": { - "id": 47344, + "id": 47341, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "8988:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47345, + "id": 47342, "isConstant": false, "isLValue": true, "isPure": false, @@ -10392,7 +10392,7 @@ "memberLocation": "8991:7:54", "memberName": "isAbove", "nodeType": "MemberAccess", - "referencedDeclaration": 46596, + "referencedDeclaration": 46593, "src": "8988:10:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10411,17 +10411,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47349, + "id": 47346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47347, + "id": 47344, "name": "price", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47256, + "referencedDeclaration": 47253, "src": "9002:5:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10431,11 +10431,11 @@ "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { - "id": 47348, + "id": 47345, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47329, + "referencedDeclaration": 47326, "src": "9011:5:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10460,7 +10460,7 @@ "typeString": "bool" } }, - "id": 47356, + "id": 47353, "nodeType": "IfStatement", "src": "8951:99:54", "trueBody": { @@ -10468,7 +10468,7 @@ "arguments": [ { "hexValue": "4c", - "id": 47353, + "id": 47350, "isConstant": false, "isLValue": false, "isPure": true, @@ -10490,7 +10490,7 @@ "typeString": "literal_string \"L\"" } ], - "id": 47352, + "id": 47349, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -10504,7 +10504,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47354, + "id": 47351, "isConstant": false, "isLValue": false, "isPure": false, @@ -10520,7 +10520,7 @@ "typeString": "tuple()" } }, - "id": 47355, + "id": 47352, "nodeType": "ExpressionStatement", "src": "9039:11:54" } @@ -10531,7 +10531,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 47374, + "id": 47371, "isConstant": false, "isLValue": false, "isPure": false, @@ -10541,7 +10541,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 47366, + "id": 47363, "isConstant": false, "isLValue": false, "isPure": false, @@ -10551,17 +10551,17 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 47359, + "id": 47356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47357, + "id": 47354, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47101, + "referencedDeclaration": 47098, "src": "9072:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10572,7 +10572,7 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 47358, + "id": 47355, "isConstant": false, "isLValue": false, "isPure": true, @@ -10599,25 +10599,25 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 47365, + "id": 47362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47360, + "id": 47357, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "9118:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47361, + "id": 47358, "isConstant": false, "isLValue": true, "isPure": false, @@ -10625,7 +10625,7 @@ "memberLocation": "9121:7:54", "memberName": "isAbove", "nodeType": "MemberAccess", - "referencedDeclaration": 46596, + "referencedDeclaration": 46593, "src": "9118:10:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10639,17 +10639,17 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 47364, + "id": 47361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47362, + "id": 47359, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47329, + "referencedDeclaration": 47326, "src": "9132:5:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10659,11 +10659,11 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 47363, + "id": 47360, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47101, + "referencedDeclaration": 47098, "src": "9140:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10695,13 +10695,13 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 47373, + "id": 47370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47369, + "id": 47366, "isConstant": false, "isLValue": false, "isPure": false, @@ -10712,18 +10712,18 @@ "src": "9181:11:54", "subExpression": { "expression": { - "id": 47367, + "id": 47364, "name": "lc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47246, + "referencedDeclaration": 47243, "src": "9182:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } }, - "id": 47368, + "id": 47365, "isConstant": false, "isLValue": true, "isPure": false, @@ -10731,7 +10731,7 @@ "memberLocation": "9185:7:54", "memberName": "isAbove", "nodeType": "MemberAccess", - "referencedDeclaration": 46596, + "referencedDeclaration": 46593, "src": "9182:10:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10750,17 +10750,17 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 47372, + "id": 47369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47370, + "id": 47367, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47329, + "referencedDeclaration": 47326, "src": "9196:5:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10770,11 +10770,11 @@ "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { - "id": 47371, + "id": 47368, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47101, + "referencedDeclaration": 47098, "src": "9204:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10799,22 +10799,22 @@ "typeString": "bool" } }, - "id": 47379, + "id": 47376, "nodeType": "IfStatement", "src": "9068:217:54", "trueBody": { "expression": { - "id": 47377, + "id": 47374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 47375, + "id": 47372, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47101, + "referencedDeclaration": 47098, "src": "9260:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10824,11 +10824,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 47376, + "id": 47373, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47329, + "referencedDeclaration": 47326, "src": "9280:5:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10841,7 +10841,7 @@ "typeString": "uint160" } }, - "id": 47378, + "id": 47375, "nodeType": "ExpressionStatement", "src": "9260:25:54" } @@ -10849,11 +10849,11 @@ ] } }, - "id": 47403, + "id": 47400, "nodeType": "IfStatement", "src": "7069:2480:54", "trueBody": { - "id": 47219, + "id": 47216, "nodeType": "Block", "src": "7113:576:54", "statements": [ @@ -10862,7 +10862,7 @@ "arguments": [ { "hexValue": "74696d6520636f6e73747261696e74", - "id": 47149, + "id": 47146, "isConstant": false, "isLValue": false, "isPure": true, @@ -10885,7 +10885,7 @@ } ], "expression": { - "id": 47146, + "id": 47143, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -10896,7 +10896,7 @@ "typeString": "type(library console2)" } }, - "id": 47148, + "id": 47145, "isConstant": false, "isLValue": false, "isPure": false, @@ -10911,7 +10911,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47150, + "id": 47147, "isConstant": false, "isLValue": false, "isPure": false, @@ -10927,70 +10927,70 @@ "typeString": "tuple()" } }, - "id": 47151, + "id": 47148, "nodeType": "ExpressionStatement", "src": "7131:31:54" }, { "assignments": [ - 47154 + 47151 ], "declarations": [ { "constant": false, - "id": 47154, + "id": 47151, "mutability": "mutable", "name": "tc", "nameLocation": "7202:2:54", "nodeType": "VariableDeclaration", - "scope": 47219, + "scope": 47216, "src": "7180:24:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_memory_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_memory_ptr", "typeString": "struct OrderLib.TimeConstraint" }, "typeName": { - "id": 47153, + "id": 47150, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47152, + "id": 47149, "name": "TimeConstraint", "nameLocations": [ "7180:14:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46631, + "referencedDeclaration": 46628, "src": "7180:14:54" }, - "referencedDeclaration": 46631, + "referencedDeclaration": 46628, "src": "7180:14:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_storage_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_storage_ptr", "typeString": "struct OrderLib.TimeConstraint" } }, "visibility": "internal" } ], - "id": 47162, + "id": 47159, "initialValue": { "arguments": [ { "expression": { - "id": 47157, + "id": 47154, "name": "constraint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47135, + "referencedDeclaration": 47132, "src": "7218:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint storage pointer" } }, - "id": 47158, + "id": 47155, "isConstant": false, "isLValue": true, "isPure": false, @@ -10998,7 +10998,7 @@ "memberLocation": "7229:10:54", "memberName": "constraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46593, + "referencedDeclaration": 46590, "src": "7218:21:54", "typeDescriptions": { "typeIdentifier": "t_bytes_storage", @@ -11008,19 +11008,19 @@ { "components": [ { - "id": 47159, + "id": 47156, "name": "TimeConstraint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46631, + "referencedDeclaration": 46628, "src": "7242:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_TimeConstraint_$46631_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_TimeConstraint_$46628_storage_ptr_$", "typeString": "type(struct OrderLib.TimeConstraint storage pointer)" } } ], - "id": 47160, + "id": 47157, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -11029,7 +11029,7 @@ "nodeType": "TupleExpression", "src": "7241:16:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_TimeConstraint_$46631_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_TimeConstraint_$46628_storage_ptr_$", "typeString": "type(struct OrderLib.TimeConstraint storage pointer)" } } @@ -11041,12 +11041,12 @@ "typeString": "bytes storage ref" }, { - "typeIdentifier": "t_type$_t_struct$_TimeConstraint_$46631_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_TimeConstraint_$46628_storage_ptr_$", "typeString": "type(struct OrderLib.TimeConstraint storage pointer)" } ], "expression": { - "id": 47155, + "id": 47152, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -11057,7 +11057,7 @@ "typeString": "abi" } }, - "id": 47156, + "id": 47153, "isConstant": false, "isLValue": false, "isPure": true, @@ -11071,7 +11071,7 @@ "typeString": "function () pure" } }, - "id": 47161, + "id": 47158, "isConstant": false, "isLValue": false, "isPure": false, @@ -11083,7 +11083,7 @@ "src": "7207:51:54", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_memory_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_memory_ptr", "typeString": "struct OrderLib.TimeConstraint memory" } }, @@ -11092,17 +11092,17 @@ }, { "assignments": [ - 47164 + 47161 ], "declarations": [ { "constant": false, - "id": 47164, + "id": 47161, "mutability": "mutable", "name": "time", "nameLocation": "7283:4:54", "nodeType": "VariableDeclaration", - "scope": 47219, + "scope": 47216, "src": "7276:11:54", "stateVariable": false, "storageLocation": "default", @@ -11111,7 +11111,7 @@ "typeString": "uint32" }, "typeName": { - "id": 47163, + "id": 47160, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "7276:6:54", @@ -11123,14 +11123,14 @@ "visibility": "internal" } ], - "id": 47181, + "id": 47178, "initialValue": { "condition": { "commonType": { - "typeIdentifier": "t_enum$_TimeMode_$46608", + "typeIdentifier": "t_enum$_TimeMode_$46605", "typeString": "enum OrderLib.TimeMode" }, - "id": 47170, + "id": 47167, "isConstant": false, "isLValue": false, "isPure": false, @@ -11138,18 +11138,18 @@ "leftExpression": { "expression": { "expression": { - "id": 47165, + "id": 47162, "name": "tc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47154, + "referencedDeclaration": 47151, "src": "7290:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_memory_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_memory_ptr", "typeString": "struct OrderLib.TimeConstraint memory" } }, - "id": 47166, + "id": 47163, "isConstant": false, "isLValue": true, "isPure": false, @@ -11157,14 +11157,14 @@ "memberLocation": "7293:8:54", "memberName": "earliest", "nodeType": "MemberAccess", - "referencedDeclaration": 46627, + "referencedDeclaration": 46624, "src": "7290:11:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_memory_ptr", + "typeIdentifier": "t_struct$_Time_$46611_memory_ptr", "typeString": "struct OrderLib.Time memory" } }, - "id": 47167, + "id": 47164, "isConstant": false, "isLValue": true, "isPure": false, @@ -11172,10 +11172,10 @@ "memberLocation": "7302:4:54", "memberName": "mode", "nodeType": "MemberAccess", - "referencedDeclaration": 46611, + "referencedDeclaration": 46608, "src": "7290:16:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_TimeMode_$46608", + "typeIdentifier": "t_enum$_TimeMode_$46605", "typeString": "enum OrderLib.TimeMode" } }, @@ -11183,18 +11183,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 47168, + "id": 47165, "name": "TimeMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46608, + "referencedDeclaration": 46605, "src": "7310:8:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_TimeMode_$46608_$", + "typeIdentifier": "t_type$_t_enum$_TimeMode_$46605_$", "typeString": "type(enum OrderLib.TimeMode)" } }, - "id": 47169, + "id": 47166, "isConstant": false, "isLValue": false, "isPure": true, @@ -11202,10 +11202,10 @@ "memberLocation": "7319:9:54", "memberName": "Timestamp", "nodeType": "MemberAccess", - "referencedDeclaration": 46606, + "referencedDeclaration": 46603, "src": "7310:18:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_TimeMode_$46608", + "typeIdentifier": "t_enum$_TimeMode_$46605", "typeString": "enum OrderLib.TimeMode" } }, @@ -11220,25 +11220,25 @@ "typeIdentifier": "t_uint32", "typeString": "uint32" }, - "id": 47179, + "id": 47176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47174, + "id": 47171, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "7350:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47175, + "id": 47172, "isConstant": false, "isLValue": true, "isPure": false, @@ -11246,7 +11246,7 @@ "memberLocation": "7357:5:54", "memberName": "start", "nodeType": "MemberAccess", - "referencedDeclaration": 46571, + "referencedDeclaration": 46568, "src": "7350:12:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11258,18 +11258,18 @@ "rightExpression": { "expression": { "expression": { - "id": 47176, + "id": 47173, "name": "tc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47154, + "referencedDeclaration": 47151, "src": "7365:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_memory_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_memory_ptr", "typeString": "struct OrderLib.TimeConstraint memory" } }, - "id": 47177, + "id": 47174, "isConstant": false, "isLValue": true, "isPure": false, @@ -11277,14 +11277,14 @@ "memberLocation": "7368:8:54", "memberName": "earliest", "nodeType": "MemberAccess", - "referencedDeclaration": 46627, + "referencedDeclaration": 46624, "src": "7365:11:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_memory_ptr", + "typeIdentifier": "t_struct$_Time_$46611_memory_ptr", "typeString": "struct OrderLib.Time memory" } }, - "id": 47178, + "id": 47175, "isConstant": false, "isLValue": true, "isPure": false, @@ -11292,7 +11292,7 @@ "memberLocation": "7377:4:54", "memberName": "time", "nodeType": "MemberAccess", - "referencedDeclaration": 46613, + "referencedDeclaration": 46610, "src": "7365:16:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11305,7 +11305,7 @@ "typeString": "uint32" } }, - "id": 47180, + "id": 47177, "isConstant": false, "isLValue": false, "isPure": false, @@ -11315,18 +11315,18 @@ "trueExpression": { "expression": { "expression": { - "id": 47171, + "id": 47168, "name": "tc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47154, + "referencedDeclaration": 47151, "src": "7331:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_memory_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_memory_ptr", "typeString": "struct OrderLib.TimeConstraint memory" } }, - "id": 47172, + "id": 47169, "isConstant": false, "isLValue": true, "isPure": false, @@ -11334,14 +11334,14 @@ "memberLocation": "7334:8:54", "memberName": "earliest", "nodeType": "MemberAccess", - "referencedDeclaration": 46627, + "referencedDeclaration": 46624, "src": "7331:11:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_memory_ptr", + "typeIdentifier": "t_struct$_Time_$46611_memory_ptr", "typeString": "struct OrderLib.Time memory" } }, - "id": 47173, + "id": 47170, "isConstant": false, "isLValue": true, "isPure": false, @@ -11349,7 +11349,7 @@ "memberLocation": "7343:4:54", "memberName": "time", "nodeType": "MemberAccess", - "referencedDeclaration": 46613, + "referencedDeclaration": 46610, "src": "7331:16:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11370,17 +11370,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47185, + "id": 47182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47182, + "id": 47179, "name": "time", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47164, + "referencedDeclaration": 47161, "src": "7403:4:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11391,7 +11391,7 @@ "operator": ">", "rightExpression": { "expression": { - "id": 47183, + "id": 47180, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -11402,7 +11402,7 @@ "typeString": "block" } }, - "id": 47184, + "id": 47181, "isConstant": false, "isLValue": false, "isPure": false, @@ -11422,7 +11422,7 @@ "typeString": "bool" } }, - "id": 47190, + "id": 47187, "nodeType": "IfStatement", "src": "7399:60:54", "trueBody": { @@ -11430,7 +11430,7 @@ "arguments": [ { "hexValue": "5445", - "id": 47187, + "id": 47184, "isConstant": false, "isLValue": false, "isPure": true, @@ -11452,7 +11452,7 @@ "typeString": "literal_string \"TE\"" } ], - "id": 47186, + "id": 47183, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -11466,7 +11466,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47188, + "id": 47185, "isConstant": false, "isLValue": false, "isPure": false, @@ -11482,24 +11482,24 @@ "typeString": "tuple()" } }, - "id": 47189, + "id": 47186, "nodeType": "ExpressionStatement", "src": "7447:12:54" } }, { "expression": { - "id": 47208, + "id": 47205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 47191, + "id": 47188, "name": "time", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47164, + "referencedDeclaration": 47161, "src": "7491:4:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11511,10 +11511,10 @@ "rightHandSide": { "condition": { "commonType": { - "typeIdentifier": "t_enum$_TimeMode_$46608", + "typeIdentifier": "t_enum$_TimeMode_$46605", "typeString": "enum OrderLib.TimeMode" }, - "id": 47197, + "id": 47194, "isConstant": false, "isLValue": false, "isPure": false, @@ -11522,18 +11522,18 @@ "leftExpression": { "expression": { "expression": { - "id": 47192, + "id": 47189, "name": "tc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47154, + "referencedDeclaration": 47151, "src": "7498:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_memory_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_memory_ptr", "typeString": "struct OrderLib.TimeConstraint memory" } }, - "id": 47193, + "id": 47190, "isConstant": false, "isLValue": true, "isPure": false, @@ -11541,14 +11541,14 @@ "memberLocation": "7501:6:54", "memberName": "latest", "nodeType": "MemberAccess", - "referencedDeclaration": 46630, + "referencedDeclaration": 46627, "src": "7498:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_memory_ptr", + "typeIdentifier": "t_struct$_Time_$46611_memory_ptr", "typeString": "struct OrderLib.Time memory" } }, - "id": 47194, + "id": 47191, "isConstant": false, "isLValue": true, "isPure": false, @@ -11556,10 +11556,10 @@ "memberLocation": "7508:4:54", "memberName": "mode", "nodeType": "MemberAccess", - "referencedDeclaration": 46611, + "referencedDeclaration": 46608, "src": "7498:14:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_TimeMode_$46608", + "typeIdentifier": "t_enum$_TimeMode_$46605", "typeString": "enum OrderLib.TimeMode" } }, @@ -11567,18 +11567,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 47195, + "id": 47192, "name": "TimeMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46608, + "referencedDeclaration": 46605, "src": "7516:8:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_TimeMode_$46608_$", + "typeIdentifier": "t_type$_t_enum$_TimeMode_$46605_$", "typeString": "type(enum OrderLib.TimeMode)" } }, - "id": 47196, + "id": 47193, "isConstant": false, "isLValue": false, "isPure": true, @@ -11586,10 +11586,10 @@ "memberLocation": "7525:9:54", "memberName": "Timestamp", "nodeType": "MemberAccess", - "referencedDeclaration": 46606, + "referencedDeclaration": 46603, "src": "7516:18:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_TimeMode_$46608", + "typeIdentifier": "t_enum$_TimeMode_$46605", "typeString": "enum OrderLib.TimeMode" } }, @@ -11604,25 +11604,25 @@ "typeIdentifier": "t_uint32", "typeString": "uint32" }, - "id": 47206, + "id": 47203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47201, + "id": 47198, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "7554:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47202, + "id": 47199, "isConstant": false, "isLValue": true, "isPure": false, @@ -11630,7 +11630,7 @@ "memberLocation": "7561:5:54", "memberName": "start", "nodeType": "MemberAccess", - "referencedDeclaration": 46571, + "referencedDeclaration": 46568, "src": "7554:12:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11642,18 +11642,18 @@ "rightExpression": { "expression": { "expression": { - "id": 47203, + "id": 47200, "name": "tc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47154, + "referencedDeclaration": 47151, "src": "7569:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_memory_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_memory_ptr", "typeString": "struct OrderLib.TimeConstraint memory" } }, - "id": 47204, + "id": 47201, "isConstant": false, "isLValue": true, "isPure": false, @@ -11661,14 +11661,14 @@ "memberLocation": "7572:6:54", "memberName": "latest", "nodeType": "MemberAccess", - "referencedDeclaration": 46630, + "referencedDeclaration": 46627, "src": "7569:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_memory_ptr", + "typeIdentifier": "t_struct$_Time_$46611_memory_ptr", "typeString": "struct OrderLib.Time memory" } }, - "id": 47205, + "id": 47202, "isConstant": false, "isLValue": true, "isPure": false, @@ -11676,7 +11676,7 @@ "memberLocation": "7579:4:54", "memberName": "time", "nodeType": "MemberAccess", - "referencedDeclaration": 46613, + "referencedDeclaration": 46610, "src": "7569:14:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11689,7 +11689,7 @@ "typeString": "uint32" } }, - "id": 47207, + "id": 47204, "isConstant": false, "isLValue": false, "isPure": false, @@ -11699,18 +11699,18 @@ "trueExpression": { "expression": { "expression": { - "id": 47198, + "id": 47195, "name": "tc", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47154, + "referencedDeclaration": 47151, "src": "7537:2:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimeConstraint_$46631_memory_ptr", + "typeIdentifier": "t_struct$_TimeConstraint_$46628_memory_ptr", "typeString": "struct OrderLib.TimeConstraint memory" } }, - "id": 47199, + "id": 47196, "isConstant": false, "isLValue": true, "isPure": false, @@ -11718,14 +11718,14 @@ "memberLocation": "7540:6:54", "memberName": "latest", "nodeType": "MemberAccess", - "referencedDeclaration": 46630, + "referencedDeclaration": 46627, "src": "7537:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Time_$46614_memory_ptr", + "typeIdentifier": "t_struct$_Time_$46611_memory_ptr", "typeString": "struct OrderLib.Time memory" } }, - "id": 47200, + "id": 47197, "isConstant": false, "isLValue": true, "isPure": false, @@ -11733,7 +11733,7 @@ "memberLocation": "7547:4:54", "memberName": "time", "nodeType": "MemberAccess", - "referencedDeclaration": 46613, + "referencedDeclaration": 46610, "src": "7537:14:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11751,7 +11751,7 @@ "typeString": "uint32" } }, - "id": 47209, + "id": 47206, "nodeType": "ExpressionStatement", "src": "7491:92:54" }, @@ -11761,17 +11761,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47213, + "id": 47210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47210, + "id": 47207, "name": "time", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47164, + "referencedDeclaration": 47161, "src": "7605:4:54", "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -11782,7 +11782,7 @@ "operator": "<", "rightExpression": { "expression": { - "id": 47211, + "id": 47208, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -11793,7 +11793,7 @@ "typeString": "block" } }, - "id": 47212, + "id": 47209, "isConstant": false, "isLValue": false, "isPure": false, @@ -11813,7 +11813,7 @@ "typeString": "bool" } }, - "id": 47218, + "id": 47215, "nodeType": "IfStatement", "src": "7601:60:54", "trueBody": { @@ -11821,7 +11821,7 @@ "arguments": [ { "hexValue": "544c", - "id": 47215, + "id": 47212, "isConstant": false, "isLValue": false, "isPure": true, @@ -11843,7 +11843,7 @@ "typeString": "literal_string \"TL\"" } ], - "id": 47214, + "id": 47211, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -11857,7 +11857,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47216, + "id": 47213, "isConstant": false, "isLValue": false, "isPure": false, @@ -11873,7 +11873,7 @@ "typeString": "tuple()" } }, - "id": 47217, + "id": 47214, "nodeType": "ExpressionStatement", "src": "7649:12:54" } @@ -11888,17 +11888,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47129, + "id": 47126, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47125, + "id": 47122, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47122, + "referencedDeclaration": 47119, "src": "6950:1:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -11910,18 +11910,18 @@ "rightExpression": { "expression": { "expression": { - "id": 47126, + "id": 47123, "name": "tranche", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47089, + "referencedDeclaration": 47086, "src": "6954:7:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche storage pointer" } }, - "id": 47127, + "id": 47124, "isConstant": false, "isLValue": true, "isPure": false, @@ -11929,14 +11929,14 @@ "memberLocation": "6962:11:54", "memberName": "constraints", "nodeType": "MemberAccess", - "referencedDeclaration": 46637, + "referencedDeclaration": 46634, "src": "6954:19:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage", "typeString": "struct OrderLib.Constraint storage ref[] storage ref" } }, - "id": 47128, + "id": 47125, "isConstant": false, "isLValue": false, "isPure": false, @@ -11956,20 +11956,20 @@ "typeString": "bool" } }, - "id": 47405, + "id": 47402, "initializationExpression": { "assignments": [ - 47122 + 47119 ], "declarations": [ { "constant": false, - "id": 47122, + "id": 47119, "mutability": "mutable", "name": "c", "nameLocation": "6943:1:54", "nodeType": "VariableDeclaration", - "scope": 47405, + "scope": 47402, "src": "6937:7:54", "stateVariable": false, "storageLocation": "default", @@ -11978,7 +11978,7 @@ "typeString": "uint8" }, "typeName": { - "id": 47121, + "id": 47118, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6937:5:54", @@ -11990,10 +11990,10 @@ "visibility": "internal" } ], - "id": 47124, + "id": 47121, "initialValue": { "hexValue": "30", - "id": 47123, + "id": 47120, "isConstant": false, "isLValue": false, "isPure": true, @@ -12013,7 +12013,7 @@ "isSimpleCounterLoop": false, "loopExpression": { "expression": { - "id": 47131, + "id": 47128, "isConstant": false, "isLValue": false, "isPure": false, @@ -12023,11 +12023,11 @@ "prefix": false, "src": "6982:3:54", "subExpression": { - "id": 47130, + "id": 47127, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47122, + "referencedDeclaration": 47119, "src": "6982:1:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -12039,7 +12039,7 @@ "typeString": "uint8" } }, - "id": 47132, + "id": 47129, "nodeType": "ExpressionStatement", "src": "6982:3:54" }, @@ -12051,7 +12051,7 @@ "arguments": [ { "hexValue": "636f6d707574696e6720616d6f756e74", - "id": 47409, + "id": 47406, "isConstant": false, "isLValue": false, "isPure": true, @@ -12074,7 +12074,7 @@ } ], "expression": { - "id": 47406, + "id": 47403, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12085,7 +12085,7 @@ "typeString": "type(library console2)" } }, - "id": 47408, + "id": 47405, "isConstant": false, "isLValue": false, "isPure": false, @@ -12100,7 +12100,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47410, + "id": 47407, "isConstant": false, "isLValue": false, "isPure": false, @@ -12116,7 +12116,7 @@ "typeString": "tuple()" } }, - "id": 47411, + "id": 47408, "nodeType": "ExpressionStatement", "src": "9588:32:54" }, @@ -12126,18 +12126,18 @@ { "expression": { "expression": { - "id": 47415, + "id": 47412, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "9643:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47416, + "id": 47413, "isConstant": false, "isLValue": true, "isPure": false, @@ -12145,14 +12145,14 @@ "memberLocation": "9650:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "9643:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47417, + "id": 47414, "isConstant": false, "isLValue": true, "isPure": false, @@ -12160,7 +12160,7 @@ "memberLocation": "9656:6:54", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 46552, + "referencedDeclaration": 46549, "src": "9643:19:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12176,7 +12176,7 @@ } ], "expression": { - "id": 47412, + "id": 47409, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12187,7 +12187,7 @@ "typeString": "type(library console2)" } }, - "id": 47414, + "id": 47411, "isConstant": false, "isLValue": false, "isPure": false, @@ -12202,7 +12202,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47418, + "id": 47415, "isConstant": false, "isLValue": false, "isPure": false, @@ -12218,7 +12218,7 @@ "typeString": "tuple()" } }, - "id": 47419, + "id": 47416, "nodeType": "ExpressionStatement", "src": "9630:33:54" }, @@ -12227,18 +12227,18 @@ "arguments": [ { "expression": { - "id": 47423, + "id": 47420, "name": "tranche", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47089, + "referencedDeclaration": 47086, "src": "9686:7:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche storage pointer" } }, - "id": 47424, + "id": 47421, "isConstant": false, "isLValue": true, "isPure": false, @@ -12246,7 +12246,7 @@ "memberLocation": "9694:8:54", "memberName": "fraction", "nodeType": "MemberAccess", - "referencedDeclaration": 46633, + "referencedDeclaration": 46630, "src": "9686:16:54", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -12262,7 +12262,7 @@ } ], "expression": { - "id": 47420, + "id": 47417, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12273,7 +12273,7 @@ "typeString": "type(library console2)" } }, - "id": 47422, + "id": 47419, "isConstant": false, "isLValue": false, "isPure": false, @@ -12288,7 +12288,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47425, + "id": 47422, "isConstant": false, "isLValue": false, "isPure": false, @@ -12304,7 +12304,7 @@ "typeString": "tuple()" } }, - "id": 47426, + "id": 47423, "nodeType": "ExpressionStatement", "src": "9673:30:54" }, @@ -12314,18 +12314,18 @@ { "expression": { "expression": { - "id": 47430, + "id": 47427, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "9726:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47431, + "id": 47428, "isConstant": false, "isLValue": true, "isPure": false, @@ -12333,14 +12333,14 @@ "memberLocation": "9733:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "9726:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47432, + "id": 47429, "isConstant": false, "isLValue": true, "isPure": false, @@ -12348,7 +12348,7 @@ "memberLocation": "9739:13:54", "memberName": "amountIsInput", "nodeType": "MemberAccess", - "referencedDeclaration": 46554, + "referencedDeclaration": 46551, "src": "9726:26:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -12364,7 +12364,7 @@ } ], "expression": { - "id": 47427, + "id": 47424, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12375,7 +12375,7 @@ "typeString": "type(library console2)" } }, - "id": 47429, + "id": 47426, "isConstant": false, "isLValue": false, "isPure": false, @@ -12390,7 +12390,7 @@ "typeString": "function (bool) pure" } }, - "id": 47433, + "id": 47430, "isConstant": false, "isLValue": false, "isPure": false, @@ -12406,7 +12406,7 @@ "typeString": "tuple()" } }, - "id": 47434, + "id": 47431, "nodeType": "ExpressionStatement", "src": "9713:40:54" }, @@ -12415,18 +12415,18 @@ "arguments": [ { "expression": { - "id": 47438, + "id": 47435, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "9776:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47439, + "id": 47436, "isConstant": false, "isLValue": true, "isPure": false, @@ -12434,7 +12434,7 @@ "memberLocation": "9783:8:54", "memberName": "filledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46575, + "referencedDeclaration": 46572, "src": "9776:15:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12450,7 +12450,7 @@ } ], "expression": { - "id": 47435, + "id": 47432, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12461,7 +12461,7 @@ "typeString": "type(library console2)" } }, - "id": 47437, + "id": 47434, "isConstant": false, "isLValue": false, "isPure": false, @@ -12476,7 +12476,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47440, + "id": 47437, "isConstant": false, "isLValue": false, "isPure": false, @@ -12492,7 +12492,7 @@ "typeString": "tuple()" } }, - "id": 47441, + "id": 47438, "nodeType": "ExpressionStatement", "src": "9763:29:54" }, @@ -12501,18 +12501,18 @@ "arguments": [ { "expression": { - "id": 47445, + "id": 47442, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "9815:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47446, + "id": 47443, "isConstant": false, "isLValue": true, "isPure": false, @@ -12520,7 +12520,7 @@ "memberLocation": "9822:9:54", "memberName": "filledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46577, + "referencedDeclaration": 46574, "src": "9815:16:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12536,7 +12536,7 @@ } ], "expression": { - "id": 47442, + "id": 47439, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12547,7 +12547,7 @@ "typeString": "type(library console2)" } }, - "id": 47444, + "id": 47441, "isConstant": false, "isLValue": false, "isPure": false, @@ -12562,7 +12562,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47447, + "id": 47444, "isConstant": false, "isLValue": false, "isPure": false, @@ -12578,7 +12578,7 @@ "typeString": "tuple()" } }, - "id": 47448, + "id": 47445, "nodeType": "ExpressionStatement", "src": "9802:30:54" }, @@ -12588,18 +12588,18 @@ { "baseExpression": { "expression": { - "id": 47452, + "id": 47449, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "9855:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47453, + "id": 47450, "isConstant": false, "isLValue": true, "isPure": false, @@ -12607,20 +12607,20 @@ "memberLocation": "9862:15:54", "memberName": "trancheFilledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46580, + "referencedDeclaration": 46577, "src": "9855:22:54", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 47455, + "id": 47452, "indexExpression": { - "id": 47454, + "id": 47451, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "9878:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -12647,7 +12647,7 @@ } ], "expression": { - "id": 47449, + "id": 47446, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12658,7 +12658,7 @@ "typeString": "type(library console2)" } }, - "id": 47451, + "id": 47448, "isConstant": false, "isLValue": false, "isPure": false, @@ -12673,7 +12673,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47456, + "id": 47453, "isConstant": false, "isLValue": false, "isPure": false, @@ -12689,7 +12689,7 @@ "typeString": "tuple()" } }, - "id": 47457, + "id": 47454, "nodeType": "ExpressionStatement", "src": "9842:50:54" }, @@ -12699,18 +12699,18 @@ { "baseExpression": { "expression": { - "id": 47461, + "id": 47458, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "9915:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47462, + "id": 47459, "isConstant": false, "isLValue": true, "isPure": false, @@ -12718,20 +12718,20 @@ "memberLocation": "9922:16:54", "memberName": "trancheFilledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46583, + "referencedDeclaration": 46580, "src": "9915:23:54", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 47464, + "id": 47461, "indexExpression": { - "id": 47463, + "id": 47460, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "9939:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -12758,7 +12758,7 @@ } ], "expression": { - "id": 47458, + "id": 47455, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12769,7 +12769,7 @@ "typeString": "type(library console2)" } }, - "id": 47460, + "id": 47457, "isConstant": false, "isLValue": false, "isPure": false, @@ -12784,7 +12784,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47465, + "id": 47462, "isConstant": false, "isLValue": false, "isPure": false, @@ -12800,23 +12800,23 @@ "typeString": "tuple()" } }, - "id": 47466, + "id": 47463, "nodeType": "ExpressionStatement", "src": "9902:51:54" }, { "assignments": [ - 47468 + 47465 ], "declarations": [ { "constant": false, - "id": 47468, + "id": 47465, "mutability": "mutable", "name": "amount", "nameLocation": "9971:6:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "9963:14:54", "stateVariable": false, "storageLocation": "default", @@ -12825,7 +12825,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47467, + "id": 47464, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9963:7:54", @@ -12837,13 +12837,13 @@ "visibility": "internal" } ], - "id": 47495, + "id": 47492, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47494, + "id": 47491, "isConstant": false, "isLValue": false, "isPure": false, @@ -12853,7 +12853,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47480, + "id": 47477, "isConstant": false, "isLValue": false, "isPure": false, @@ -12863,7 +12863,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47474, + "id": 47471, "isConstant": false, "isLValue": false, "isPure": false, @@ -12871,18 +12871,18 @@ "leftExpression": { "expression": { "expression": { - "id": 47469, + "id": 47466, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "9980:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47470, + "id": 47467, "isConstant": false, "isLValue": true, "isPure": false, @@ -12890,14 +12890,14 @@ "memberLocation": "9987:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "9980:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47471, + "id": 47468, "isConstant": false, "isLValue": true, "isPure": false, @@ -12905,7 +12905,7 @@ "memberLocation": "9993:6:54", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 46552, + "referencedDeclaration": 46549, "src": "9980:19:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12916,18 +12916,18 @@ "operator": "*", "rightExpression": { "expression": { - "id": 47472, + "id": 47469, "name": "tranche", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47089, + "referencedDeclaration": 47086, "src": "10002:7:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche storage pointer" } }, - "id": 47473, + "id": 47470, "isConstant": false, "isLValue": true, "isPure": false, @@ -12935,7 +12935,7 @@ "memberLocation": "10010:8:54", "memberName": "fraction", "nodeType": "MemberAccess", - "referencedDeclaration": 46633, + "referencedDeclaration": 46630, "src": "10002:16:54", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -12954,7 +12954,7 @@ "expression": { "arguments": [ { - "id": 47477, + "id": 47474, "isConstant": false, "isLValue": false, "isPure": true, @@ -12966,7 +12966,7 @@ "typeString": "type(uint16)" }, "typeName": { - "id": 47476, + "id": 47473, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "10026:6:54", @@ -12981,7 +12981,7 @@ "typeString": "type(uint16)" } ], - "id": 47475, + "id": 47472, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12992,7 +12992,7 @@ "typeString": "function () pure" } }, - "id": 47478, + "id": 47475, "isConstant": false, "isLValue": false, "isPure": true, @@ -13008,7 +13008,7 @@ "typeString": "type(uint16)" } }, - "id": 47479, + "id": 47476, "isConstant": false, "isLValue": false, "isPure": true, @@ -13036,18 +13036,18 @@ "condition": { "expression": { "expression": { - "id": 47481, + "id": 47478, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10100:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47482, + "id": 47479, "isConstant": false, "isLValue": true, "isPure": false, @@ -13055,14 +13055,14 @@ "memberLocation": "10107:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "10100:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47483, + "id": 47480, "isConstant": false, "isLValue": true, "isPure": false, @@ -13070,7 +13070,7 @@ "memberLocation": "10113:13:54", "memberName": "amountIsInput", "nodeType": "MemberAccess", - "referencedDeclaration": 46554, + "referencedDeclaration": 46551, "src": "10100:26:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -13080,18 +13080,18 @@ "falseExpression": { "baseExpression": { "expression": { - "id": 47488, + "id": 47485, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10168:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47489, + "id": 47486, "isConstant": false, "isLValue": true, "isPure": false, @@ -13099,20 +13099,20 @@ "memberLocation": "10175:16:54", "memberName": "trancheFilledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46583, + "referencedDeclaration": 46580, "src": "10168:23:54", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 47491, + "id": 47488, "indexExpression": { - "id": 47490, + "id": 47487, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "10192:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -13130,7 +13130,7 @@ "typeString": "uint256" } }, - "id": 47492, + "id": 47489, "isConstant": false, "isLValue": false, "isPure": false, @@ -13140,18 +13140,18 @@ "trueExpression": { "baseExpression": { "expression": { - "id": 47484, + "id": 47481, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10129:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47485, + "id": 47482, "isConstant": false, "isLValue": true, "isPure": false, @@ -13159,20 +13159,20 @@ "memberLocation": "10136:15:54", "memberName": "trancheFilledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46580, + "referencedDeclaration": 46577, "src": "10129:22:54", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 47487, + "id": 47484, "indexExpression": { - "id": 47486, + "id": 47483, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "10152:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -13196,7 +13196,7 @@ } } ], - "id": 47493, + "id": 47490, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -13223,7 +13223,7 @@ "arguments": [ { "hexValue": "616d6f756e74", - "id": 47499, + "id": 47496, "isConstant": false, "isLValue": false, "isPure": true, @@ -13246,7 +13246,7 @@ } ], "expression": { - "id": 47496, + "id": 47493, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -13257,7 +13257,7 @@ "typeString": "type(library console2)" } }, - "id": 47498, + "id": 47495, "isConstant": false, "isLValue": false, "isPure": false, @@ -13272,7 +13272,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47500, + "id": 47497, "isConstant": false, "isLValue": false, "isPure": false, @@ -13288,7 +13288,7 @@ "typeString": "tuple()" } }, - "id": 47501, + "id": 47498, "nodeType": "ExpressionStatement", "src": "10239:22:54" }, @@ -13296,11 +13296,11 @@ "expression": { "arguments": [ { - "id": 47505, + "id": 47502, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47468, + "referencedDeclaration": 47465, "src": "10284:6:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13316,7 +13316,7 @@ } ], "expression": { - "id": 47502, + "id": 47499, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -13327,7 +13327,7 @@ "typeString": "type(library console2)" } }, - "id": 47504, + "id": 47501, "isConstant": false, "isLValue": false, "isPure": false, @@ -13342,7 +13342,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47506, + "id": 47503, "isConstant": false, "isLValue": false, "isPure": false, @@ -13358,7 +13358,7 @@ "typeString": "tuple()" } }, - "id": 47507, + "id": 47504, "nodeType": "ExpressionStatement", "src": "10271:20:54" }, @@ -13367,7 +13367,7 @@ "arguments": [ { "hexValue": "6c696d6974", - "id": 47511, + "id": 47508, "isConstant": false, "isLValue": false, "isPure": true, @@ -13390,7 +13390,7 @@ } ], "expression": { - "id": 47508, + "id": 47505, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -13401,7 +13401,7 @@ "typeString": "type(library console2)" } }, - "id": 47510, + "id": 47507, "isConstant": false, "isLValue": false, "isPure": false, @@ -13416,7 +13416,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47512, + "id": 47509, "isConstant": false, "isLValue": false, "isPure": false, @@ -13432,7 +13432,7 @@ "typeString": "tuple()" } }, - "id": 47513, + "id": 47510, "nodeType": "ExpressionStatement", "src": "10301:21:54" }, @@ -13440,11 +13440,11 @@ "expression": { "arguments": [ { - "id": 47517, + "id": 47514, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47101, + "referencedDeclaration": 47098, "src": "10345:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -13460,7 +13460,7 @@ } ], "expression": { - "id": 47514, + "id": 47511, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -13471,7 +13471,7 @@ "typeString": "type(library console2)" } }, - "id": 47516, + "id": 47513, "isConstant": false, "isLValue": false, "isPure": false, @@ -13486,7 +13486,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47518, + "id": 47515, "isConstant": false, "isLValue": false, "isPure": false, @@ -13502,7 +13502,7 @@ "typeString": "tuple()" } }, - "id": 47519, + "id": 47516, "nodeType": "ExpressionStatement", "src": "10332:31:54" }, @@ -13511,7 +13511,7 @@ "arguments": [ { "hexValue": "7072696365", - "id": 47523, + "id": 47520, "isConstant": false, "isLValue": false, "isPure": true, @@ -13534,7 +13534,7 @@ } ], "expression": { - "id": 47520, + "id": 47517, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -13545,7 +13545,7 @@ "typeString": "type(library console2)" } }, - "id": 47522, + "id": 47519, "isConstant": false, "isLValue": false, "isPure": false, @@ -13560,7 +13560,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47524, + "id": 47521, "isConstant": false, "isLValue": false, "isPure": false, @@ -13576,7 +13576,7 @@ "typeString": "tuple()" } }, - "id": 47525, + "id": 47522, "nodeType": "ExpressionStatement", "src": "10373:21:54" }, @@ -13584,11 +13584,11 @@ "expression": { "arguments": [ { - "id": 47529, + "id": 47526, "name": "sqrtPriceX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47097, + "referencedDeclaration": 47094, "src": "10417:12:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -13604,7 +13604,7 @@ } ], "expression": { - "id": 47526, + "id": 47523, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -13615,7 +13615,7 @@ "typeString": "type(library console2)" } }, - "id": 47528, + "id": 47525, "isConstant": false, "isLValue": false, "isPure": false, @@ -13630,7 +13630,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47530, + "id": 47527, "isConstant": false, "isLValue": false, "isPure": false, @@ -13646,7 +13646,7 @@ "typeString": "tuple()" } }, - "id": 47531, + "id": 47528, "nodeType": "ExpressionStatement", "src": "10404:26:54" }, @@ -13658,7 +13658,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47545, + "id": 47542, "isConstant": false, "isLValue": false, "isPure": false, @@ -13669,18 +13669,18 @@ "condition": { "expression": { "expression": { - "id": 47533, + "id": 47530, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10484:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47534, + "id": 47531, "isConstant": false, "isLValue": true, "isPure": false, @@ -13688,14 +13688,14 @@ "memberLocation": "10491:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "10484:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47535, + "id": 47532, "isConstant": false, "isLValue": true, "isPure": false, @@ -13703,7 +13703,7 @@ "memberLocation": "10497:13:54", "memberName": "amountIsInput", "nodeType": "MemberAccess", - "referencedDeclaration": 46554, + "referencedDeclaration": 46551, "src": "10484:26:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -13712,18 +13712,18 @@ }, "falseExpression": { "expression": { - "id": 47538, + "id": 47535, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10531:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47539, + "id": 47536, "isConstant": false, "isLValue": true, "isPure": false, @@ -13731,14 +13731,14 @@ "memberLocation": "10538:9:54", "memberName": "filledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46577, + "referencedDeclaration": 46574, "src": "10531:16:54", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 47540, + "id": 47537, "isConstant": false, "isLValue": false, "isPure": false, @@ -13747,18 +13747,18 @@ "src": "10484:63:54", "trueExpression": { "expression": { - "id": 47536, + "id": 47533, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10513:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47537, + "id": 47534, "isConstant": false, "isLValue": true, "isPure": false, @@ -13766,7 +13766,7 @@ "memberLocation": "10520:8:54", "memberName": "filledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46575, + "referencedDeclaration": 46572, "src": "10513:15:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13779,7 +13779,7 @@ } } ], - "id": 47541, + "id": 47538, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -13797,18 +13797,18 @@ "rightExpression": { "expression": { "expression": { - "id": 47542, + "id": 47539, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10552:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47543, + "id": 47540, "isConstant": false, "isLValue": true, "isPure": false, @@ -13816,14 +13816,14 @@ "memberLocation": "10559:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "10552:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47544, + "id": 47541, "isConstant": false, "isLValue": true, "isPure": false, @@ -13831,7 +13831,7 @@ "memberLocation": "10565:6:54", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 46552, + "referencedDeclaration": 46549, "src": "10552:19:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13846,7 +13846,7 @@ }, { "hexValue": "4f56455246494c4c", - "id": 47546, + "id": 47543, "isConstant": false, "isLValue": false, "isPure": true, @@ -13872,7 +13872,7 @@ "typeString": "literal_string \"OVERFILL\"" } ], - "id": 47532, + "id": 47529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -13886,7 +13886,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 47547, + "id": 47544, "isConstant": false, "isLValue": false, "isPure": false, @@ -13902,23 +13902,23 @@ "typeString": "tuple()" } }, - "id": 47548, + "id": 47545, "nodeType": "ExpressionStatement", "src": "10474:111:54" }, { "assignments": [ - 47550 + 47547 ], "declarations": [ { "constant": false, - "id": 47550, + "id": 47547, "mutability": "mutable", "name": "remaining", "nameLocation": "10603:9:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "10595:17:54", "stateVariable": false, "storageLocation": "default", @@ -13927,7 +13927,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47549, + "id": 47546, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10595:7:54", @@ -13939,13 +13939,13 @@ "visibility": "internal" } ], - "id": 47564, + "id": 47561, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47563, + "id": 47560, "isConstant": false, "isLValue": false, "isPure": false, @@ -13953,18 +13953,18 @@ "leftExpression": { "expression": { "expression": { - "id": 47551, + "id": 47548, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10615:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47552, + "id": 47549, "isConstant": false, "isLValue": true, "isPure": false, @@ -13972,14 +13972,14 @@ "memberLocation": "10622:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "10615:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47553, + "id": 47550, "isConstant": false, "isLValue": true, "isPure": false, @@ -13987,7 +13987,7 @@ "memberLocation": "10628:6:54", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 46552, + "referencedDeclaration": 46549, "src": "10615:19:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14002,18 +14002,18 @@ "condition": { "expression": { "expression": { - "id": 47554, + "id": 47551, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10638:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47555, + "id": 47552, "isConstant": false, "isLValue": true, "isPure": false, @@ -14021,14 +14021,14 @@ "memberLocation": "10645:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "10638:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47556, + "id": 47553, "isConstant": false, "isLValue": true, "isPure": false, @@ -14036,7 +14036,7 @@ "memberLocation": "10651:13:54", "memberName": "amountIsInput", "nodeType": "MemberAccess", - "referencedDeclaration": 46554, + "referencedDeclaration": 46551, "src": "10638:26:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14045,18 +14045,18 @@ }, "falseExpression": { "expression": { - "id": 47559, + "id": 47556, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10685:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47560, + "id": 47557, "isConstant": false, "isLValue": true, "isPure": false, @@ -14064,14 +14064,14 @@ "memberLocation": "10692:9:54", "memberName": "filledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46577, + "referencedDeclaration": 46574, "src": "10685:16:54", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 47561, + "id": 47558, "isConstant": false, "isLValue": false, "isPure": false, @@ -14080,18 +14080,18 @@ "src": "10638:63:54", "trueExpression": { "expression": { - "id": 47557, + "id": 47554, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10667:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47558, + "id": 47555, "isConstant": false, "isLValue": true, "isPure": false, @@ -14099,7 +14099,7 @@ "memberLocation": "10674:8:54", "memberName": "filledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46575, + "referencedDeclaration": 46572, "src": "10667:15:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14112,7 +14112,7 @@ } } ], - "id": 47562, + "id": 47559, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -14139,7 +14139,7 @@ "arguments": [ { "hexValue": "72656d61696e696e67", - "id": 47568, + "id": 47565, "isConstant": false, "isLValue": false, "isPure": true, @@ -14162,7 +14162,7 @@ } ], "expression": { - "id": 47565, + "id": 47562, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -14173,7 +14173,7 @@ "typeString": "type(library console2)" } }, - "id": 47567, + "id": 47564, "isConstant": false, "isLValue": false, "isPure": false, @@ -14188,7 +14188,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47569, + "id": 47566, "isConstant": false, "isLValue": false, "isPure": false, @@ -14204,7 +14204,7 @@ "typeString": "tuple()" } }, - "id": 47570, + "id": 47567, "nodeType": "ExpressionStatement", "src": "10712:25:54" }, @@ -14212,11 +14212,11 @@ "expression": { "arguments": [ { - "id": 47574, + "id": 47571, "name": "remaining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47550, + "referencedDeclaration": 47547, "src": "10760:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14232,7 +14232,7 @@ } ], "expression": { - "id": 47571, + "id": 47568, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -14243,7 +14243,7 @@ "typeString": "type(library console2)" } }, - "id": 47573, + "id": 47570, "isConstant": false, "isLValue": false, "isPure": false, @@ -14258,7 +14258,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47575, + "id": 47572, "isConstant": false, "isLValue": false, "isPure": false, @@ -14274,7 +14274,7 @@ "typeString": "tuple()" } }, - "id": 47576, + "id": 47573, "nodeType": "ExpressionStatement", "src": "10747:23:54" }, @@ -14284,17 +14284,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47579, + "id": 47576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47577, + "id": 47574, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47468, + "referencedDeclaration": 47465, "src": "10784:6:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14304,11 +14304,11 @@ "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { - "id": 47578, + "id": 47575, "name": "remaining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47550, + "referencedDeclaration": 47547, "src": "10793:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14321,22 +14321,22 @@ "typeString": "bool" } }, - "id": 47584, + "id": 47581, "nodeType": "IfStatement", "src": "10780:109:54", "trueBody": { "expression": { - "id": 47582, + "id": 47579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 47580, + "id": 47577, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47468, + "referencedDeclaration": 47465, "src": "10871:6:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14346,11 +14346,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 47581, + "id": 47578, "name": "remaining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47550, + "referencedDeclaration": 47547, "src": "10880:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14363,7 +14363,7 @@ "typeString": "uint256" } }, - "id": 47583, + "id": 47580, "nodeType": "ExpressionStatement", "src": "10871:18:54" } @@ -14376,17 +14376,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47588, + "id": 47585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47586, + "id": 47583, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47468, + "referencedDeclaration": 47465, "src": "10908:6:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14397,7 +14397,7 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 47587, + "id": 47584, "isConstant": false, "isLValue": false, "isPure": true, @@ -14419,7 +14419,7 @@ }, { "hexValue": "5446", - "id": 47589, + "id": 47586, "isConstant": false, "isLValue": false, "isPure": true, @@ -14445,7 +14445,7 @@ "typeString": "literal_string \"TF\"" } ], - "id": 47585, + "id": 47582, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -14459,7 +14459,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 47590, + "id": 47587, "isConstant": false, "isLValue": false, "isPure": false, @@ -14475,7 +14475,7 @@ "typeString": "tuple()" } }, - "id": 47591, + "id": 47588, "nodeType": "ExpressionStatement", "src": "10899:27:54" }, @@ -14483,11 +14483,11 @@ "expression": { "arguments": [ { - "id": 47595, + "id": 47592, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47468, + "referencedDeclaration": 47465, "src": "10949:6:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14503,7 +14503,7 @@ } ], "expression": { - "id": 47592, + "id": 47589, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -14514,7 +14514,7 @@ "typeString": "type(library console2)" } }, - "id": 47594, + "id": 47591, "isConstant": false, "isLValue": false, "isPure": false, @@ -14529,7 +14529,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47596, + "id": 47593, "isConstant": false, "isLValue": false, "isPure": false, @@ -14545,23 +14545,23 @@ "typeString": "tuple()" } }, - "id": 47597, + "id": 47594, "nodeType": "ExpressionStatement", "src": "10936:20:54" }, { "assignments": [ - 47599 + 47596 ], "declarations": [ { "constant": false, - "id": 47599, + "id": 47596, "mutability": "mutable", "name": "recipient", "nameLocation": "10974:9:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "10966:17:54", "stateVariable": false, "storageLocation": "default", @@ -14570,7 +14570,7 @@ "typeString": "address" }, "typeName": { - "id": 47598, + "id": 47595, "name": "address", "nodeType": "ElementaryTypeName", "src": "10966:7:54", @@ -14583,23 +14583,23 @@ "visibility": "internal" } ], - "id": 47609, + "id": 47606, "initialValue": { "condition": { "expression": { "expression": { - "id": 47600, + "id": 47597, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "10986:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47601, + "id": 47598, "isConstant": false, "isLValue": true, "isPure": false, @@ -14607,14 +14607,14 @@ "memberLocation": "10993:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "10986:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47602, + "id": 47599, "isConstant": false, "isLValue": true, "isPure": false, @@ -14622,7 +14622,7 @@ "memberLocation": "10999:21:54", "memberName": "outputDirectlyToOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 46556, + "referencedDeclaration": 46553, "src": "10986:34:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -14632,14 +14632,14 @@ "falseExpression": { "arguments": [ { - "id": 47606, + "id": 47603, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "11039:4:54", "typeDescriptions": { - "typeIdentifier": "t_contract$_OrderLib_$47922", + "typeIdentifier": "t_contract$_OrderLib_$47919", "typeString": "library OrderLib" } } @@ -14647,11 +14647,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_OrderLib_$47922", + "typeIdentifier": "t_contract$_OrderLib_$47919", "typeString": "library OrderLib" } ], - "id": 47605, + "id": 47602, "isConstant": false, "isLValue": false, "isPure": true, @@ -14663,14 +14663,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 47604, + "id": 47601, "name": "address", "nodeType": "ElementaryTypeName", "src": "11031:7:54", "typeDescriptions": {} } }, - "id": 47607, + "id": 47604, "isConstant": false, "isLValue": false, "isPure": false, @@ -14686,7 +14686,7 @@ "typeString": "address" } }, - "id": 47608, + "id": 47605, "isConstant": false, "isLValue": false, "isPure": false, @@ -14694,11 +14694,11 @@ "nodeType": "Conditional", "src": "10986:58:54", "trueExpression": { - "id": 47603, + "id": 47600, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47026, + "referencedDeclaration": 47023, "src": "11023:5:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14717,11 +14717,11 @@ "expression": { "arguments": [ { - "id": 47613, + "id": 47610, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47599, + "referencedDeclaration": 47596, "src": "11067:9:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14737,7 +14737,7 @@ } ], "expression": { - "id": 47610, + "id": 47607, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -14748,7 +14748,7 @@ "typeString": "type(library console2)" } }, - "id": 47612, + "id": 47609, "isConstant": false, "isLValue": false, "isPure": false, @@ -14763,7 +14763,7 @@ "typeString": "function (address) pure" } }, - "id": 47614, + "id": 47611, "isConstant": false, "isLValue": false, "isPure": false, @@ -14779,23 +14779,23 @@ "typeString": "tuple()" } }, - "id": 47615, + "id": 47612, "nodeType": "ExpressionStatement", "src": "11054:23:54" }, { "assignments": [ - 47617 + 47614 ], "declarations": [ { "constant": false, - "id": 47617, + "id": 47614, "mutability": "mutable", "name": "amountIn", "nameLocation": "11095:8:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "11087:16:54", "stateVariable": false, "storageLocation": "default", @@ -14804,7 +14804,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47616, + "id": 47613, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11087:7:54", @@ -14816,23 +14816,23 @@ "visibility": "internal" } ], - "id": 47618, + "id": 47615, "nodeType": "VariableDeclarationStatement", "src": "11087:16:54" }, { "assignments": [ - 47620 + 47617 ], "declarations": [ { "constant": false, - "id": 47620, + "id": 47617, "mutability": "mutable", "name": "amountOut", "nameLocation": "11121:9:54", "nodeType": "VariableDeclaration", - "scope": 47687, + "scope": 47684, "src": "11113:17:54", "stateVariable": false, "storageLocation": "default", @@ -14841,7 +14841,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47619, + "id": 47616, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11113:7:54", @@ -14853,17 +14853,17 @@ "visibility": "internal" } ], - "id": 47621, + "id": 47618, "nodeType": "VariableDeclarationStatement", "src": "11113:17:54" }, { "condition": { "commonType": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, - "id": 47628, + "id": 47625, "isConstant": false, "isLValue": false, "isPure": false, @@ -14872,18 +14872,18 @@ "expression": { "expression": { "expression": { - "id": 47622, + "id": 47619, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "11144:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47623, + "id": 47620, "isConstant": false, "isLValue": true, "isPure": false, @@ -14891,14 +14891,14 @@ "memberLocation": "11151:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "11144:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47624, + "id": 47621, "isConstant": false, "isLValue": true, "isPure": false, @@ -14906,14 +14906,14 @@ "memberLocation": "11157:5:54", "memberName": "route", "nodeType": "MemberAccess", - "referencedDeclaration": 46550, + "referencedDeclaration": 46547, "src": "11144:18:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_storage", + "typeIdentifier": "t_struct$_Route_$46540_storage", "typeString": "struct OrderLib.Route storage ref" } }, - "id": 47625, + "id": 47622, "isConstant": false, "isLValue": true, "isPure": false, @@ -14921,10 +14921,10 @@ "memberLocation": "11163:8:54", "memberName": "exchange", "nodeType": "MemberAccess", - "referencedDeclaration": 46540, + "referencedDeclaration": 46537, "src": "11144:27:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, @@ -14932,18 +14932,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 47626, + "id": 47623, "name": "Exchange", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "11175:8:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", + "typeIdentifier": "t_type$_t_enum$_Exchange_$46534_$", "typeString": "type(enum OrderLib.Exchange)" } }, - "id": 47627, + "id": 47624, "isConstant": false, "isLValue": false, "isPure": true, @@ -14951,10 +14951,10 @@ "memberLocation": "11184:9:54", "memberName": "UniswapV3", "nodeType": "MemberAccess", - "referencedDeclaration": 46536, + "referencedDeclaration": 46533, "src": "11175:18:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, @@ -14969,7 +14969,7 @@ "arguments": [ { "hexValue": "5552", - "id": 47643, + "id": 47640, "isConstant": false, "isLValue": false, "isPure": true, @@ -14991,7 +14991,7 @@ "typeString": "literal_string \"UR\"" } ], - "id": 47642, + "id": 47639, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -15005,7 +15005,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47644, + "id": 47641, "isConstant": false, "isLValue": false, "isPure": false, @@ -15021,16 +15021,16 @@ "typeString": "tuple()" } }, - "id": 47645, + "id": 47642, "nodeType": "ExpressionStatement", "src": "11364:12:54" }, - "id": 47646, + "id": 47643, "nodeType": "IfStatement", "src": "11140:236:54", "trueBody": { "expression": { - "id": 47640, + "id": 47637, "isConstant": false, "isLValue": false, "isPure": false, @@ -15038,11 +15038,11 @@ "leftHandSide": { "components": [ { - "id": 47629, + "id": 47626, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47617, + "referencedDeclaration": 47614, "src": "11209:8:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15050,11 +15050,11 @@ } }, { - "id": 47630, + "id": 47627, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47620, + "referencedDeclaration": 47617, "src": "11219:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15062,7 +15062,7 @@ } } ], - "id": 47631, + "id": 47628, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -15080,11 +15080,11 @@ "rightHandSide": { "arguments": [ { - "id": 47633, + "id": 47630, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47599, + "referencedDeclaration": 47596, "src": "11250:9:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15093,18 +15093,18 @@ }, { "expression": { - "id": 47634, + "id": 47631, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "11261:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47635, + "id": 47632, "isConstant": false, "isLValue": true, "isPure": false, @@ -15112,19 +15112,19 @@ "memberLocation": "11268:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "11261:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, { - "id": 47636, + "id": 47633, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47105, + "referencedDeclaration": 47102, "src": "11275:4:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15132,11 +15132,11 @@ } }, { - "id": 47637, + "id": 47634, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47468, + "referencedDeclaration": 47465, "src": "11281:6:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15144,11 +15144,11 @@ } }, { - "id": 47638, + "id": 47635, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47101, + "referencedDeclaration": 47098, "src": "11289:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -15163,7 +15163,7 @@ "typeString": "address" }, { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" }, { @@ -15179,18 +15179,18 @@ "typeString": "uint160" } ], - "id": 47632, + "id": 47629, "name": "_do_execute_univ3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47771, + "referencedDeclaration": 47768, "src": "11232:17:54", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_SwapOrder_$46563_storage_ptr_$_t_address_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_SwapOrder_$46560_storage_ptr_$_t_address_$_t_uint256_$_t_uint160_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (address,struct OrderLib.SwapOrder storage pointer,address,uint256,uint160) returns (uint256,uint256)" } }, - "id": 47639, + "id": 47636, "isConstant": false, "isLValue": false, "isPure": false, @@ -15212,32 +15212,32 @@ "typeString": "tuple()" } }, - "id": 47641, + "id": 47638, "nodeType": "ExpressionStatement", "src": "11208:99:54" } }, { "expression": { - "id": 47651, + "id": 47648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 47647, + "id": 47644, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "11403:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47649, + "id": 47646, "isConstant": false, "isLValue": true, "isPure": false, @@ -15245,7 +15245,7 @@ "memberLocation": "11410:8:54", "memberName": "filledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46575, + "referencedDeclaration": 46572, "src": "11403:15:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15255,11 +15255,11 @@ "nodeType": "Assignment", "operator": "+=", "rightHandSide": { - "id": 47650, + "id": 47647, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47617, + "referencedDeclaration": 47614, "src": "11422:8:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15272,31 +15272,31 @@ "typeString": "uint256" } }, - "id": 47652, + "id": 47649, "nodeType": "ExpressionStatement", "src": "11403:27:54" }, { "expression": { - "id": 47657, + "id": 47654, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 47653, + "id": 47650, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "11440:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47655, + "id": 47652, "isConstant": false, "isLValue": true, "isPure": false, @@ -15304,7 +15304,7 @@ "memberLocation": "11447:9:54", "memberName": "filledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46577, + "referencedDeclaration": 46574, "src": "11440:16:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15314,11 +15314,11 @@ "nodeType": "Assignment", "operator": "+=", "rightHandSide": { - "id": 47656, + "id": 47653, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47620, + "referencedDeclaration": 47617, "src": "11460:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15331,13 +15331,13 @@ "typeString": "uint256" } }, - "id": 47658, + "id": 47655, "nodeType": "ExpressionStatement", "src": "11440:29:54" }, { "expression": { - "id": 47665, + "id": 47662, "isConstant": false, "isLValue": false, "isPure": false, @@ -15345,18 +15345,18 @@ "leftHandSide": { "baseExpression": { "expression": { - "id": 47659, + "id": 47656, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "11479:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47662, + "id": 47659, "isConstant": false, "isLValue": true, "isPure": false, @@ -15364,20 +15364,20 @@ "memberLocation": "11486:15:54", "memberName": "trancheFilledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46580, + "referencedDeclaration": 46577, "src": "11479:22:54", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 47663, + "id": 47660, "indexExpression": { - "id": 47661, + "id": 47658, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "11502:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -15398,11 +15398,11 @@ "nodeType": "Assignment", "operator": "+=", "rightHandSide": { - "id": 47664, + "id": 47661, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47617, + "referencedDeclaration": 47614, "src": "11519:8:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15415,13 +15415,13 @@ "typeString": "uint256" } }, - "id": 47666, + "id": 47663, "nodeType": "ExpressionStatement", "src": "11479:48:54" }, { "expression": { - "id": 47673, + "id": 47670, "isConstant": false, "isLValue": false, "isPure": false, @@ -15429,18 +15429,18 @@ "leftHandSide": { "baseExpression": { "expression": { - "id": 47667, + "id": 47664, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "11537:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47670, + "id": 47667, "isConstant": false, "isLValue": true, "isPure": false, @@ -15448,20 +15448,20 @@ "memberLocation": "11544:16:54", "memberName": "trancheFilledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46583, + "referencedDeclaration": 46580, "src": "11537:23:54", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 47671, + "id": 47668, "indexExpression": { - "id": 47669, + "id": 47666, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "11561:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -15482,11 +15482,11 @@ "nodeType": "Assignment", "operator": "+=", "rightHandSide": { - "id": 47672, + "id": 47669, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47620, + "referencedDeclaration": 47617, "src": "11578:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15499,7 +15499,7 @@ "typeString": "uint256" } }, - "id": 47674, + "id": 47671, "nodeType": "ExpressionStatement", "src": "11537:50:54" }, @@ -15507,11 +15507,11 @@ "eventCall": { "arguments": [ { - "id": 47676, + "id": 47673, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47028, + "referencedDeclaration": 47025, "src": "11621:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -15519,11 +15519,11 @@ } }, { - "id": 47677, + "id": 47674, "name": "trancheIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47030, + "referencedDeclaration": 47027, "src": "11633:12:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -15531,11 +15531,11 @@ } }, { - "id": 47678, + "id": 47675, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47617, + "referencedDeclaration": 47614, "src": "11647:8:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15543,11 +15543,11 @@ } }, { - "id": 47679, + "id": 47676, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47620, + "referencedDeclaration": 47617, "src": "11657:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15574,18 +15574,18 @@ "typeString": "uint256" } ], - "id": 47675, + "id": 47672, "name": "DexorderSwapFilled", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46525, + "referencedDeclaration": 46522, "src": "11602:18:54", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint8_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint64,uint8,uint256,uint256)" } }, - "id": 47680, + "id": 47677, "isConstant": false, "isLValue": false, "isPure": false, @@ -15601,7 +15601,7 @@ "typeString": "tuple()" } }, - "id": 47681, + "id": 47678, "nodeType": "EmitStatement", "src": "11597:70:54" }, @@ -15609,26 +15609,26 @@ "expression": { "arguments": [ { - "id": 47683, + "id": 47680, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47024, + "referencedDeclaration": 47021, "src": "11693:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, { - "id": 47684, + "id": 47681, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47071, + "referencedDeclaration": 47068, "src": "11699:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } } @@ -15636,26 +15636,26 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" }, { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } ], - "id": 47682, + "id": 47679, "name": "_checkCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47841, + "referencedDeclaration": 47838, "src": "11677:15:54", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_struct$_SwapOrderStatus_$46584_storage_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_struct$_SwapOrderStatus_$46581_storage_ptr_$returns$__$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,struct OrderLib.SwapOrderStatus storage pointer)" } }, - "id": 47685, + "id": 47682, "isConstant": false, "isLValue": false, "isPure": false, @@ -15671,7 +15671,7 @@ "typeString": "tuple()" } }, - "id": 47686, + "id": 47683, "nodeType": "ExpressionStatement", "src": "11677:29:54" } @@ -15683,41 +15683,41 @@ "name": "execute", "nameLocation": "6148:7:54", "parameters": { - "id": 47034, + "id": 47031, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 47024, + "id": 47021, "mutability": "mutable", "name": "self", "nameLocation": "6175:4:54", "nodeType": "VariableDeclaration", - "scope": 47688, + "scope": 47685, "src": "6156:23:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" }, "typeName": { - "id": 47023, + "id": 47020, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47022, + "id": 47019, "name": "OrdersInfo", "nameLocations": [ "6156:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "6156:10:54" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "6156:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } }, @@ -15725,12 +15725,12 @@ }, { "constant": false, - "id": 47026, + "id": 47023, "mutability": "mutable", "name": "owner", "nameLocation": "6189:5:54", "nodeType": "VariableDeclaration", - "scope": 47688, + "scope": 47685, "src": "6181:13:54", "stateVariable": false, "storageLocation": "default", @@ -15739,7 +15739,7 @@ "typeString": "address" }, "typeName": { - "id": 47025, + "id": 47022, "name": "address", "nodeType": "ElementaryTypeName", "src": "6181:7:54", @@ -15753,12 +15753,12 @@ }, { "constant": false, - "id": 47028, + "id": 47025, "mutability": "mutable", "name": "orderIndex", "nameLocation": "6203:10:54", "nodeType": "VariableDeclaration", - "scope": 47688, + "scope": 47685, "src": "6196:17:54", "stateVariable": false, "storageLocation": "default", @@ -15767,7 +15767,7 @@ "typeString": "uint64" }, "typeName": { - "id": 47027, + "id": 47024, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6196:6:54", @@ -15780,12 +15780,12 @@ }, { "constant": false, - "id": 47030, + "id": 47027, "mutability": "mutable", "name": "trancheIndex", "nameLocation": "6221:12:54", "nodeType": "VariableDeclaration", - "scope": 47688, + "scope": 47685, "src": "6215:18:54", "stateVariable": false, "storageLocation": "default", @@ -15794,7 +15794,7 @@ "typeString": "uint8" }, "typeName": { - "id": 47029, + "id": 47026, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6215:5:54", @@ -15807,36 +15807,36 @@ }, { "constant": false, - "id": 47033, + "id": 47030, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 47688, + "scope": 47685, "src": "6235:17:54", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof" }, "typeName": { - "id": 47032, + "id": 47029, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47031, + "id": 47028, "name": "PriceProof", "nameLocations": [ "6235:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "6235:10:54" }, - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "6235:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_storage_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_storage_ptr", "typeString": "struct OrderLib.PriceProof" } }, @@ -15846,23 +15846,23 @@ "src": "6155:99:54" }, "returnParameters": { - "id": 47035, + "id": 47032, "nodeType": "ParameterList", "parameters": [], "src": "6264:0:54" }, - "scope": 47922, + "scope": 47919, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 47771, + "id": 47768, "nodeType": "FunctionDefinition", "src": "11720:909:54", "nodes": [], "body": { - "id": 47770, + "id": 47767, "nodeType": "Block", "src": "11911:718:54", "nodes": [], @@ -15872,7 +15872,7 @@ "arguments": [ { "hexValue": "7072696365206c696d6974", - "id": 47709, + "id": 47706, "isConstant": false, "isLValue": false, "isPure": true, @@ -15895,7 +15895,7 @@ } ], "expression": { - "id": 47706, + "id": 47703, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -15906,7 +15906,7 @@ "typeString": "type(library console2)" } }, - "id": 47708, + "id": 47705, "isConstant": false, "isLValue": false, "isPure": false, @@ -15921,7 +15921,7 @@ "typeString": "function (string memory) pure" } }, - "id": 47710, + "id": 47707, "isConstant": false, "isLValue": false, "isPure": false, @@ -15937,7 +15937,7 @@ "typeString": "tuple()" } }, - "id": 47711, + "id": 47708, "nodeType": "ExpressionStatement", "src": "12063:27:54" }, @@ -15947,11 +15947,11 @@ { "arguments": [ { - "id": 47717, + "id": 47714, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47699, + "referencedDeclaration": 47696, "src": "12118:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -15966,7 +15966,7 @@ "typeString": "uint160" } ], - "id": 47716, + "id": 47713, "isConstant": false, "isLValue": false, "isPure": true, @@ -15978,14 +15978,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 47715, + "id": 47712, "name": "uint", "nodeType": "ElementaryTypeName", "src": "12113:4:54", "typeDescriptions": {} } }, - "id": 47718, + "id": 47715, "isConstant": false, "isLValue": false, "isPure": false, @@ -16010,7 +16010,7 @@ } ], "expression": { - "id": 47712, + "id": 47709, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -16021,7 +16021,7 @@ "typeString": "type(library console2)" } }, - "id": 47714, + "id": 47711, "isConstant": false, "isLValue": false, "isPure": false, @@ -16036,7 +16036,7 @@ "typeString": "function (uint256) pure" } }, - "id": 47719, + "id": 47716, "isConstant": false, "isLValue": false, "isPure": false, @@ -16052,25 +16052,25 @@ "typeString": "tuple()" } }, - "id": 47720, + "id": 47717, "nodeType": "ExpressionStatement", "src": "12100:37:54" }, { "condition": { "expression": { - "id": 47721, + "id": 47718, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47693, + "referencedDeclaration": 47690, "src": "12151:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder storage pointer" } }, - "id": 47722, + "id": 47719, "isConstant": false, "isLValue": true, "isPure": false, @@ -16078,7 +16078,7 @@ "memberLocation": "12157:13:54", "memberName": "amountIsInput", "nodeType": "MemberAccess", - "referencedDeclaration": 46554, + "referencedDeclaration": 46551, "src": "12151:19:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -16086,13 +16086,13 @@ } }, "falseBody": { - "id": 47768, + "id": 47765, "nodeType": "Block", "src": "12404:219:54", "statements": [ { "expression": { - "id": 47766, + "id": 47763, "isConstant": false, "isLValue": false, "isPure": false, @@ -16100,11 +16100,11 @@ "leftHandSide": { "components": [ { - "id": 47746, + "id": 47743, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47702, + "referencedDeclaration": 47699, "src": "12419:8:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16112,11 +16112,11 @@ } }, { - "id": 47747, + "id": 47744, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47704, + "referencedDeclaration": 47701, "src": "12429:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16124,7 +16124,7 @@ } } ], - "id": 47748, + "id": 47745, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -16144,11 +16144,11 @@ { "arguments": [ { - "id": 47753, + "id": 47750, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47695, + "referencedDeclaration": 47692, "src": "12520:4:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16157,18 +16157,18 @@ }, { "expression": { - "id": 47754, + "id": 47751, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47693, + "referencedDeclaration": 47690, "src": "12526:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder storage pointer" } }, - "id": 47755, + "id": 47752, "isConstant": false, "isLValue": true, "isPure": false, @@ -16176,7 +16176,7 @@ "memberLocation": "12532:7:54", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46545, + "referencedDeclaration": 46542, "src": "12526:13:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16185,18 +16185,18 @@ }, { "expression": { - "id": 47756, + "id": 47753, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47693, + "referencedDeclaration": 47690, "src": "12541:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder storage pointer" } }, - "id": 47757, + "id": 47754, "isConstant": false, "isLValue": true, "isPure": false, @@ -16204,7 +16204,7 @@ "memberLocation": "12547:8:54", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46547, + "referencedDeclaration": 46544, "src": "12541:14:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16212,11 +16212,11 @@ } }, { - "id": 47758, + "id": 47755, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47690, + "referencedDeclaration": 47687, "src": "12557:9:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16226,18 +16226,18 @@ { "expression": { "expression": { - "id": 47759, + "id": 47756, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47693, + "referencedDeclaration": 47690, "src": "12568:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder storage pointer" } }, - "id": 47760, + "id": 47757, "isConstant": false, "isLValue": true, "isPure": false, @@ -16245,14 +16245,14 @@ "memberLocation": "12574:5:54", "memberName": "route", "nodeType": "MemberAccess", - "referencedDeclaration": 46550, + "referencedDeclaration": 46547, "src": "12568:11:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_storage", + "typeIdentifier": "t_struct$_Route_$46540_storage", "typeString": "struct OrderLib.Route storage ref" } }, - "id": 47761, + "id": 47758, "isConstant": false, "isLValue": true, "isPure": false, @@ -16260,7 +16260,7 @@ "memberLocation": "12580:3:54", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 46542, + "referencedDeclaration": 46539, "src": "12568:15:54", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -16268,11 +16268,11 @@ } }, { - "id": 47762, + "id": 47759, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47697, + "referencedDeclaration": 47694, "src": "12585:6:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16280,11 +16280,11 @@ } }, { - "id": 47763, + "id": 47760, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47699, + "referencedDeclaration": 47696, "src": "12593:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -16324,18 +16324,18 @@ } ], "expression": { - "id": 47751, + "id": 47748, "name": "UniswapSwapper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48847, + "referencedDeclaration": 48844, "src": "12473:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_UniswapSwapper_$48847_$", + "typeIdentifier": "t_type$_t_contract$_UniswapSwapper_$48844_$", "typeString": "type(library UniswapSwapper)" } }, - "id": 47752, + "id": 47749, "isConstant": false, "isLValue": false, "isPure": false, @@ -16343,14 +16343,14 @@ "memberLocation": "12488:10:54", "memberName": "SwapParams", "nodeType": "MemberAccess", - "referencedDeclaration": 48342, + "referencedDeclaration": 48339, "src": "12473:25:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_SwapParams_$48342_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_SwapParams_$48339_storage_ptr_$", "typeString": "type(struct UniswapSwapper.SwapParams storage pointer)" } }, - "id": 47764, + "id": 47761, "isConstant": false, "isLValue": false, "isPure": false, @@ -16362,7 +16362,7 @@ "src": "12473:138:54", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } } @@ -16370,23 +16370,23 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } ], "expression": { - "id": 47749, + "id": 47746, "name": "UniswapSwapper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48847, + "referencedDeclaration": 48844, "src": "12442:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_UniswapSwapper_$48847_$", + "typeIdentifier": "t_type$_t_contract$_UniswapSwapper_$48844_$", "typeString": "type(library UniswapSwapper)" } }, - "id": 47750, + "id": 47747, "isConstant": false, "isLValue": false, "isPure": false, @@ -16394,14 +16394,14 @@ "memberLocation": "12457:15:54", "memberName": "swapExactOutput", "nodeType": "MemberAccess", - "referencedDeclaration": 48793, + "referencedDeclaration": 48790, "src": "12442:30:54", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_SwapParams_$48342_memory_ptr_$returns$_t_uint256_$_t_uint256_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_SwapParams_$48339_memory_ptr_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (struct UniswapSwapper.SwapParams memory) returns (uint256,uint256)" } }, - "id": 47765, + "id": 47762, "isConstant": false, "isLValue": false, "isPure": false, @@ -16423,23 +16423,23 @@ "typeString": "tuple()" } }, - "id": 47767, + "id": 47764, "nodeType": "ExpressionStatement", "src": "12418:194:54" } ] }, - "id": 47769, + "id": 47766, "nodeType": "IfStatement", "src": "12147:476:54", "trueBody": { - "id": 47745, + "id": 47742, "nodeType": "Block", "src": "12172:218:54", "statements": [ { "expression": { - "id": 47743, + "id": 47740, "isConstant": false, "isLValue": false, "isPure": false, @@ -16447,11 +16447,11 @@ "leftHandSide": { "components": [ { - "id": 47723, + "id": 47720, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47702, + "referencedDeclaration": 47699, "src": "12187:8:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16459,11 +16459,11 @@ } }, { - "id": 47724, + "id": 47721, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47704, + "referencedDeclaration": 47701, "src": "12197:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16471,7 +16471,7 @@ } } ], - "id": 47725, + "id": 47722, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -16491,11 +16491,11 @@ { "arguments": [ { - "id": 47730, + "id": 47727, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47695, + "referencedDeclaration": 47692, "src": "12287:4:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16504,18 +16504,18 @@ }, { "expression": { - "id": 47731, + "id": 47728, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47693, + "referencedDeclaration": 47690, "src": "12293:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder storage pointer" } }, - "id": 47732, + "id": 47729, "isConstant": false, "isLValue": true, "isPure": false, @@ -16523,7 +16523,7 @@ "memberLocation": "12299:7:54", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46545, + "referencedDeclaration": 46542, "src": "12293:13:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16532,18 +16532,18 @@ }, { "expression": { - "id": 47733, + "id": 47730, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47693, + "referencedDeclaration": 47690, "src": "12308:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder storage pointer" } }, - "id": 47734, + "id": 47731, "isConstant": false, "isLValue": true, "isPure": false, @@ -16551,7 +16551,7 @@ "memberLocation": "12314:8:54", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46547, + "referencedDeclaration": 46544, "src": "12308:14:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16559,11 +16559,11 @@ } }, { - "id": 47735, + "id": 47732, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47690, + "referencedDeclaration": 47687, "src": "12324:9:54", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16573,18 +16573,18 @@ { "expression": { "expression": { - "id": 47736, + "id": 47733, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47693, + "referencedDeclaration": 47690, "src": "12335:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder storage pointer" } }, - "id": 47737, + "id": 47734, "isConstant": false, "isLValue": true, "isPure": false, @@ -16592,14 +16592,14 @@ "memberLocation": "12341:5:54", "memberName": "route", "nodeType": "MemberAccess", - "referencedDeclaration": 46550, + "referencedDeclaration": 46547, "src": "12335:11:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_storage", + "typeIdentifier": "t_struct$_Route_$46540_storage", "typeString": "struct OrderLib.Route storage ref" } }, - "id": 47738, + "id": 47735, "isConstant": false, "isLValue": true, "isPure": false, @@ -16607,7 +16607,7 @@ "memberLocation": "12347:3:54", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 46542, + "referencedDeclaration": 46539, "src": "12335:15:54", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -16615,11 +16615,11 @@ } }, { - "id": 47739, + "id": 47736, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47697, + "referencedDeclaration": 47694, "src": "12352:6:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16627,11 +16627,11 @@ } }, { - "id": 47740, + "id": 47737, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47699, + "referencedDeclaration": 47696, "src": "12360:17:54", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -16671,18 +16671,18 @@ } ], "expression": { - "id": 47728, + "id": 47725, "name": "UniswapSwapper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48847, + "referencedDeclaration": 48844, "src": "12240:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_UniswapSwapper_$48847_$", + "typeIdentifier": "t_type$_t_contract$_UniswapSwapper_$48844_$", "typeString": "type(library UniswapSwapper)" } }, - "id": 47729, + "id": 47726, "isConstant": false, "isLValue": false, "isPure": false, @@ -16690,14 +16690,14 @@ "memberLocation": "12255:10:54", "memberName": "SwapParams", "nodeType": "MemberAccess", - "referencedDeclaration": 48342, + "referencedDeclaration": 48339, "src": "12240:25:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_SwapParams_$48342_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_SwapParams_$48339_storage_ptr_$", "typeString": "type(struct UniswapSwapper.SwapParams storage pointer)" } }, - "id": 47741, + "id": 47738, "isConstant": false, "isLValue": false, "isPure": false, @@ -16709,7 +16709,7 @@ "src": "12240:138:54", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } } @@ -16717,23 +16717,23 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } ], "expression": { - "id": 47726, + "id": 47723, "name": "UniswapSwapper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48847, + "referencedDeclaration": 48844, "src": "12210:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_UniswapSwapper_$48847_$", + "typeIdentifier": "t_type$_t_contract$_UniswapSwapper_$48844_$", "typeString": "type(library UniswapSwapper)" } }, - "id": 47727, + "id": 47724, "isConstant": false, "isLValue": false, "isPure": false, @@ -16741,14 +16741,14 @@ "memberLocation": "12225:14:54", "memberName": "swapExactInput", "nodeType": "MemberAccess", - "referencedDeclaration": 48532, + "referencedDeclaration": 48529, "src": "12210:29:54", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_SwapParams_$48342_memory_ptr_$returns$_t_uint256_$_t_uint256_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_SwapParams_$48339_memory_ptr_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (struct UniswapSwapper.SwapParams memory) returns (uint256,uint256)" } }, - "id": 47742, + "id": 47739, "isConstant": false, "isLValue": false, "isPure": false, @@ -16770,7 +16770,7 @@ "typeString": "tuple()" } }, - "id": 47744, + "id": 47741, "nodeType": "ExpressionStatement", "src": "12186:193:54" } @@ -16785,17 +16785,17 @@ "name": "_do_execute_univ3", "nameLocation": "11729:17:54", "parameters": { - "id": 47700, + "id": 47697, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 47690, + "id": 47687, "mutability": "mutable", "name": "recipient", "nameLocation": "11756:9:54", "nodeType": "VariableDeclaration", - "scope": 47771, + "scope": 47768, "src": "11748:17:54", "stateVariable": false, "storageLocation": "default", @@ -16804,7 +16804,7 @@ "typeString": "address" }, "typeName": { - "id": 47689, + "id": 47686, "name": "address", "nodeType": "ElementaryTypeName", "src": "11748:7:54", @@ -16818,36 +16818,36 @@ }, { "constant": false, - "id": 47693, + "id": 47690, "mutability": "mutable", "name": "order", "nameLocation": "11785:5:54", "nodeType": "VariableDeclaration", - "scope": 47771, + "scope": 47768, "src": "11767:23:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 47692, + "id": 47689, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47691, + "id": 47688, "name": "SwapOrder", "nameLocations": [ "11767:9:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "11767:9:54" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "11767:9:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, @@ -16855,12 +16855,12 @@ }, { "constant": false, - "id": 47695, + "id": 47692, "mutability": "mutable", "name": "pool", "nameLocation": "11800:4:54", "nodeType": "VariableDeclaration", - "scope": 47771, + "scope": 47768, "src": "11792:12:54", "stateVariable": false, "storageLocation": "default", @@ -16869,7 +16869,7 @@ "typeString": "address" }, "typeName": { - "id": 47694, + "id": 47691, "name": "address", "nodeType": "ElementaryTypeName", "src": "11792:7:54", @@ -16883,12 +16883,12 @@ }, { "constant": false, - "id": 47697, + "id": 47694, "mutability": "mutable", "name": "amount", "nameLocation": "11814:6:54", "nodeType": "VariableDeclaration", - "scope": 47771, + "scope": 47768, "src": "11806:14:54", "stateVariable": false, "storageLocation": "default", @@ -16897,7 +16897,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47696, + "id": 47693, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11806:7:54", @@ -16910,12 +16910,12 @@ }, { "constant": false, - "id": 47699, + "id": 47696, "mutability": "mutable", "name": "sqrtPriceLimitX96", "nameLocation": "11830:17:54", "nodeType": "VariableDeclaration", - "scope": 47771, + "scope": 47768, "src": "11822:25:54", "stateVariable": false, "storageLocation": "default", @@ -16924,7 +16924,7 @@ "typeString": "uint160" }, "typeName": { - "id": 47698, + "id": 47695, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "11822:7:54", @@ -16939,17 +16939,17 @@ "src": "11746:102:54" }, "returnParameters": { - "id": 47705, + "id": 47702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 47702, + "id": 47699, "mutability": "mutable", "name": "amountIn", "nameLocation": "11878:8:54", "nodeType": "VariableDeclaration", - "scope": 47771, + "scope": 47768, "src": "11870:16:54", "stateVariable": false, "storageLocation": "default", @@ -16958,7 +16958,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47701, + "id": 47698, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11870:7:54", @@ -16971,12 +16971,12 @@ }, { "constant": false, - "id": 47704, + "id": 47701, "mutability": "mutable", "name": "amountOut", "nameLocation": "11896:9:54", "nodeType": "VariableDeclaration", - "scope": 47771, + "scope": 47768, "src": "11888:17:54", "stateVariable": false, "storageLocation": "default", @@ -16985,7 +16985,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47703, + "id": 47700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11888:7:54", @@ -16999,35 +16999,35 @@ ], "src": "11869:37:54" }, - "scope": 47922, + "scope": 47919, "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { - "id": 47841, + "id": 47838, "nodeType": "FunctionDefinition", "src": "12635:706:54", "nodes": [], "body": { - "id": 47840, + "id": 47837, "nodeType": "Block", "src": "12726:615:54", "nodes": [], "statements": [ { "assignments": [ - 47781 + 47778 ], "declarations": [ { "constant": false, - "id": 47781, + "id": 47778, "mutability": "mutable", "name": "remaining", "nameLocation": "12744:9:54", "nodeType": "VariableDeclaration", - "scope": 47840, + "scope": 47837, "src": "12736:17:54", "stateVariable": false, "storageLocation": "default", @@ -17036,7 +17036,7 @@ "typeString": "uint256" }, "typeName": { - "id": 47780, + "id": 47777, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12736:7:54", @@ -17048,13 +17048,13 @@ "visibility": "internal" } ], - "id": 47795, + "id": 47792, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47794, + "id": 47791, "isConstant": false, "isLValue": false, "isPure": false, @@ -17062,18 +17062,18 @@ "leftExpression": { "expression": { "expression": { - "id": 47782, + "id": 47779, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "12756:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47783, + "id": 47780, "isConstant": false, "isLValue": true, "isPure": false, @@ -17081,14 +17081,14 @@ "memberLocation": "12763:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "12756:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47784, + "id": 47781, "isConstant": false, "isLValue": true, "isPure": false, @@ -17096,7 +17096,7 @@ "memberLocation": "12769:6:54", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 46552, + "referencedDeclaration": 46549, "src": "12756:19:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17111,18 +17111,18 @@ "condition": { "expression": { "expression": { - "id": 47785, + "id": 47782, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "12779:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47786, + "id": 47783, "isConstant": false, "isLValue": true, "isPure": false, @@ -17130,14 +17130,14 @@ "memberLocation": "12786:5:54", "memberName": "order", "nodeType": "MemberAccess", - "referencedDeclaration": 46566, + "referencedDeclaration": 46563, "src": "12779:12:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage", "typeString": "struct OrderLib.SwapOrder storage ref" } }, - "id": 47787, + "id": 47784, "isConstant": false, "isLValue": true, "isPure": false, @@ -17145,7 +17145,7 @@ "memberLocation": "12792:13:54", "memberName": "amountIsInput", "nodeType": "MemberAccess", - "referencedDeclaration": 46554, + "referencedDeclaration": 46551, "src": "12779:26:54", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -17154,18 +17154,18 @@ }, "falseExpression": { "expression": { - "id": 47790, + "id": 47787, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "12826:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47791, + "id": 47788, "isConstant": false, "isLValue": true, "isPure": false, @@ -17173,14 +17173,14 @@ "memberLocation": "12833:9:54", "memberName": "filledOut", "nodeType": "MemberAccess", - "referencedDeclaration": 46577, + "referencedDeclaration": 46574, "src": "12826:16:54", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 47792, + "id": 47789, "isConstant": false, "isLValue": false, "isPure": false, @@ -17189,18 +17189,18 @@ "src": "12779:63:54", "trueExpression": { "expression": { - "id": 47788, + "id": 47785, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "12808:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47789, + "id": 47786, "isConstant": false, "isLValue": true, "isPure": false, @@ -17208,7 +17208,7 @@ "memberLocation": "12815:8:54", "memberName": "filledIn", "nodeType": "MemberAccess", - "referencedDeclaration": 46575, + "referencedDeclaration": 46572, "src": "12808:15:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17221,7 +17221,7 @@ } } ], - "id": 47793, + "id": 47790, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -17249,17 +17249,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47798, + "id": 47795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47796, + "id": 47793, "name": "remaining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47781, + "referencedDeclaration": 47778, "src": "12857:9:54", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17270,7 +17270,7 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 47797, + "id": 47794, "isConstant": false, "isLValue": false, "isPure": true, @@ -17296,7 +17296,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 47831, + "id": 47828, "isConstant": false, "isLValue": false, "isPure": false, @@ -17306,25 +17306,25 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 47821, + "id": 47818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47818, + "id": 47815, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "13181:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47819, + "id": 47816, "isConstant": false, "isLValue": true, "isPure": false, @@ -17332,7 +17332,7 @@ "memberLocation": "13188:8:54", "memberName": "ocoGroup", "nodeType": "MemberAccess", - "referencedDeclaration": 46573, + "referencedDeclaration": 46570, "src": "13181:15:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -17342,11 +17342,11 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { - "id": 47820, + "id": 47817, "name": "NO_OCO_INDEX", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46498, + "referencedDeclaration": 46495, "src": "13200:12:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -17363,10 +17363,10 @@ "operator": "&&", "rightExpression": { "commonType": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" }, - "id": 47830, + "id": 47827, "isConstant": false, "isLValue": false, "isPure": false, @@ -17375,18 +17375,18 @@ "expression": { "baseExpression": { "expression": { - "id": 47822, + "id": 47819, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47774, + "referencedDeclaration": 47771, "src": "13216:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 47823, + "id": 47820, "isConstant": false, "isLValue": true, "isPure": false, @@ -17394,28 +17394,28 @@ "memberLocation": "13221:9:54", "memberName": "ocoGroups", "nodeType": "MemberAccess", - "referencedDeclaration": 46508, + "referencedDeclaration": 46505, "src": "13216:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46653_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46650_storage_$dyn_storage", "typeString": "struct OrderLib.OcoGroup storage ref[] storage ref" } }, - "id": 47826, + "id": 47823, "indexExpression": { "expression": { - "id": 47824, + "id": 47821, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "13231:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47825, + "id": 47822, "isConstant": false, "isLValue": true, "isPure": false, @@ -17423,7 +17423,7 @@ "memberLocation": "13238:8:54", "memberName": "ocoGroup", "nodeType": "MemberAccess", - "referencedDeclaration": 46573, + "referencedDeclaration": 46570, "src": "13231:15:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -17437,11 +17437,11 @@ "nodeType": "IndexAccess", "src": "13216:31:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_storage", + "typeIdentifier": "t_struct$_OcoGroup_$46650_storage", "typeString": "struct OrderLib.OcoGroup storage ref" } }, - "id": 47827, + "id": 47824, "isConstant": false, "isLValue": true, "isPure": false, @@ -17449,10 +17449,10 @@ "memberLocation": "13248:4:54", "memberName": "mode", "nodeType": "MemberAccess", - "referencedDeclaration": 46648, + "referencedDeclaration": 46645, "src": "13216:36:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -17460,18 +17460,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 47828, + "id": 47825, "name": "OcoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "13256:7:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_OcoMode_$46645_$", + "typeIdentifier": "t_type$_t_enum$_OcoMode_$46642_$", "typeString": "type(enum OrderLib.OcoMode)" } }, - "id": 47829, + "id": 47826, "isConstant": false, "isLValue": false, "isPure": true, @@ -17479,10 +17479,10 @@ "memberLocation": "13264:22:54", "memberName": "CANCEL_ON_PARTIAL_FILL", "nodeType": "MemberAccess", - "referencedDeclaration": 46643, + "referencedDeclaration": 46640, "src": "13256:30:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -17498,38 +17498,38 @@ "typeString": "bool" } }, - "id": 47838, + "id": 47835, "nodeType": "IfStatement", "src": "13177:157:54", "trueBody": { "expression": { "arguments": [ { - "id": 47833, + "id": 47830, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47774, + "referencedDeclaration": 47771, "src": "13312:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, { "expression": { - "id": 47834, + "id": 47831, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "13318:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47835, + "id": 47832, "isConstant": false, "isLValue": true, "isPure": false, @@ -17537,7 +17537,7 @@ "memberLocation": "13325:8:54", "memberName": "ocoGroup", "nodeType": "MemberAccess", - "referencedDeclaration": 46573, + "referencedDeclaration": 46570, "src": "13318:15:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -17548,7 +17548,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" }, { @@ -17556,18 +17556,18 @@ "typeString": "uint64" } ], - "id": 47832, + "id": 47829, "name": "_cancelOco", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47883, + "referencedDeclaration": 47880, "src": "13301:10:54", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_uint64_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_uint64_$returns$__$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,uint64)" } }, - "id": 47836, + "id": 47833, "isConstant": false, "isLValue": false, "isPure": false, @@ -17583,40 +17583,40 @@ "typeString": "tuple()" } }, - "id": 47837, + "id": 47834, "nodeType": "ExpressionStatement", "src": "13301:33:54" } }, - "id": 47839, + "id": 47836, "nodeType": "IfStatement", "src": "12853:481:54", "trueBody": { - "id": 47817, + "id": 47814, "nodeType": "Block", "src": "12875:288:54", "statements": [ { "expression": { - "id": 47804, + "id": 47801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "expression": { - "id": 47799, + "id": 47796, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "12910:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47801, + "id": 47798, "isConstant": false, "isLValue": true, "isPure": false, @@ -17624,10 +17624,10 @@ "memberLocation": "12917:5:54", "memberName": "state", "nodeType": "MemberAccess", - "referencedDeclaration": 46569, + "referencedDeclaration": 46566, "src": "12910:12:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -17635,18 +17635,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 47802, + "id": 47799, "name": "SwapOrderState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "12925:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46534_$", + "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46531_$", "typeString": "type(enum OrderLib.SwapOrderState)" } }, - "id": 47803, + "id": 47800, "isConstant": false, "isLValue": false, "isPure": true, @@ -17654,20 +17654,20 @@ "memberLocation": "12940:6:54", "memberName": "Filled", "nodeType": "MemberAccess", - "referencedDeclaration": 46532, + "referencedDeclaration": 46529, "src": "12925:21:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, "src": "12910:36:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, - "id": 47805, + "id": 47802, "nodeType": "ExpressionStatement", "src": "12910:36:54" }, @@ -17677,25 +17677,25 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 47809, + "id": 47806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47806, + "id": 47803, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "13070:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47807, + "id": 47804, "isConstant": false, "isLValue": true, "isPure": false, @@ -17703,7 +17703,7 @@ "memberLocation": "13077:8:54", "memberName": "ocoGroup", "nodeType": "MemberAccess", - "referencedDeclaration": 46573, + "referencedDeclaration": 46570, "src": "13070:15:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -17713,11 +17713,11 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { - "id": 47808, + "id": 47805, "name": "NO_OCO_INDEX", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46498, + "referencedDeclaration": 46495, "src": "13089:12:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -17730,38 +17730,38 @@ "typeString": "bool" } }, - "id": 47816, + "id": 47813, "nodeType": "IfStatement", "src": "13066:86:54", "trueBody": { "expression": { "arguments": [ { - "id": 47811, + "id": 47808, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47774, + "referencedDeclaration": 47771, "src": "13130:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, { "expression": { - "id": 47812, + "id": 47809, "name": "status", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47777, + "referencedDeclaration": 47774, "src": "13136:6:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus storage pointer" } }, - "id": 47813, + "id": 47810, "isConstant": false, "isLValue": true, "isPure": false, @@ -17769,7 +17769,7 @@ "memberLocation": "13143:8:54", "memberName": "ocoGroup", "nodeType": "MemberAccess", - "referencedDeclaration": 46573, + "referencedDeclaration": 46570, "src": "13136:15:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -17780,7 +17780,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" }, { @@ -17788,18 +17788,18 @@ "typeString": "uint64" } ], - "id": 47810, + "id": 47807, "name": "_cancelOco", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47883, + "referencedDeclaration": 47880, "src": "13119:10:54", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_uint64_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_uint64_$returns$__$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,uint64)" } }, - "id": 47814, + "id": 47811, "isConstant": false, "isLValue": false, "isPure": false, @@ -17815,7 +17815,7 @@ "typeString": "tuple()" } }, - "id": 47815, + "id": 47812, "nodeType": "ExpressionStatement", "src": "13119:33:54" } @@ -17831,41 +17831,41 @@ "name": "_checkCompleted", "nameLocation": "12644:15:54", "parameters": { - "id": 47778, + "id": 47775, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 47774, + "id": 47771, "mutability": "mutable", "name": "self", "nameLocation": "12679:4:54", "nodeType": "VariableDeclaration", - "scope": 47841, + "scope": 47838, "src": "12660:23:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" }, "typeName": { - "id": 47773, + "id": 47770, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47772, + "id": 47769, "name": "OrdersInfo", "nameLocations": [ "12660:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "12660:10:54" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "12660:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } }, @@ -17873,36 +17873,36 @@ }, { "constant": false, - "id": 47777, + "id": 47774, "mutability": "mutable", "name": "status", "nameLocation": "12709:6:54", "nodeType": "VariableDeclaration", - "scope": 47841, + "scope": 47838, "src": "12685:30:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus" }, "typeName": { - "id": 47776, + "id": 47773, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47775, + "id": 47772, "name": "SwapOrderStatus", "nameLocations": [ "12685:15:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "12685:15:54" }, - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "12685:15:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus" } }, @@ -17912,86 +17912,86 @@ "src": "12659:57:54" }, "returnParameters": { - "id": 47779, + "id": 47776, "nodeType": "ParameterList", "parameters": [], "src": "12726:0:54" }, - "scope": 47922, + "scope": 47919, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 47883, + "id": 47880, "nodeType": "FunctionDefinition", "src": "13347:286:54", "nodes": [], "body": { - "id": 47882, + "id": 47879, "nodeType": "Block", "src": "13418:215:54", "nodes": [], "statements": [ { "assignments": [ - 47851 + 47848 ], "declarations": [ { "constant": false, - "id": 47851, + "id": 47848, "mutability": "mutable", "name": "group", "nameLocation": "13445:5:54", "nodeType": "VariableDeclaration", - "scope": 47882, + "scope": 47879, "src": "13428:22:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_storage_ptr", + "typeIdentifier": "t_struct$_OcoGroup_$46650_storage_ptr", "typeString": "struct OrderLib.OcoGroup" }, "typeName": { - "id": 47850, + "id": 47847, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47849, + "id": 47846, "name": "OcoGroup", "nameLocations": [ "13428:8:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46653, + "referencedDeclaration": 46650, "src": "13428:8:54" }, - "referencedDeclaration": 46653, + "referencedDeclaration": 46650, "src": "13428:8:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_storage_ptr", + "typeIdentifier": "t_struct$_OcoGroup_$46650_storage_ptr", "typeString": "struct OrderLib.OcoGroup" } }, "visibility": "internal" } ], - "id": 47856, + "id": 47853, "initialValue": { "baseExpression": { "expression": { - "id": 47852, + "id": 47849, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47844, + "referencedDeclaration": 47841, "src": "13453:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 47853, + "id": 47850, "isConstant": false, "isLValue": true, "isPure": false, @@ -17999,20 +17999,20 @@ "memberLocation": "13458:9:54", "memberName": "ocoGroups", "nodeType": "MemberAccess", - "referencedDeclaration": 46508, + "referencedDeclaration": 46505, "src": "13453:14:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46653_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_OcoGroup_$46650_storage_$dyn_storage", "typeString": "struct OrderLib.OcoGroup storage ref[] storage ref" } }, - "id": 47855, + "id": 47852, "indexExpression": { - "id": 47854, + "id": 47851, "name": "ocoIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47846, + "referencedDeclaration": 47843, "src": "13468:8:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18026,7 +18026,7 @@ "nodeType": "IndexAccess", "src": "13453:24:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_storage", + "typeIdentifier": "t_struct$_OcoGroup_$46650_storage", "typeString": "struct OrderLib.OcoGroup storage ref" } }, @@ -18035,17 +18035,17 @@ }, { "assignments": [ - 47858 + 47855 ], "declarations": [ { "constant": false, - "id": 47858, + "id": 47855, "mutability": "mutable", "name": "endIndex", "nameLocation": "13494:8:54", "nodeType": "VariableDeclaration", - "scope": 47882, + "scope": 47879, "src": "13487:15:54", "stateVariable": false, "storageLocation": "default", @@ -18054,7 +18054,7 @@ "typeString": "uint64" }, "typeName": { - "id": 47857, + "id": 47854, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "13487:6:54", @@ -18066,31 +18066,31 @@ "visibility": "internal" } ], - "id": 47864, + "id": 47861, "initialValue": { "commonType": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 47863, + "id": 47860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47859, + "id": 47856, "name": "group", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47851, + "referencedDeclaration": 47848, "src": "13505:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_storage_ptr", + "typeIdentifier": "t_struct$_OcoGroup_$46650_storage_ptr", "typeString": "struct OrderLib.OcoGroup storage pointer" } }, - "id": 47860, + "id": 47857, "isConstant": false, "isLValue": true, "isPure": false, @@ -18098,7 +18098,7 @@ "memberLocation": "13511:10:54", "memberName": "startIndex", "nodeType": "MemberAccess", - "referencedDeclaration": 46650, + "referencedDeclaration": 46647, "src": "13505:16:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18109,18 +18109,18 @@ "operator": "+", "rightExpression": { "expression": { - "id": 47861, + "id": 47858, "name": "group", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47851, + "referencedDeclaration": 47848, "src": "13524:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_storage_ptr", + "typeIdentifier": "t_struct$_OcoGroup_$46650_storage_ptr", "typeString": "struct OrderLib.OcoGroup storage pointer" } }, - "id": 47862, + "id": 47859, "isConstant": false, "isLValue": true, "isPure": false, @@ -18128,7 +18128,7 @@ "memberLocation": "13530:3:54", "memberName": "num", "nodeType": "MemberAccess", - "referencedDeclaration": 46652, + "referencedDeclaration": 46649, "src": "13524:9:54", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -18149,23 +18149,23 @@ "expression": { "arguments": [ { - "id": 47877, + "id": 47874, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47844, + "referencedDeclaration": 47841, "src": "13618:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, { - "id": 47878, + "id": 47875, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47866, + "referencedDeclaration": 47863, "src": "13624:1:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18176,7 +18176,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" }, { @@ -18184,18 +18184,18 @@ "typeString": "uint64" } ], - "id": 47876, + "id": 47873, "name": "_cancelOrder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47921, + "referencedDeclaration": 47918, "src": "13605:12:54", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_uint64_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_uint64_$returns$__$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,uint64)" } }, - "id": 47879, + "id": 47876, "isConstant": false, "isLValue": false, "isPure": false, @@ -18211,7 +18211,7 @@ "typeString": "tuple()" } }, - "id": 47880, + "id": 47877, "nodeType": "ExpressionStatement", "src": "13605:21:54" }, @@ -18220,17 +18220,17 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 47872, + "id": 47869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47870, + "id": 47867, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47866, + "referencedDeclaration": 47863, "src": "13575:1:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18240,11 +18240,11 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 47871, + "id": 47868, "name": "endIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47858, + "referencedDeclaration": 47855, "src": "13577:8:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18257,20 +18257,20 @@ "typeString": "bool" } }, - "id": 47881, + "id": 47878, "initializationExpression": { "assignments": [ - 47866 + 47863 ], "declarations": [ { "constant": false, - "id": 47866, + "id": 47863, "mutability": "mutable", "name": "i", "nameLocation": "13555:1:54", "nodeType": "VariableDeclaration", - "scope": 47881, + "scope": 47878, "src": "13548:8:54", "stateVariable": false, "storageLocation": "default", @@ -18279,7 +18279,7 @@ "typeString": "uint64" }, "typeName": { - "id": 47865, + "id": 47862, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "13548:6:54", @@ -18291,21 +18291,21 @@ "visibility": "internal" } ], - "id": 47869, + "id": 47866, "initialValue": { "expression": { - "id": 47867, + "id": 47864, "name": "group", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47851, + "referencedDeclaration": 47848, "src": "13557:5:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OcoGroup_$46653_storage_ptr", + "typeIdentifier": "t_struct$_OcoGroup_$46650_storage_ptr", "typeString": "struct OrderLib.OcoGroup storage pointer" } }, - "id": 47868, + "id": 47865, "isConstant": false, "isLValue": true, "isPure": false, @@ -18313,7 +18313,7 @@ "memberLocation": "13563:10:54", "memberName": "startIndex", "nodeType": "MemberAccess", - "referencedDeclaration": 46650, + "referencedDeclaration": 46647, "src": "13557:16:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18326,7 +18326,7 @@ "isSimpleCounterLoop": true, "loopExpression": { "expression": { - "id": 47874, + "id": 47871, "isConstant": false, "isLValue": false, "isPure": false, @@ -18336,11 +18336,11 @@ "prefix": false, "src": "13587:3:54", "subExpression": { - "id": 47873, + "id": 47870, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47866, + "referencedDeclaration": 47863, "src": "13587:1:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18352,7 +18352,7 @@ "typeString": "uint64" } }, - "id": 47875, + "id": 47872, "nodeType": "ExpressionStatement", "src": "13587:3:54" }, @@ -18367,41 +18367,41 @@ "name": "_cancelOco", "nameLocation": "13356:10:54", "parameters": { - "id": 47847, + "id": 47844, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 47844, + "id": 47841, "mutability": "mutable", "name": "self", "nameLocation": "13386:4:54", "nodeType": "VariableDeclaration", - "scope": 47883, + "scope": 47880, "src": "13367:23:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" }, "typeName": { - "id": 47843, + "id": 47840, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47842, + "id": 47839, "name": "OrdersInfo", "nameLocations": [ "13367:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "13367:10:54" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "13367:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } }, @@ -18409,12 +18409,12 @@ }, { "constant": false, - "id": 47846, + "id": 47843, "mutability": "mutable", "name": "ocoIndex", "nameLocation": "13399:8:54", "nodeType": "VariableDeclaration", - "scope": 47883, + "scope": 47880, "src": "13392:15:54", "stateVariable": false, "storageLocation": "default", @@ -18423,7 +18423,7 @@ "typeString": "uint64" }, "typeName": { - "id": 47845, + "id": 47842, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "13392:6:54", @@ -18438,87 +18438,87 @@ "src": "13366:42:54" }, "returnParameters": { - "id": 47848, + "id": 47845, "nodeType": "ParameterList", "parameters": [], "src": "13418:0:54" }, - "scope": 47922, + "scope": 47919, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 47921, + "id": 47918, "nodeType": "FunctionDefinition", "src": "13639:319:54", "nodes": [], "body": { - "id": 47920, + "id": 47917, "nodeType": "Block", "src": "13714:244:54", "nodes": [], "statements": [ { "assignments": [ - 47893 + 47890 ], "declarations": [ { "constant": false, - "id": 47893, + "id": 47890, "mutability": "mutable", "name": "state", "nameLocation": "13739:5:54", "nodeType": "VariableDeclaration", - "scope": 47920, + "scope": 47917, "src": "13724:20:54", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" }, "typeName": { - "id": 47892, + "id": 47889, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47891, + "id": 47888, "name": "SwapOrderState", "nameLocations": [ "13724:14:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "13724:14:54" }, - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "13724:14:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, "visibility": "internal" } ], - "id": 47899, + "id": 47896, "initialValue": { "expression": { "baseExpression": { "expression": { - "id": 47894, + "id": 47891, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47886, + "referencedDeclaration": 47883, "src": "13747:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 47895, + "id": 47892, "isConstant": false, "isLValue": true, "isPure": false, @@ -18526,20 +18526,20 @@ "memberLocation": "13752:6:54", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "13747:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 47897, + "id": 47894, "indexExpression": { - "id": 47896, + "id": 47893, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47888, + "referencedDeclaration": 47885, "src": "13759:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18553,11 +18553,11 @@ "nodeType": "IndexAccess", "src": "13747:23:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref" } }, - "id": 47898, + "id": 47895, "isConstant": false, "isLValue": true, "isPure": false, @@ -18565,10 +18565,10 @@ "memberLocation": "13771:5:54", "memberName": "state", "nodeType": "MemberAccess", - "referencedDeclaration": 46569, + "referencedDeclaration": 46566, "src": "13747:29:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -18578,23 +18578,23 @@ { "condition": { "commonType": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" }, - "id": 47903, + "id": 47900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47900, + "id": 47897, "name": "state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47893, + "referencedDeclaration": 47890, "src": "13790:5:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -18602,18 +18602,18 @@ "operator": "==", "rightExpression": { "expression": { - "id": 47901, + "id": 47898, "name": "SwapOrderState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "13799:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46534_$", + "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46531_$", "typeString": "type(enum OrderLib.SwapOrderState)" } }, - "id": 47902, + "id": 47899, "isConstant": false, "isLValue": false, "isPure": true, @@ -18621,10 +18621,10 @@ "memberLocation": "13814:4:54", "memberName": "Open", "nodeType": "MemberAccess", - "referencedDeclaration": 46530, + "referencedDeclaration": 46527, "src": "13799:19:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -18634,17 +18634,17 @@ "typeString": "bool" } }, - "id": 47919, + "id": 47916, "nodeType": "IfStatement", "src": "13786:166:54", "trueBody": { - "id": 47918, + "id": 47915, "nodeType": "Block", "src": "13821:131:54", "statements": [ { "expression": { - "id": 47912, + "id": 47909, "isConstant": false, "isLValue": false, "isPure": false, @@ -18653,18 +18653,18 @@ "expression": { "baseExpression": { "expression": { - "id": 47904, + "id": 47901, "name": "self", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47886, + "referencedDeclaration": 47883, "src": "13835:4:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo storage pointer" } }, - "id": 47907, + "id": 47904, "isConstant": false, "isLValue": true, "isPure": false, @@ -18672,20 +18672,20 @@ "memberLocation": "13840:6:54", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "13835:11:54", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 47908, + "id": 47905, "indexExpression": { - "id": 47906, + "id": 47903, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47888, + "referencedDeclaration": 47885, "src": "13847:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18699,11 +18699,11 @@ "nodeType": "IndexAccess", "src": "13835:23:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref" } }, - "id": 47909, + "id": 47906, "isConstant": false, "isLValue": true, "isPure": false, @@ -18711,10 +18711,10 @@ "memberLocation": "13859:5:54", "memberName": "state", "nodeType": "MemberAccess", - "referencedDeclaration": 46569, + "referencedDeclaration": 46566, "src": "13835:29:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, @@ -18722,18 +18722,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 47910, + "id": 47907, "name": "SwapOrderState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46534, + "referencedDeclaration": 46531, "src": "13867:14:54", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46534_$", + "typeIdentifier": "t_type$_t_enum$_SwapOrderState_$46531_$", "typeString": "type(enum OrderLib.SwapOrderState)" } }, - "id": 47911, + "id": 47908, "isConstant": false, "isLValue": false, "isPure": true, @@ -18741,20 +18741,20 @@ "memberLocation": "13882:8:54", "memberName": "Canceled", "nodeType": "MemberAccess", - "referencedDeclaration": 46531, + "referencedDeclaration": 46528, "src": "13867:23:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, "src": "13835:55:54", "typeDescriptions": { - "typeIdentifier": "t_enum$_SwapOrderState_$46534", + "typeIdentifier": "t_enum$_SwapOrderState_$46531", "typeString": "enum OrderLib.SwapOrderState" } }, - "id": 47913, + "id": 47910, "nodeType": "ExpressionStatement", "src": "13835:55:54" }, @@ -18762,11 +18762,11 @@ "eventCall": { "arguments": [ { - "id": 47915, + "id": 47912, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47888, + "referencedDeclaration": 47885, "src": "13930:10:54", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18781,18 +18781,18 @@ "typeString": "uint64" } ], - "id": 47914, + "id": 47911, "name": "DexorderSwapCanceled", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46529, + "referencedDeclaration": 46526, "src": "13909:20:54", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)" } }, - "id": 47916, + "id": 47913, "isConstant": false, "isLValue": false, "isPure": false, @@ -18808,7 +18808,7 @@ "typeString": "tuple()" } }, - "id": 47917, + "id": 47914, "nodeType": "EmitStatement", "src": "13904:37:54" } @@ -18823,41 +18823,41 @@ "name": "_cancelOrder", "nameLocation": "13648:12:54", "parameters": { - "id": 47889, + "id": 47886, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 47886, + "id": 47883, "mutability": "mutable", "name": "self", "nameLocation": "13680:4:54", "nodeType": "VariableDeclaration", - "scope": 47921, + "scope": 47918, "src": "13661:23:54", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" }, "typeName": { - "id": 47885, + "id": 47882, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 47884, + "id": 47881, "name": "OrdersInfo", "nameLocations": [ "13661:10:54" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "13661:10:54" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "13661:10:54", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } }, @@ -18865,12 +18865,12 @@ }, { "constant": false, - "id": 47888, + "id": 47885, "mutability": "mutable", "name": "orderIndex", "nameLocation": "13693:10:54", "nodeType": "VariableDeclaration", - "scope": 47921, + "scope": 47918, "src": "13686:17:54", "stateVariable": false, "storageLocation": "default", @@ -18879,7 +18879,7 @@ "typeString": "uint64" }, "typeName": { - "id": 47887, + "id": 47884, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "13686:6:54", @@ -18894,12 +18894,12 @@ "src": "13660:44:54" }, "returnParameters": { - "id": 47890, + "id": 47887, "nodeType": "ParameterList", "parameters": [], "src": "13714:0:54" }, - "scope": 47922, + "scope": 47919, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" @@ -18912,16 +18912,16 @@ "contractKind": "library", "fullyImplemented": true, "linearizedBaseContracts": [ - 47922 + 47919 ], "name": "OrderLib", "nameLocation": "253:8:54", - "scope": 47923, + "scope": 47920, "usedErrors": [], "usedEvents": [ - 46515, - 46525, - 46529 + 46512, + 46522, + 46526 ] } ], diff --git a/deployment/alpha/out/QueryHelper.sol/QueryHelper.json b/deployment/alpha/out/QueryHelper.sol/QueryHelper.json index c9e91bb..5cd80cc 100644 --- a/deployment/alpha/out/QueryHelper.sol/QueryHelper.json +++ b/deployment/alpha/out/QueryHelper.sol/QueryHelper.json @@ -122,12 +122,12 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50611299806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea264697066735822122085b8679d697e8685f6eceb314bd3910c1a407cdc658db22181b280efe388928464736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50611299806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea2646970667358221220781b28c3f6332aa5b34004d6e3aec84d08036cc72cde73dd5d71b4b6c36c4bf764736f6c63430008160033", "sourceMap": "335:3162:55:-:0;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea264697066735822122085b8679d697e8685f6eceb314bd3910c1a407cdc658db22181b280efe388928464736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80636a385ae9116100505780636a385ae9146100ab578063b8df9780146100cc578063d85c32c7146100d457600080fd5b80633c38ccbb1461006c57806354fd4d5014610096575b600080fd5b61007f61007a366004610b21565b6100f4565b60405161008d929190610b6f565b60405180910390f35b61009e600181565b60405161008d9190610b93565b6100be6100b9366004610cf4565b610206565b60405161008d929190610da5565b61009e60ff81565b6100e76100e2366004610dd3565b6104c8565b60405161008d9190610f02565b6000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101669190610f92565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff89169550631a686502946004808301955060209450909250908290030181865afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff9190611046565b9050915091565b60608061ffff801683511061021a57600080fd5b825167ffffffffffffffff81111561023457610234610bb6565b60405190808252806020026020018201604052801561025d578160200160208202803683370190505b509150825167ffffffffffffffff81111561027a5761027a610bb6565b6040519080825280602002602001820160405280156102a3578160200160208202803683370190505b50905060005b83518161ffff1610156104c057838161ffff16815181106102cc576102cc611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161030c9190611094565b602060405180830381865afa925050508015610363575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610360918101906110b4565b60015b610390576000838261ffff168151811061037f5761037f611065565b6020026020010181815250506103b5565b80848361ffff16815181106103a7576103a7611065565b602002602001018181525050505b838161ffff16815181106103cb576103cb611065565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610457575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610454918101906110d3565b60015b6104865760ff8016828261ffff168151811061047557610475611065565b6020026020010181815250506104ae565b8060ff16838361ffff16815181106104a0576104a0611065565b602002602001018181525050505b806104b881611121565b9150506102a9565b509250929050565b60606105086040518060400160405280600981526020017f676574526f7574657300000000000000000000000000000000000000000000008152506108fe565b61051183610990565b61051a82610990565b60408051608081018252606481526101f46020820152610bb8918101919091526127106060820152600080808087815b60048160ff1610156107aa576105946040518060400160405280600981526020017f676574506f6f6c2e2e00000000000000000000000000000000000000000000008152506108fe565b6000878260ff16600481106105ab576105ab611065565b60200201516040517f1698ee82000000000000000000000000000000000000000000000000000000008152909150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061060a908f908f908790600401611142565b602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064b919061117e565b905073ffffffffffffffffffffffffffffffffffffffff81166106ad576106a66040518060400160405280600781526020017f6e6f20706f6f6c000000000000000000000000000000000000000000000000008152506108fe565b50506107a2565b6106eb6040518060400160405280600881526020017f676f74506f6f6c2e0000000000000000000000000000000000000000000000008152506108fe565b6106f481610990565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610749908590600401611094565b602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906110b4565b90508681111561079e578297508096508195505b5050505b60010161054a565b506000808562ffffff16116107dd5760006107c5878261119d565b62ffffff16116107d65760006107e0565b60016107e0565b60015b90506107eb83610990565b6107f78160ff16610a1f565b8060ff1667ffffffffffffffff81111561081357610813610bb6565b60405190808252806020026020018201604052801561087c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108315790505b509750600062ffffff8616156108f0576040805160608101909152806001815262ffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff861660409091015289826108cf816111ba565b935060ff16815181106108e4576108e4611065565b60200260200101819052505b505050505050505092915050565b61098d816040516024016109129190611242565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610aaa565b50565b61098d816040516024016109a49190611094565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610aaa565b61098d81604051602401610a339190611255565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790525b61098d8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b6000610ae982610acf565b610b0381610aef565b811461098d57600080fd5b803580610b1a81610afa565b5092915050565b600060208284031215610b3657610b36600080fd5b610b408383610b0e565b9392505050565b610b518160020b90565b82525050565b6fffffffffffffffffffffffffffffffff8116610b51565b60408101610b7d8285610b47565b610b406020830184610b57565b60ff8116610b51565b60208101610ae98284610b8a565b610b0381610acf565b803580610b1a81610ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610c2957610c29610bb6565b6040525050565b6000610c3b60405190565b809150610c488382610be5565b50919050565b600067ffffffffffffffff821115610c6857610c68610bb6565b5060051b60200190565b6000610c85610c8084610c4e565b610c30565b8381529050600583901b82016020820185821115610ca557610ca5600080fd5b835b82811015610cc757610cb98782610baa565b825260209182019101610ca7565b5050509392505050565b600082601f830112610ce557610ce5600080fd5b610b4083833560208501610c72565b60008060408385031215610d0a57610d0a600080fd5b610d148484610baa565b9150602083013567ffffffffffffffff811115610d3357610d33600080fd5b610d3f85828601610cd1565b9150509250929050565b80610b51565b610d598282610d49565b5060200190565b6000610d6a825190565b808452602093840193830160005b82811015610d9b57610d8b868351610d4f565b9550602082019150600101610d78565b5093949350505050565b604081526000610db86040830185610d60565b8281036020840152610dca8185610d60565b95945050505050565b60008060408385031215610de957610de9600080fd5b610df38484610baa565b9150610e028460208501610baa565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061098d5761098d610e0b565b80610e5481610e3a565b919050565b6000610ae982610e4a565b610b5181610e59565b62ffffff8116610b51565b610b5181610acf565b610e8c828251610e64565b6020810151610e9e6020840182610e6d565b506040810151610eb16040840182610e78565b505050565b610ec08282610e81565b5060600190565b6000610ed1825190565b808452602093840193830160005b82811015610d9b57610ef2868351610eb6565b9550602082019150600101610edf565b602081526000610b406020830184610ec7565b73ffffffffffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81610f15565b610b038160020b90565b805180610b1a81610f3d565b61ffff8116610b03565b805180610b1a81610f53565b60ff8116610b03565b805180610b1a81610f69565b801515610b03565b805180610b1a81610f7e565b600080600080600080600060e0888a031215610fb057610fb0600080fd5b610fba8989610f31565b9650610fc98960208a01610f47565b9550610fd88960408a01610f5d565b9450610fe78960608a01610f5d565b9350610ff68960808a01610f5d565b92506110058960a08a01610f72565b91506110148960c08a01610f86565b905092959891949750929550565b6fffffffffffffffffffffffffffffffff8116610b03565b805180610b1a81611022565b60006020828403121561105b5761105b600080fd5b610b40838361103a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101610ae98284610e78565b80610b03565b805180610b1a816110a2565b6000602082840312156110c9576110c9600080fd5b610b4083836110a8565b6000602082840312156110e8576110e8600080fd5b610b408383610f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff821661ffff8103611139576111396110f2565b60010192915050565b606081016111508286610e78565b61115d6020830185610e78565b61116a6040830184610e6d565b949350505050565b805180610b1a81610ba1565b60006020828403121561119357611193600080fd5b610b408383611172565b62ffffff82811682821601908190811115610b1a57610b1a6110f2565b600060ff821660ff8103611139576111396110f2565b60005b838110156111eb5781810151838201526020016111d3565b50506000910152565b60006111fe825190565b808452602084016112138282602087016111d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000610b4060208301846111f4565b60208101610ae98284610d4956fea2646970667358221220781b28c3f6332aa5b34004d6e3aec84d08036cc72cde73dd5d71b4b6c36c4bf764736f6c63430008160033", "sourceMap": "335:3162:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3293:202;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;362:33;;394:1;362:33;;;;;;;;;:::i;464:778::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;401:56::-;;442:15;401:56;;1359:1928;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3293:202::-;3368:10;3388:17;3438:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3472:16:55;;;;;;;;3422:28;;-1:-1:-1;3472:14:55;;;;-1:-1:-1;3472:14:55;;:16;;;;;-1:-1:-1;3472:16:55;;-1:-1:-1;3472:16:55;;-1:-1:-1;3472:16:55;;;;;;:14;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3460:28;;3293:202;;;:::o;464:778::-;561:25;596;662:16;646:32;;:6;:13;:32;638:41;;;;;;714:6;:13;700:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;700:28:55;;689:39;;763:6;:13;749:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;749:28:55;;738:39;;792:8;787:449;808:6;:13;804:1;:17;;;787:449;;;854:6;861:1;854:9;;;;;;;;;;:::i;:::-;;;;;;;847:27;;;875:5;847:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;847:34:55;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;843:186;;1013:1;999:8;1008:1;999:11;;;;;;;;;;:::i;:::-;;;;;;:15;;;;;843:186;;;940:7;926:8;935:1;926:11;;;;;;;;;;:::i;:::-;;;;;;:21;;;;;882:80;843:186;1052:6;1059:1;1052:9;;;;;;;;;;:::i;:::-;;;;;;;1046:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1046:27:55;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1042:184;;442:15;1181:30;;:8;1190:1;1181:11;;;;;;;;;;:::i;:::-;;;;;;:30;;;;;1042:184;;;1126:3;1112:17;;:8;1121:1;1112:11;;;;;;;;;;:::i;:::-;;;;;;:17;;;;;1074:70;1042:184;823:3;;;;:::i;:::-;;;;787:449;;;;464:778;;;;;:::o;1359:1928::-;1436:28;1521:25;;;;;;;;;;;;;;;;;;:12;:25::i;:::-;1556:20;1569:6;1556:12;:20::i;:::-;1586;1599:6;1586:12;:20::i;:::-;1685:52;;;;;;;;1717:3;1685:52;;1722:3;1685:52;;;;1726:4;1685:52;;;;;;;1731:5;1685:52;;;;:21;;;;2006:6;1685:21;2023:856;2041:1;2039;:3;;;2023:856;;;2064:25;;;;;;;;;;;;;;;;;;:12;:25::i;:::-;2103:10;2116:4;2121:1;2116:7;;;;;;;;;:::i;:::-;;;;;2174:55;;;;;2116:7;;-1:-1:-1;2137:19:55;;475:42:50;;2174:34:55;;:55;;2209:6;;2217;;2116:7;;2174:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2137:93;-1:-1:-1;2248:27:55;;;2244:116;;2296:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2337:8;;;;2244:116;2373:24;;;;;;;;;;;;;;;;;;:12;:24::i;:::-;2411:27;2432:4;2411:12;:27::i;:::-;2643:29;;;;;2623:17;;2643:14;;;;;;:29;;2666:4;;2643:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2623:49;;2702:18;2690:9;:30;2686:183;;;2756:3;2741:18;;2798:9;2777:30;;2849:4;2825:29;;2686:183;2050:829;;;2023:856;2044:3;;2023:856;;;;2888:17;2923:1;2908:12;:16;;;:51;;2950:1;2931:16;2935:12;2950:1;2931:16;:::i;:::-;:20;;;:28;;2958:1;2908:51;;2931:28;2954:1;2908:51;;;2927:1;2908:51;2888:71;;2969:27;2982:13;2969:12;:27::i;:::-;3006:31;3024:11;3019:17;;3006:12;:31::i;:::-;3087:11;3056:43;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;3056:43:55;;;;;;;;;;;;;;-1:-1:-1;3047:52:55;-1:-1:-1;3109:7:55;3153:16;;;;3149:131;;3198:82;;;;;;;;;;3223:27;3198:82;;;;;;;;;;;;;;;;;3184:6;3191:3;;;;:::i;:::-;;;3184:11;;;;;;;;;;:::i;:::-;;;;;;:96;;;;3149:131;1466:1821;;;;;;;;1359:1928;;;;:::o;6598:121:16:-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;:::-;6598:121;:::o;6841:116::-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6890:15;:60::i;6356:116::-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;447:96:69:-;482:7;393:42;382:54;;515:22;504:33;447:96;-1:-1:-1;;447:96:69:o;548:112::-;599:7;632:22;648:5;632:22;:::i;665:154::-;756:38;788:5;756:38;:::i;:::-;749:5;746:49;736:77;;809:1;806;799:12;824:204;919:20;;;973:49;919:20;973:49;:::i;:::-;;824:204;;;;:::o;1033:330::-;1116:6;1169:2;1157:9;1148:7;1144:23;1140:32;1137:147;;;1195:79;335:3162:55;;;1195:79:69;1303:54;1349:7;1338:9;1303:54;:::i;:::-;1293:64;1033:330;-1:-1:-1;;;1033:330:69:o;1465:91::-;1529:20;1543:5;1445:1;1434:20;;1368:92;1529:20;1524:3;1517:33;;;1465:91::o;1686:95::-;1640:34;1629:46;;1752:22;1561:120;1786:266;1944:2;1929:18;;1956:35;1933:9;1973:6;1956:35;:::i;:::-;2000:46;2042:2;2031:9;2027:18;2019:6;2000:46;:::i;2138:91::-;2126:4;2115:16;;2202:20;2057:76;2234:183;2364:2;2349:18;;2376:35;2353:9;2393:6;2376:35;:::i;2422:122::-;2497:22;2513:5;2497:22;:::i;2549:172::-;2628:20;;;2682:33;2628:20;2682:33;:::i;3007:184::-;3059:77;3056:1;3049:88;3156:4;3153:1;3146:15;3180:4;3177:1;3170:15;3196:246;2929:66;2924:2;2913:14;;2909:87;3275:6;3271:37;3374:6;3362:10;3359:22;3338:18;3326:10;3323:34;3320:62;3317:88;;;3385:18;;:::i;:::-;3421:2;3414:22;-1:-1:-1;;3196:246:69:o;3447:168::-;3481:6;3518:20;76:2;70:9;;14:67;3518:20;3557:8;3547:18;;3574:35;3604:4;3594:8;3574:35;:::i;:::-;;3447:168;;;:::o;3620:183::-;3680:4;3713:18;3705:6;3702:30;3699:56;;;3735:18;;:::i;:::-;-1:-1:-1;3780:1:69;3776:14;3792:4;3772:25;;3620:183::o;3922:683::-;4001:5;4036:64;4052:47;4092:6;4052:47;:::i;:::-;4036:64;:::i;:::-;4161:23;;;4118:7;-1:-1:-1;4257:1:69;4253:14;;;4241:27;;4213:4;4200:18;;4280:15;;;4277:130;;;4318:79;335:3162:55;;;4318:79:69;4427:6;4442:157;4458:6;4453:3;4450:15;4442:157;;;4526:28;4550:3;4545;4526:28;:::i;:::-;4514:41;;4584:4;4575:14;;;;4475;4442:157;;;4446:3;;;3922:683;;;;;:::o;4610:339::-;4664:5;4717:3;4710:4;4702:6;4698:17;4694:27;4684:150;;4745:79;335:3162:55;;;4745:79:69;4852:91;4939:3;4930:6;4917:20;4910:4;4902:6;4898:17;4852:91;:::i;4954:621::-;5047:6;5055;5108:2;5096:9;5087:7;5083:23;5079:32;5076:147;;;5134:79;335:3162:55;;;5134:79:69;5242:38;5272:7;5261:9;5242:38;:::i;:::-;5232:48;;5331:2;5320:9;5316:18;5303:32;5358:18;5350:6;5347:30;5344:145;;;5400:79;335:3162:55;;;5400:79:69;5508:61;5561:7;5552:6;5541:9;5537:22;5508:61;:::i;:::-;5498:71;;;4954:621;;;;;:::o;6000:95::-;6082:5;6066:22;5928:67;6100:153;6179:31;6206:3;6198:6;6179:31;:::i;:::-;-1:-1:-1;6242:4:69;6233:14;;6100:153::o;6351:506::-;6404:3;6436:37;6467:5;5653:12;;5580:87;6436:37;5770:19;;;5822:4;5813:14;;;;5907;;6628:1;6638:194;6652:6;6649:1;6646:13;6638:194;;;6708:48;6752:3;6743:6;6737:13;6708:48;:::i;:::-;6701:55;-1:-1:-1;5916:4:69;5907:14;;6769:53;-1:-1:-1;6674:1:69;6667:9;6638:194;;;-1:-1:-1;6848:3:69;;6351:506;-1:-1:-1;;;;6351:506:69:o;6862:465::-;7119:2;7108:9;7101:21;7082:4;7145:56;7197:2;7186:9;7182:18;7174:6;7145:56;:::i;:::-;7249:9;7241:6;7237:22;7232:2;7221:9;7217:18;7210:50;7277:44;7314:6;7306;7277:44;:::i;:::-;7269:52;6862:465;-1:-1:-1;;;;;6862:465:69:o;7332:373::-;7400:6;7408;7461:2;7449:9;7440:7;7436:23;7432:32;7429:147;;;7487:79;335:3162:55;;;7487:79:69;7595:38;7625:7;7614:9;7595:38;:::i;:::-;7585:48;;7652:47;7691:7;7686:2;7675:9;7671:18;7652:47;:::i;:::-;7642:57;;7332:373;;;;;:::o;8094:184::-;8146:77;8143:1;8136:88;8243:4;8240:1;8233:15;8267:4;8264:1;8257:15;8283:113;8364:1;8357:5;8354:12;8344:46;;8370:18;;:::i;8401:131::-;8475:5;8489:37;8475:5;8489:37;:::i;:::-;8401:131;;;:::o;8537:121::-;8587:9;8624:28;8646:5;8624:28;:::i;8663:116::-;8735:37;8766:5;8735:37;:::i;8882:103::-;8862:8;8851:20;;8957:21;8784:93;8990:106;9067:22;9083:5;9067:22;:::i;9101:357::-;9167:43;9206:3;9198:5;9192:12;9167:43;:::i;:::-;9256:4;9249:5;9245:16;9239:23;9271:57;9322:4;9317:3;9313:14;9299:12;9271:57;:::i;:::-;;9376:4;9369:5;9365:16;9359:23;9391:61;9446:4;9441:3;9437:14;9421;9391:61;:::i;:::-;;9101:357;;:::o;9463:177::-;9554:43;9593:3;9585:6;9554:43;:::i;:::-;-1:-1:-1;9629:4:69;9620:14;;9463:177::o;9750:578::-;9815:3;9847:49;9890:5;5653:12;;5580:87;9847:49;5770:19;;;5822:4;5813:14;;;;5907;;10075:1;10085:218;10099:6;10096:1;10093:13;10085:218;;;10155:60;10211:3;10202:6;10196:13;10155:60;:::i;:::-;10148:67;-1:-1:-1;5916:4:69;5907:14;;10228:65;-1:-1:-1;10121:1:69;10114:9;10085:218;;10333:335;10574:2;10563:9;10556:21;10537:4;10594:68;10658:2;10647:9;10643:18;10635:6;10594:68;:::i;10673:122::-;393:42;382:54;;10748:22;314:128;10800:176;10890:13;;;10937:33;10890:13;10937:33;:::i;10981:118::-;11054:20;11068:5;1445:1;1434:20;;1368:92;11104:172;11192:13;;;11239:31;11192:13;11239:31;:::i;11365:120::-;11351:6;11340:18;;11439:21;11281:79;11490:174;11579:13;;;11626:32;11579:13;11626:32;:::i;11669:118::-;2126:4;2115:16;;11742:20;2057:76;11792:172;11880:13;;;11927:31;11880:13;11927:31;:::i;12066:116::-;12041:13;;12034:21;12138:19;11969:92;12187:170;12274:13;;;12321:30;12274:13;12321:30;:::i;12362:860::-;12476:6;12484;12492;12500;12508;12516;12524;12577:3;12565:9;12556:7;12552:23;12548:33;12545:148;;;12604:79;335:3162:55;;;12604:79:69;12712:49;12753:7;12742:9;12712:49;:::i;:::-;12702:59;;12780:56;12828:7;12823:2;12812:9;12808:18;12780:56;:::i;:::-;12770:66;;12855:57;12904:7;12899:2;12888:9;12884:18;12855:57;:::i;:::-;12845:67;;12931:57;12980:7;12975:2;12964:9;12960:18;12931:57;:::i;:::-;12921:67;;13007:58;13057:7;13051:3;13040:9;13036:19;13007:58;:::i;:::-;12997:68;;13084:57;13133:7;13127:3;13116:9;13112:19;13084:57;:::i;:::-;13074:67;;13160:56;13208:7;13202:3;13191:9;13187:19;13160:56;:::i;:::-;13150:66;;12362:860;;;;;;;;;;:::o;13227:122::-;1640:34;1629:46;;13302:22;1561:120;13354:176;13444:13;;;13491:33;13444:13;13491:33;:::i;13535:312::-;13605:6;13658:2;13646:9;13637:7;13633:23;13629:32;13626:147;;;13684:79;335:3162:55;;;13684:79:69;13792:49;13833:7;13822:9;13792:49;:::i;13852:184::-;13904:77;13901:1;13894:88;14001:4;13998:1;13991:15;14025:4;14022:1;14015:15;14141:189;14275:2;14260:18;;14287:37;14264:9;14306:6;14287:37;:::i;14335:122::-;14426:5;14410:22;5928:67;14462:176;14552:13;;;14599:33;14552:13;14599:33;:::i;14643:312::-;14713:6;14766:2;14754:9;14745:7;14741:23;14737:32;14734:147;;;14792:79;335:3162:55;;;14792:79:69;14900:49;14941:7;14930:9;14900:49;:::i;14960:308::-;15028:6;15081:2;15069:9;15060:7;15056:23;15052:32;15049:147;;;15107:79;335:3162:55;;;15107:79:69;15215:47;15254:7;15243:9;15215:47;:::i;15273:184::-;15325:77;15322:1;15315:88;15422:4;15419:1;15412:15;15446:4;15443:1;15436:15;15462:183;15500:3;11351:6;11340:18;;15578:6;15569:7;15566:19;15563:45;;15588:18;;:::i;:::-;15637:1;15624:15;;15462:183;-1:-1:-1;;15462:183:69:o;15748:352::-;15936:2;15921:18;;15948:37;15925:9;15967:6;15948:37;:::i;:::-;15994:46;16036:2;16025:9;16021:18;16013:6;15994:46;:::i;:::-;16049:45;16090:2;16079:9;16075:18;16067:6;16049:45;:::i;:::-;15748:352;;;;;;:::o;16105:176::-;16195:13;;;16242:33;16195:13;16242:33;:::i;16286:312::-;16356:6;16409:2;16397:9;16388:7;16384:23;16380:32;16377:147;;;16435:79;335:3162:55;;;16435:79:69;16543:49;16584:7;16573:9;16543:49;:::i;16603:215::-;8862:8;8851:20;;;;;;16710:27;;;;16770:19;;16767:45;;;16792:18;;:::i;16823:179::-;16860:3;2126:4;2115:16;;16937:4;16928:7;16925:17;16922:43;;16945:18;;:::i;17243:250::-;17328:1;17338:113;17352:6;17349:1;17346:13;17338:113;;;17428:11;;;17422:18;17409:11;;;17402:39;17374:2;17367:10;17338:113;;;-1:-1:-1;;17485:1:69;17467:16;;17460:27;17243:250::o;17498:306::-;17540:3;17572:26;17592:5;5653:12;;5580:87;17572:26;5770:19;;;5822:4;5813:14;;17677:67;17737:6;17730:5;17723:4;17716:5;17712:16;17677:67;:::i;:::-;2929:66;2924:2;2913:14;;2909:87;17760:38;;17498:306;-1:-1:-1;;;;17498:306:69:o;17809:220::-;17958:2;17947:9;17940:21;17921:4;17978:45;18019:2;18008:9;18004:18;17996:6;17978:45;:::i;18145:200::-;18279:2;18264:18;;18291:48;18268:9;18321:6;18291:48;:::i", "linkReferences": {} }, @@ -138,7 +138,7 @@ "poolStatus(address)": "3c38ccbb", "version()": "54fd4d50" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UNKNOWN_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimals\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getRoutes\",\"outputs\":[{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"internalType\":\"struct QueryHelper.RoutesResult[]\",\"name\":\"routes\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"poolStatus\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/QueryHelper.sol\":\"QueryHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/QueryHelper.sol\":{\"keccak256\":\"0xc501c6e09833b7ab5dbddfab0aece929f9fadaba723a9197fbb3e0fe948644ae\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1d8eb50b08e37e4ed6d9d73adc50c9576c70ebdbc69266e4467e06b0c02b6ded\",\"dweb:/ipfs/QmSmE81LCdUYpC9PrNntX7YimnVA66uE1wG7ZGnMLh8pkw\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UNKNOWN_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimals\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getRoutes\",\"outputs\":[{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"internalType\":\"struct QueryHelper.RoutesResult[]\",\"name\":\"routes\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"poolStatus\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/QueryHelper.sol\":\"QueryHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/QueryHelper.sol\":{\"keccak256\":\"0xc501c6e09833b7ab5dbddfab0aece929f9fadaba723a9197fbb3e0fe948644ae\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1d8eb50b08e37e4ed6d9d73adc50c9576c70ebdbc69266e4467e06b0c02b6ded\",\"dweb:/ipfs/QmSmE81LCdUYpC9PrNntX7YimnVA66uE1wG7ZGnMLh8pkw\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -524,10 +524,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -592,10 +592,10 @@ }, "ast": { "absolutePath": "src/QueryHelper.sol", - "id": 48321, + "id": 48318, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "Context": [ 43777 @@ -604,7 +604,7 @@ 43478 ], "Factory": [ - 46430 + 46427 ], "IERC165": [ 43789 @@ -670,28 +670,28 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 ], "QueryHelper": [ - 48320 + 48317 ], "TransferHelper": [ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Vault": [ - 49181 + 49178 ], "VaultDeployer": [ - 49436 + 49433 ], "console2": [ 29653 @@ -701,7 +701,7 @@ "src": "39:3459:55", "nodes": [ { - "id": 47924, + "id": 47921, "nodeType": "PragmaDirective", "src": "39:24:55", "nodes": [], @@ -713,7 +713,7 @@ ] }, { - "id": 47925, + "id": 47922, "nodeType": "PragmaDirective", "src": "64:19:55", "nodes": [], @@ -723,103 +723,103 @@ ] }, { - "id": 47926, + "id": 47923, "nodeType": "ImportDirective", "src": "85:57:55", "nodes": [], "absolutePath": "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", "file": "v3-core/contracts/interfaces/IUniswapV3Pool.sol", "nameLocation": "-1:-1:-1", - "scope": 48321, + "scope": 48318, "sourceUnit": 43895, "symbolAliases": [], "unitAlias": "" }, { - "id": 47927, + "id": 47924, "nodeType": "ImportDirective", "src": "143:55:55", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 48321, + "scope": 48318, "sourceUnit": 43479, "symbolAliases": [], "unitAlias": "" }, { - "id": 47928, + "id": 47925, "nodeType": "ImportDirective", "src": "199:24:55", "nodes": [], "absolutePath": "src/OrderLib.sol", "file": "./OrderLib.sol", "nameLocation": "-1:-1:-1", - "scope": 48321, - "sourceUnit": 47923, + "scope": 48318, + "sourceUnit": 47920, "symbolAliases": [], "unitAlias": "" }, { - "id": 47929, + "id": 47926, "nodeType": "ImportDirective", "src": "224:21:55", "nodes": [], "absolutePath": "src/Vault.sol", "file": "./Vault.sol", "nameLocation": "-1:-1:-1", - "scope": 48321, - "sourceUnit": 49182, + "scope": 48318, + "sourceUnit": 49179, "symbolAliases": [], "unitAlias": "" }, { - "id": 47930, + "id": 47927, "nodeType": "ImportDirective", "src": "246:29:55", "nodes": [], "absolutePath": "src/VaultDeployer.sol", "file": "./VaultDeployer.sol", "nameLocation": "-1:-1:-1", - "scope": 48321, - "sourceUnit": 49437, + "scope": 48318, + "sourceUnit": 49434, "symbolAliases": [], "unitAlias": "" }, { - "id": 47931, + "id": 47928, "nodeType": "ImportDirective", "src": "276:23:55", "nodes": [], "absolutePath": "src/Factory.sol", "file": "./Factory.sol", "nameLocation": "-1:-1:-1", - "scope": 48321, - "sourceUnit": 46431, + "scope": 48318, + "sourceUnit": 46428, "symbolAliases": [], "unitAlias": "" }, { - "id": 47932, + "id": 47929, "nodeType": "ImportDirective", "src": "300:32:55", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 48321, + "scope": 48318, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 48320, + "id": 48317, "nodeType": "ContractDefinition", "src": "335:3162:55", "nodes": [ { - "id": 47935, + "id": 47932, "nodeType": "VariableDeclaration", "src": "362:33:55", "nodes": [], @@ -828,7 +828,7 @@ "mutability": "constant", "name": "version", "nameLocation": "384:7:55", - "scope": 48320, + "scope": 48317, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -836,7 +836,7 @@ "typeString": "uint8" }, "typeName": { - "id": 47933, + "id": 47930, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "362:5:55", @@ -847,7 +847,7 @@ }, "value": { "hexValue": "31", - "id": 47934, + "id": 47931, "isConstant": false, "isLValue": false, "isPure": true, @@ -864,7 +864,7 @@ "visibility": "public" }, { - "id": 47942, + "id": 47939, "nodeType": "VariableDeclaration", "src": "401:56:55", "nodes": [], @@ -873,7 +873,7 @@ "mutability": "constant", "name": "UNKNOWN_DECIMALS", "nameLocation": "423:16:55", - "scope": 48320, + "scope": 48317, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -881,7 +881,7 @@ "typeString": "uint8" }, "typeName": { - "id": 47936, + "id": 47933, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "401:5:55", @@ -894,7 +894,7 @@ "expression": { "arguments": [ { - "id": 47939, + "id": 47936, "isConstant": false, "isLValue": false, "isPure": true, @@ -906,7 +906,7 @@ "typeString": "type(uint8)" }, "typeName": { - "id": 47938, + "id": 47935, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "447:5:55", @@ -921,7 +921,7 @@ "typeString": "type(uint8)" } ], - "id": 47937, + "id": 47934, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -932,7 +932,7 @@ "typeString": "function () pure" } }, - "id": 47940, + "id": 47937, "isConstant": false, "isLValue": false, "isPure": true, @@ -948,7 +948,7 @@ "typeString": "type(uint8)" } }, - "id": 47941, + "id": 47938, "isConstant": false, "isLValue": false, "isPure": true, @@ -965,12 +965,12 @@ "visibility": "public" }, { - "id": 48054, + "id": 48051, "nodeType": "FunctionDefinition", "src": "464:778:55", "nodes": [], "body": { - "id": 48053, + "id": 48050, "nodeType": "Block", "src": "628:614:55", "nodes": [], @@ -983,25 +983,25 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47964, + "id": 47961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 47957, + "id": 47954, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47947, + "referencedDeclaration": 47944, "src": "646:6:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 47958, + "id": 47955, "isConstant": false, "isLValue": false, "isPure": false, @@ -1021,7 +1021,7 @@ "expression": { "arguments": [ { - "id": 47961, + "id": 47958, "isConstant": false, "isLValue": false, "isPure": true, @@ -1033,7 +1033,7 @@ "typeString": "type(uint16)" }, "typeName": { - "id": 47960, + "id": 47957, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "667:6:55", @@ -1048,7 +1048,7 @@ "typeString": "type(uint16)" } ], - "id": 47959, + "id": 47956, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1059,7 +1059,7 @@ "typeString": "function () pure" } }, - "id": 47962, + "id": 47959, "isConstant": false, "isLValue": false, "isPure": true, @@ -1075,7 +1075,7 @@ "typeString": "type(uint16)" } }, - "id": 47963, + "id": 47960, "isConstant": false, "isLValue": false, "isPure": true, @@ -1103,7 +1103,7 @@ "typeString": "bool" } ], - "id": 47956, + "id": 47953, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1117,7 +1117,7 @@ "typeString": "function (bool) pure" } }, - "id": 47965, + "id": 47962, "isConstant": false, "isLValue": false, "isPure": false, @@ -1133,23 +1133,23 @@ "typeString": "tuple()" } }, - "id": 47966, + "id": 47963, "nodeType": "ExpressionStatement", "src": "638:41:55" }, { "expression": { - "id": 47974, + "id": 47971, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 47967, + "id": 47964, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47951, + "referencedDeclaration": 47948, "src": "689:8:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -1162,18 +1162,18 @@ "arguments": [ { "expression": { - "id": 47971, + "id": 47968, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47947, + "referencedDeclaration": 47944, "src": "714:6:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 47972, + "id": 47969, "isConstant": false, "isLValue": false, "isPure": false, @@ -1195,7 +1195,7 @@ "typeString": "uint256" } ], - "id": 47970, + "id": 47967, "isConstant": false, "isLValue": false, "isPure": true, @@ -1208,7 +1208,7 @@ }, "typeName": { "baseType": { - "id": 47968, + "id": 47965, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "704:7:55", @@ -1217,7 +1217,7 @@ "typeString": "uint256" } }, - "id": 47969, + "id": 47966, "nodeType": "ArrayTypeName", "src": "704:9:55", "typeDescriptions": { @@ -1226,7 +1226,7 @@ } } }, - "id": 47973, + "id": 47970, "isConstant": false, "isLValue": false, "isPure": false, @@ -1248,23 +1248,23 @@ "typeString": "uint256[] memory" } }, - "id": 47975, + "id": 47972, "nodeType": "ExpressionStatement", "src": "689:39:55" }, { "expression": { - "id": 47983, + "id": 47980, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 47976, + "id": 47973, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47954, + "referencedDeclaration": 47951, "src": "738:8:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -1277,18 +1277,18 @@ "arguments": [ { "expression": { - "id": 47980, + "id": 47977, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47947, + "referencedDeclaration": 47944, "src": "763:6:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 47981, + "id": 47978, "isConstant": false, "isLValue": false, "isPure": false, @@ -1310,7 +1310,7 @@ "typeString": "uint256" } ], - "id": 47979, + "id": 47976, "isConstant": false, "isLValue": false, "isPure": true, @@ -1323,7 +1323,7 @@ }, "typeName": { "baseType": { - "id": 47977, + "id": 47974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "753:7:55", @@ -1332,7 +1332,7 @@ "typeString": "uint256" } }, - "id": 47978, + "id": 47975, "nodeType": "ArrayTypeName", "src": "753:9:55", "typeDescriptions": { @@ -1341,7 +1341,7 @@ } } }, - "id": 47982, + "id": 47979, "isConstant": false, "isLValue": false, "isPure": false, @@ -1363,13 +1363,13 @@ "typeString": "uint256[] memory" } }, - "id": 47984, + "id": 47981, "nodeType": "ExpressionStatement", "src": "738:39:55" }, { "body": { - "id": 48051, + "id": 48048, "nodeType": "Block", "src": "829:407:55", "statements": [ @@ -1377,37 +1377,37 @@ "clauses": [ { "block": { - "id": 48013, + "id": 48010, "nodeType": "Block", "src": "908:54:55", "statements": [ { "expression": { - "id": 48011, + "id": 48008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48007, + "id": 48004, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47951, + "referencedDeclaration": 47948, "src": "926:8:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 48009, + "id": 48006, "indexExpression": { - "id": 48008, + "id": 48005, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47986, + "referencedDeclaration": 47983, "src": "935:1:55", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -1428,11 +1428,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48010, + "id": 48007, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48005, + "referencedDeclaration": 48002, "src": "940:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1445,27 +1445,27 @@ "typeString": "uint256" } }, - "id": 48012, + "id": 48009, "nodeType": "ExpressionStatement", "src": "926:21:55" } ] }, "errorName": "", - "id": 48014, + "id": 48011, "nodeType": "TryCatchClause", "parameters": { - "id": 48006, + "id": 48003, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48005, + "id": 48002, "mutability": "mutable", "name": "balance", "nameLocation": "899:7:55", "nodeType": "VariableDeclaration", - "scope": 48014, + "scope": 48011, "src": "891:15:55", "stateVariable": false, "storageLocation": "default", @@ -1474,7 +1474,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48004, + "id": 48001, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "891:7:55", @@ -1492,37 +1492,37 @@ }, { "block": { - "id": 48021, + "id": 48018, "nodeType": "Block", "src": "981:48:55", "statements": [ { "expression": { - "id": 48019, + "id": 48016, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48015, + "id": 48012, "name": "balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47951, + "referencedDeclaration": 47948, "src": "999:8:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 48017, + "id": 48014, "indexExpression": { - "id": 48016, + "id": 48013, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47986, + "referencedDeclaration": 47983, "src": "1008:1:55", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -1544,7 +1544,7 @@ "operator": "=", "rightHandSide": { "hexValue": "30", - "id": 48018, + "id": 48015, "isConstant": false, "isLValue": false, "isPure": true, @@ -1564,14 +1564,14 @@ "typeString": "uint256" } }, - "id": 48020, + "id": 48017, "nodeType": "ExpressionStatement", "src": "999:15:55" } ] }, "errorName": "", - "id": 48022, + "id": 48019, "nodeType": "TryCatchClause", "src": "975:54:55" } @@ -1579,11 +1579,11 @@ "externalCall": { "arguments": [ { - "id": 48002, + "id": 47999, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47944, + "referencedDeclaration": 47941, "src": "875:5:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1602,24 +1602,24 @@ "arguments": [ { "baseExpression": { - "id": 47997, + "id": 47994, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47947, + "referencedDeclaration": 47944, "src": "854:6:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 47999, + "id": 47996, "indexExpression": { - "id": 47998, + "id": 47995, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47986, + "referencedDeclaration": 47983, "src": "861:1:55", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -1645,7 +1645,7 @@ "typeString": "address" } ], - "id": 47996, + "id": 47993, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1656,7 +1656,7 @@ "typeString": "type(contract IERC20)" } }, - "id": 48000, + "id": 47997, "isConstant": false, "isLValue": false, "isPure": false, @@ -1672,7 +1672,7 @@ "typeString": "contract IERC20" } }, - "id": 48001, + "id": 47998, "isConstant": false, "isLValue": false, "isPure": false, @@ -1687,7 +1687,7 @@ "typeString": "function (address) view external returns (uint256)" } }, - "id": 48003, + "id": 48000, "isConstant": false, "isLValue": false, "isPure": false, @@ -1703,7 +1703,7 @@ "typeString": "uint256" } }, - "id": 48023, + "id": 48020, "nodeType": "TryStatement", "src": "843:186:55" }, @@ -1711,37 +1711,37 @@ "clauses": [ { "block": { - "id": 48040, + "id": 48037, "nodeType": "Block", "src": "1094:50:55", "statements": [ { "expression": { - "id": 48038, + "id": 48035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48034, + "id": 48031, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47954, + "referencedDeclaration": 47951, "src": "1112:8:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 48036, + "id": 48033, "indexExpression": { - "id": 48035, + "id": 48032, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47986, + "referencedDeclaration": 47983, "src": "1121:1:55", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -1762,11 +1762,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48037, + "id": 48034, "name": "dec", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48032, + "referencedDeclaration": 48029, "src": "1126:3:55", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1779,27 +1779,27 @@ "typeString": "uint256" } }, - "id": 48039, + "id": 48036, "nodeType": "ExpressionStatement", "src": "1112:17:55" } ] }, "errorName": "", - "id": 48041, + "id": 48038, "nodeType": "TryCatchClause", "parameters": { - "id": 48033, + "id": 48030, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48032, + "id": 48029, "mutability": "mutable", "name": "dec", "nameLocation": "1089:3:55", "nodeType": "VariableDeclaration", - "scope": 48041, + "scope": 48038, "src": "1083:9:55", "stateVariable": false, "storageLocation": "default", @@ -1808,7 +1808,7 @@ "typeString": "uint8" }, "typeName": { - "id": 48031, + "id": 48028, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1083:5:55", @@ -1826,37 +1826,37 @@ }, { "block": { - "id": 48048, + "id": 48045, "nodeType": "Block", "src": "1163:63:55", "statements": [ { "expression": { - "id": 48046, + "id": 48043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48042, + "id": 48039, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47954, + "referencedDeclaration": 47951, "src": "1181:8:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 48044, + "id": 48041, "indexExpression": { - "id": 48043, + "id": 48040, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47986, + "referencedDeclaration": 47983, "src": "1190:1:55", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -1877,11 +1877,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48045, + "id": 48042, "name": "UNKNOWN_DECIMALS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47942, + "referencedDeclaration": 47939, "src": "1195:16:55", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1894,14 +1894,14 @@ "typeString": "uint256" } }, - "id": 48047, + "id": 48044, "nodeType": "ExpressionStatement", "src": "1181:30:55" } ] }, "errorName": "", - "id": 48049, + "id": 48046, "nodeType": "TryCatchClause", "src": "1157:69:55" } @@ -1914,24 +1914,24 @@ "arguments": [ { "baseExpression": { - "id": 48025, + "id": 48022, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47947, + "referencedDeclaration": 47944, "src": "1052:6:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 48027, + "id": 48024, "indexExpression": { - "id": 48026, + "id": 48023, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47986, + "referencedDeclaration": 47983, "src": "1059:1:55", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -1957,7 +1957,7 @@ "typeString": "address" } ], - "id": 48024, + "id": 48021, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1968,7 +1968,7 @@ "typeString": "type(contract ERC20)" } }, - "id": 48028, + "id": 48025, "isConstant": false, "isLValue": false, "isPure": false, @@ -1984,7 +1984,7 @@ "typeString": "contract ERC20" } }, - "id": 48029, + "id": 48026, "isConstant": false, "isLValue": false, "isPure": false, @@ -1999,7 +1999,7 @@ "typeString": "function () view external returns (uint8)" } }, - "id": 48030, + "id": 48027, "isConstant": false, "isLValue": false, "isPure": false, @@ -2015,7 +2015,7 @@ "typeString": "uint8" } }, - "id": 48050, + "id": 48047, "nodeType": "TryStatement", "src": "1042:184:55" } @@ -2026,17 +2026,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 47992, + "id": 47989, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 47989, + "id": 47986, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47986, + "referencedDeclaration": 47983, "src": "804:1:55", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -2047,18 +2047,18 @@ "operator": "<", "rightExpression": { "expression": { - "id": 47990, + "id": 47987, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47947, + "referencedDeclaration": 47944, "src": "808:6:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 47991, + "id": 47988, "isConstant": false, "isLValue": false, "isPure": false, @@ -2078,20 +2078,20 @@ "typeString": "bool" } }, - "id": 48052, + "id": 48049, "initializationExpression": { "assignments": [ - 47986 + 47983 ], "declarations": [ { "constant": false, - "id": 47986, + "id": 47983, "mutability": "mutable", "name": "i", "nameLocation": "799:1:55", "nodeType": "VariableDeclaration", - "scope": 48052, + "scope": 48049, "src": "792:8:55", "stateVariable": false, "storageLocation": "default", @@ -2100,7 +2100,7 @@ "typeString": "uint16" }, "typeName": { - "id": 47985, + "id": 47982, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "792:6:55", @@ -2112,10 +2112,10 @@ "visibility": "internal" } ], - "id": 47988, + "id": 47985, "initialValue": { "hexValue": "30", - "id": 47987, + "id": 47984, "isConstant": false, "isLValue": false, "isPure": true, @@ -2135,7 +2135,7 @@ "isSimpleCounterLoop": false, "loopExpression": { "expression": { - "id": 47994, + "id": 47991, "isConstant": false, "isLValue": false, "isPure": false, @@ -2145,11 +2145,11 @@ "prefix": false, "src": "823:3:55", "subExpression": { - "id": 47993, + "id": 47990, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47986, + "referencedDeclaration": 47983, "src": "823:1:55", "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -2161,7 +2161,7 @@ "typeString": "uint16" } }, - "id": 47995, + "id": 47992, "nodeType": "ExpressionStatement", "src": "823:3:55" }, @@ -2177,17 +2177,17 @@ "name": "getBalances", "nameLocation": "473:11:55", "parameters": { - "id": 47948, + "id": 47945, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 47944, + "id": 47941, "mutability": "mutable", "name": "vault", "nameLocation": "494:5:55", "nodeType": "VariableDeclaration", - "scope": 48054, + "scope": 48051, "src": "486:13:55", "stateVariable": false, "storageLocation": "default", @@ -2196,7 +2196,7 @@ "typeString": "address" }, "typeName": { - "id": 47943, + "id": 47940, "name": "address", "nodeType": "ElementaryTypeName", "src": "486:7:55", @@ -2210,12 +2210,12 @@ }, { "constant": false, - "id": 47947, + "id": 47944, "mutability": "mutable", "name": "tokens", "nameLocation": "518:6:55", "nodeType": "VariableDeclaration", - "scope": 48054, + "scope": 48051, "src": "501:23:55", "stateVariable": false, "storageLocation": "memory", @@ -2225,7 +2225,7 @@ }, "typeName": { "baseType": { - "id": 47945, + "id": 47942, "name": "address", "nodeType": "ElementaryTypeName", "src": "501:7:55", @@ -2235,7 +2235,7 @@ "typeString": "address" } }, - "id": 47946, + "id": 47943, "nodeType": "ArrayTypeName", "src": "501:9:55", "typeDescriptions": { @@ -2249,17 +2249,17 @@ "src": "484:42:55" }, "returnParameters": { - "id": 47955, + "id": 47952, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 47951, + "id": 47948, "mutability": "mutable", "name": "balances", "nameLocation": "578:8:55", "nodeType": "VariableDeclaration", - "scope": 48054, + "scope": 48051, "src": "561:25:55", "stateVariable": false, "storageLocation": "memory", @@ -2269,7 +2269,7 @@ }, "typeName": { "baseType": { - "id": 47949, + "id": 47946, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "561:7:55", @@ -2278,7 +2278,7 @@ "typeString": "uint256" } }, - "id": 47950, + "id": 47947, "nodeType": "ArrayTypeName", "src": "561:9:55", "typeDescriptions": { @@ -2290,12 +2290,12 @@ }, { "constant": false, - "id": 47954, + "id": 47951, "mutability": "mutable", "name": "decimals", "nameLocation": "613:8:55", "nodeType": "VariableDeclaration", - "scope": 48054, + "scope": 48051, "src": "596:25:55", "stateVariable": false, "storageLocation": "memory", @@ -2305,7 +2305,7 @@ }, "typeName": { "baseType": { - "id": 47952, + "id": 47949, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "596:7:55", @@ -2314,7 +2314,7 @@ "typeString": "uint256" } }, - "id": 47953, + "id": 47950, "nodeType": "ArrayTypeName", "src": "596:9:55", "typeDescriptions": { @@ -2327,13 +2327,13 @@ ], "src": "551:76:55" }, - "scope": 48320, + "scope": 48317, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 48062, + "id": 48059, "nodeType": "StructDefinition", "src": "1248:105:55", "nodes": [], @@ -2341,37 +2341,37 @@ "members": [ { "constant": false, - "id": 48057, + "id": 48054, "mutability": "mutable", "name": "exchange", "nameLocation": "1296:8:55", "nodeType": "VariableDeclaration", - "scope": 48062, + "scope": 48059, "src": "1278:26:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, "typeName": { - "id": 48056, + "id": 48053, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48055, + "id": 48052, "name": "OrderLib.Exchange", "nameLocations": [ "1278:8:55", "1287:8:55" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "1278:17:55" }, - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "1278:17:55", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, @@ -2379,12 +2379,12 @@ }, { "constant": false, - "id": 48059, + "id": 48056, "mutability": "mutable", "name": "fee", "nameLocation": "1321:3:55", "nodeType": "VariableDeclaration", - "scope": 48062, + "scope": 48059, "src": "1314:10:55", "stateVariable": false, "storageLocation": "default", @@ -2393,7 +2393,7 @@ "typeString": "uint24" }, "typeName": { - "id": 48058, + "id": 48055, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "1314:6:55", @@ -2406,12 +2406,12 @@ }, { "constant": false, - "id": 48061, + "id": 48058, "mutability": "mutable", "name": "pool", "nameLocation": "1342:4:55", "nodeType": "VariableDeclaration", - "scope": 48062, + "scope": 48059, "src": "1334:12:55", "stateVariable": false, "storageLocation": "default", @@ -2420,7 +2420,7 @@ "typeString": "address" }, "typeName": { - "id": 48060, + "id": 48057, "name": "address", "nodeType": "ElementaryTypeName", "src": "1334:7:55", @@ -2435,16 +2435,16 @@ ], "name": "RoutesResult", "nameLocation": "1255:12:55", - "scope": 48320, + "scope": 48317, "visibility": "public" }, { - "id": 48295, + "id": 48292, "nodeType": "FunctionDefinition", "src": "1359:1928:55", "nodes": [], "body": { - "id": 48294, + "id": 48291, "nodeType": "Block", "src": "1466:1821:55", "nodes": [], @@ -2454,7 +2454,7 @@ "arguments": [ { "hexValue": "676574526f75746573", - "id": 48076, + "id": 48073, "isConstant": false, "isLValue": false, "isPure": true, @@ -2477,7 +2477,7 @@ } ], "expression": { - "id": 48073, + "id": 48070, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2488,7 +2488,7 @@ "typeString": "type(library console2)" } }, - "id": 48075, + "id": 48072, "isConstant": false, "isLValue": false, "isPure": false, @@ -2503,7 +2503,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48077, + "id": 48074, "isConstant": false, "isLValue": false, "isPure": false, @@ -2519,7 +2519,7 @@ "typeString": "tuple()" } }, - "id": 48078, + "id": 48075, "nodeType": "ExpressionStatement", "src": "1521:25:55" }, @@ -2527,11 +2527,11 @@ "expression": { "arguments": [ { - "id": 48082, + "id": 48079, "name": "tokenA", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48064, + "referencedDeclaration": 48061, "src": "1569:6:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2547,7 +2547,7 @@ } ], "expression": { - "id": 48079, + "id": 48076, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2558,7 +2558,7 @@ "typeString": "type(library console2)" } }, - "id": 48081, + "id": 48078, "isConstant": false, "isLValue": false, "isPure": false, @@ -2573,7 +2573,7 @@ "typeString": "function (address) pure" } }, - "id": 48083, + "id": 48080, "isConstant": false, "isLValue": false, "isPure": false, @@ -2589,7 +2589,7 @@ "typeString": "tuple()" } }, - "id": 48084, + "id": 48081, "nodeType": "ExpressionStatement", "src": "1556:20:55" }, @@ -2597,11 +2597,11 @@ "expression": { "arguments": [ { - "id": 48088, + "id": 48085, "name": "tokenB", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48066, + "referencedDeclaration": 48063, "src": "1599:6:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2617,7 +2617,7 @@ } ], "expression": { - "id": 48085, + "id": 48082, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2628,7 +2628,7 @@ "typeString": "type(library console2)" } }, - "id": 48087, + "id": 48084, "isConstant": false, "isLValue": false, "isPure": false, @@ -2643,7 +2643,7 @@ "typeString": "function (address) pure" } }, - "id": 48089, + "id": 48086, "isConstant": false, "isLValue": false, "isPure": false, @@ -2659,23 +2659,23 @@ "typeString": "tuple()" } }, - "id": 48090, + "id": 48087, "nodeType": "ExpressionStatement", "src": "1586:20:55" }, { "assignments": [ - 48096 + 48093 ], "declarations": [ { "constant": false, - "id": 48096, + "id": 48093, "mutability": "mutable", "name": "fees", "nameLocation": "1702:4:55", "nodeType": "VariableDeclaration", - "scope": 48294, + "scope": 48291, "src": "1685:21:55", "stateVariable": false, "storageLocation": "memory", @@ -2685,7 +2685,7 @@ }, "typeName": { "baseType": { - "id": 48094, + "id": 48091, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "1685:6:55", @@ -2694,10 +2694,10 @@ "typeString": "uint24" } }, - "id": 48095, + "id": 48092, "length": { "hexValue": "34", - "id": 48093, + "id": 48090, "isConstant": false, "isLValue": false, "isPure": true, @@ -2721,14 +2721,14 @@ "visibility": "internal" } ], - "id": 48105, + "id": 48102, "initialValue": { "components": [ { "arguments": [ { "hexValue": "313030", - "id": 48099, + "id": 48096, "isConstant": false, "isLValue": false, "isPure": true, @@ -2750,7 +2750,7 @@ "typeString": "int_const 100" } ], - "id": 48098, + "id": 48095, "isConstant": false, "isLValue": false, "isPure": true, @@ -2762,14 +2762,14 @@ "typeString": "type(uint24)" }, "typeName": { - "id": 48097, + "id": 48094, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "1710:6:55", "typeDescriptions": {} } }, - "id": 48100, + "id": 48097, "isConstant": false, "isLValue": false, "isPure": true, @@ -2787,7 +2787,7 @@ }, { "hexValue": "353030", - "id": 48101, + "id": 48098, "isConstant": false, "isLValue": false, "isPure": true, @@ -2803,7 +2803,7 @@ }, { "hexValue": "33303030", - "id": 48102, + "id": 48099, "isConstant": false, "isLValue": false, "isPure": true, @@ -2819,7 +2819,7 @@ }, { "hexValue": "3130303030", - "id": 48103, + "id": 48100, "isConstant": false, "isLValue": false, "isPure": true, @@ -2834,7 +2834,7 @@ "value": "10000" } ], - "id": 48104, + "id": 48101, "isConstant": false, "isInlineArray": true, "isLValue": false, @@ -2852,17 +2852,17 @@ }, { "assignments": [ - 48107 + 48104 ], "declarations": [ { "constant": false, - "id": 48107, + "id": 48104, "mutability": "mutable", "name": "uniswapV2Fee", "nameLocation": "1754:12:55", "nodeType": "VariableDeclaration", - "scope": 48294, + "scope": 48291, "src": "1747:19:55", "stateVariable": false, "storageLocation": "default", @@ -2871,7 +2871,7 @@ "typeString": "uint24" }, "typeName": { - "id": 48106, + "id": 48103, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "1747:6:55", @@ -2883,10 +2883,10 @@ "visibility": "internal" } ], - "id": 48109, + "id": 48106, "initialValue": { "hexValue": "30", - "id": 48108, + "id": 48105, "isConstant": false, "isLValue": false, "isPure": true, @@ -2905,17 +2905,17 @@ }, { "assignments": [ - 48111 + 48108 ], "declarations": [ { "constant": false, - "id": 48111, + "id": 48108, "mutability": "mutable", "name": "uniswapV3Fee", "nameLocation": "1875:12:55", "nodeType": "VariableDeclaration", - "scope": 48294, + "scope": 48291, "src": "1868:19:55", "stateVariable": false, "storageLocation": "default", @@ -2924,7 +2924,7 @@ "typeString": "uint24" }, "typeName": { - "id": 48110, + "id": 48107, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "1868:6:55", @@ -2936,10 +2936,10 @@ "visibility": "internal" } ], - "id": 48113, + "id": 48110, "initialValue": { "hexValue": "30", - "id": 48112, + "id": 48109, "isConstant": false, "isLValue": false, "isPure": true, @@ -2958,17 +2958,17 @@ }, { "assignments": [ - 48115 + 48112 ], "declarations": [ { "constant": false, - "id": 48115, + "id": 48112, "mutability": "mutable", "name": "uniswapV3Liquidity", "nameLocation": "1909:18:55", "nodeType": "VariableDeclaration", - "scope": 48294, + "scope": 48291, "src": "1901:26:55", "stateVariable": false, "storageLocation": "default", @@ -2977,7 +2977,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48114, + "id": 48111, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1901:7:55", @@ -2989,10 +2989,10 @@ "visibility": "internal" } ], - "id": 48117, + "id": 48114, "initialValue": { "hexValue": "30", - "id": 48116, + "id": 48113, "isConstant": false, "isLValue": false, "isPure": true, @@ -3011,17 +3011,17 @@ }, { "assignments": [ - 48119 + 48116 ], "declarations": [ { "constant": false, - "id": 48119, + "id": 48116, "mutability": "mutable", "name": "uniswapV3Pool", "nameLocation": "1949:13:55", "nodeType": "VariableDeclaration", - "scope": 48294, + "scope": 48291, "src": "1941:21:55", "stateVariable": false, "storageLocation": "default", @@ -3030,7 +3030,7 @@ "typeString": "address" }, "typeName": { - "id": 48118, + "id": 48115, "name": "address", "nodeType": "ElementaryTypeName", "src": "1941:7:55", @@ -3043,12 +3043,12 @@ "visibility": "internal" } ], - "id": 48124, + "id": 48121, "initialValue": { "arguments": [ { "hexValue": "30", - "id": 48122, + "id": 48119, "isConstant": false, "isLValue": false, "isPure": true, @@ -3070,7 +3070,7 @@ "typeString": "int_const 0" } ], - "id": 48121, + "id": 48118, "isConstant": false, "isLValue": false, "isPure": true, @@ -3082,14 +3082,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48120, + "id": 48117, "name": "address", "nodeType": "ElementaryTypeName", "src": "1965:7:55", "typeDescriptions": {} } }, - "id": 48123, + "id": 48120, "isConstant": false, "isLValue": false, "isPure": true, @@ -3110,17 +3110,17 @@ }, { "assignments": [ - 48127 + 48124 ], "declarations": [ { "constant": false, - "id": 48127, + "id": 48124, "mutability": "mutable", "name": "ercA", "nameLocation": "1992:4:55", "nodeType": "VariableDeclaration", - "scope": 48294, + "scope": 48291, "src": "1985:11:55", "stateVariable": false, "storageLocation": "default", @@ -3129,10 +3129,10 @@ "typeString": "contract IERC20" }, "typeName": { - "id": 48126, + "id": 48123, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48125, + "id": 48122, "name": "IERC20", "nameLocations": [ "1985:6:55" @@ -3151,15 +3151,15 @@ "visibility": "internal" } ], - "id": 48131, + "id": 48128, "initialValue": { "arguments": [ { - "id": 48129, + "id": 48126, "name": "tokenA", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48064, + "referencedDeclaration": 48061, "src": "2006:6:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3174,7 +3174,7 @@ "typeString": "address" } ], - "id": 48128, + "id": 48125, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3185,7 +3185,7 @@ "typeString": "type(contract IERC20)" } }, - "id": 48130, + "id": 48127, "isConstant": false, "isLValue": false, "isPure": false, @@ -3206,7 +3206,7 @@ }, { "body": { - "id": 48230, + "id": 48227, "nodeType": "Block", "src": "2050:829:55", "statements": [ @@ -3215,7 +3215,7 @@ "arguments": [ { "hexValue": "676574506f6f6c2e2e", - "id": 48145, + "id": 48142, "isConstant": false, "isLValue": false, "isPure": true, @@ -3238,7 +3238,7 @@ } ], "expression": { - "id": 48142, + "id": 48139, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3249,7 +3249,7 @@ "typeString": "type(library console2)" } }, - "id": 48144, + "id": 48141, "isConstant": false, "isLValue": false, "isPure": false, @@ -3264,7 +3264,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48146, + "id": 48143, "isConstant": false, "isLValue": false, "isPure": false, @@ -3280,23 +3280,23 @@ "typeString": "tuple()" } }, - "id": 48147, + "id": 48144, "nodeType": "ExpressionStatement", "src": "2064:25:55" }, { "assignments": [ - 48149 + 48146 ], "declarations": [ { "constant": false, - "id": 48149, + "id": 48146, "mutability": "mutable", "name": "fee", "nameLocation": "2110:3:55", "nodeType": "VariableDeclaration", - "scope": 48230, + "scope": 48227, "src": "2103:10:55", "stateVariable": false, "storageLocation": "default", @@ -3305,7 +3305,7 @@ "typeString": "uint24" }, "typeName": { - "id": 48148, + "id": 48145, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "2103:6:55", @@ -3317,27 +3317,27 @@ "visibility": "internal" } ], - "id": 48153, + "id": 48150, "initialValue": { "baseExpression": { - "id": 48150, + "id": 48147, "name": "fees", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48096, + "referencedDeclaration": 48093, "src": "2116:4:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint24_$4_memory_ptr", "typeString": "uint24[4] memory" } }, - "id": 48152, + "id": 48149, "indexExpression": { - "id": 48151, + "id": 48148, "name": "f", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48133, + "referencedDeclaration": 48130, "src": "2121:1:55", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -3360,17 +3360,17 @@ }, { "assignments": [ - 48156 + 48153 ], "declarations": [ { "constant": false, - "id": 48156, + "id": 48153, "mutability": "mutable", "name": "pool", "nameLocation": "2152:4:55", "nodeType": "VariableDeclaration", - "scope": 48230, + "scope": 48227, "src": "2137:19:55", "stateVariable": false, "storageLocation": "default", @@ -3379,10 +3379,10 @@ "typeString": "contract IUniswapV3Pool" }, "typeName": { - "id": 48155, + "id": 48152, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48154, + "id": 48151, "name": "IUniswapV3Pool", "nameLocations": [ "2137:14:55" @@ -3401,17 +3401,17 @@ "visibility": "internal" } ], - "id": 48166, + "id": 48163, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48161, + "id": 48158, "name": "tokenA", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48064, + "referencedDeclaration": 48061, "src": "2209:6:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3419,11 +3419,11 @@ } }, { - "id": 48162, + "id": 48159, "name": "tokenB", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48066, + "referencedDeclaration": 48063, "src": "2217:6:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3431,11 +3431,11 @@ } }, { - "id": 48163, + "id": 48160, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48149, + "referencedDeclaration": 48146, "src": "2225:3:55", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -3460,18 +3460,18 @@ ], "expression": { "expression": { - "id": 48158, + "id": 48155, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "2174:9:55", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48159, + "id": 48156, "isConstant": false, "isLValue": false, "isPure": true, @@ -3486,7 +3486,7 @@ "typeString": "contract IUniswapV3Factory" } }, - "id": 48160, + "id": 48157, "isConstant": false, "isLValue": false, "isPure": false, @@ -3501,7 +3501,7 @@ "typeString": "function (address,address,uint24) view external returns (address)" } }, - "id": 48164, + "id": 48161, "isConstant": false, "isLValue": false, "isPure": false, @@ -3525,7 +3525,7 @@ "typeString": "address" } ], - "id": 48157, + "id": 48154, "name": "IUniswapV3Pool", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3536,7 +3536,7 @@ "typeString": "type(contract IUniswapV3Pool)" } }, - "id": 48165, + "id": 48162, "isConstant": false, "isLValue": false, "isPure": false, @@ -3561,7 +3561,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 48175, + "id": 48172, "isConstant": false, "isLValue": false, "isPure": false, @@ -3569,11 +3569,11 @@ "leftExpression": { "arguments": [ { - "id": 48169, + "id": 48166, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48156, + "referencedDeclaration": 48153, "src": "2256:4:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", @@ -3588,7 +3588,7 @@ "typeString": "contract IUniswapV3Pool" } ], - "id": 48168, + "id": 48165, "isConstant": false, "isLValue": false, "isPure": true, @@ -3600,14 +3600,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48167, + "id": 48164, "name": "address", "nodeType": "ElementaryTypeName", "src": "2248:7:55", "typeDescriptions": {} } }, - "id": 48170, + "id": 48167, "isConstant": false, "isLValue": false, "isPure": false, @@ -3629,7 +3629,7 @@ "arguments": [ { "hexValue": "30", - "id": 48173, + "id": 48170, "isConstant": false, "isLValue": false, "isPure": true, @@ -3651,7 +3651,7 @@ "typeString": "int_const 0" } ], - "id": 48172, + "id": 48169, "isConstant": false, "isLValue": false, "isPure": true, @@ -3663,14 +3663,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48171, + "id": 48168, "name": "address", "nodeType": "ElementaryTypeName", "src": "2265:7:55", "typeDescriptions": {} } }, - "id": 48174, + "id": 48171, "isConstant": false, "isLValue": false, "isPure": true, @@ -3692,11 +3692,11 @@ "typeString": "bool" } }, - "id": 48184, + "id": 48181, "nodeType": "IfStatement", "src": "2244:116:55", "trueBody": { - "id": 48183, + "id": 48180, "nodeType": "Block", "src": "2278:82:55", "statements": [ @@ -3705,7 +3705,7 @@ "arguments": [ { "hexValue": "6e6f20706f6f6c", - "id": 48179, + "id": 48176, "isConstant": false, "isLValue": false, "isPure": true, @@ -3728,7 +3728,7 @@ } ], "expression": { - "id": 48176, + "id": 48173, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3739,7 +3739,7 @@ "typeString": "type(library console2)" } }, - "id": 48178, + "id": 48175, "isConstant": false, "isLValue": false, "isPure": false, @@ -3754,7 +3754,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48180, + "id": 48177, "isConstant": false, "isLValue": false, "isPure": false, @@ -3770,12 +3770,12 @@ "typeString": "tuple()" } }, - "id": 48181, + "id": 48178, "nodeType": "ExpressionStatement", "src": "2296:23:55" }, { - "id": 48182, + "id": 48179, "nodeType": "Continue", "src": "2337:8:55" } @@ -3787,7 +3787,7 @@ "arguments": [ { "hexValue": "676f74506f6f6c2e", - "id": 48188, + "id": 48185, "isConstant": false, "isLValue": false, "isPure": true, @@ -3810,7 +3810,7 @@ } ], "expression": { - "id": 48185, + "id": 48182, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3821,7 +3821,7 @@ "typeString": "type(library console2)" } }, - "id": 48187, + "id": 48184, "isConstant": false, "isLValue": false, "isPure": false, @@ -3836,7 +3836,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48189, + "id": 48186, "isConstant": false, "isLValue": false, "isPure": false, @@ -3852,7 +3852,7 @@ "typeString": "tuple()" } }, - "id": 48190, + "id": 48187, "nodeType": "ExpressionStatement", "src": "2373:24:55" }, @@ -3862,11 +3862,11 @@ { "arguments": [ { - "id": 48196, + "id": 48193, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48156, + "referencedDeclaration": 48153, "src": "2432:4:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", @@ -3881,7 +3881,7 @@ "typeString": "contract IUniswapV3Pool" } ], - "id": 48195, + "id": 48192, "isConstant": false, "isLValue": false, "isPure": true, @@ -3893,14 +3893,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48194, + "id": 48191, "name": "address", "nodeType": "ElementaryTypeName", "src": "2424:7:55", "typeDescriptions": {} } }, - "id": 48197, + "id": 48194, "isConstant": false, "isLValue": false, "isPure": false, @@ -3925,7 +3925,7 @@ } ], "expression": { - "id": 48191, + "id": 48188, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3936,7 +3936,7 @@ "typeString": "type(library console2)" } }, - "id": 48193, + "id": 48190, "isConstant": false, "isLValue": false, "isPure": false, @@ -3951,7 +3951,7 @@ "typeString": "function (address) pure" } }, - "id": 48198, + "id": 48195, "isConstant": false, "isLValue": false, "isPure": false, @@ -3967,23 +3967,23 @@ "typeString": "tuple()" } }, - "id": 48199, + "id": 48196, "nodeType": "ExpressionStatement", "src": "2411:27:55" }, { "assignments": [ - 48201 + 48198 ], "declarations": [ { "constant": false, - "id": 48201, + "id": 48198, "mutability": "mutable", "name": "liquidity", "nameLocation": "2631:9:55", "nodeType": "VariableDeclaration", - "scope": 48230, + "scope": 48227, "src": "2623:17:55", "stateVariable": false, "storageLocation": "default", @@ -3992,7 +3992,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48200, + "id": 48197, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2623:7:55", @@ -4004,17 +4004,17 @@ "visibility": "internal" } ], - "id": 48209, + "id": 48206, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48206, + "id": 48203, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48156, + "referencedDeclaration": 48153, "src": "2666:4:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", @@ -4029,7 +4029,7 @@ "typeString": "contract IUniswapV3Pool" } ], - "id": 48205, + "id": 48202, "isConstant": false, "isLValue": false, "isPure": true, @@ -4041,14 +4041,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48204, + "id": 48201, "name": "address", "nodeType": "ElementaryTypeName", "src": "2658:7:55", "typeDescriptions": {} } }, - "id": 48207, + "id": 48204, "isConstant": false, "isLValue": false, "isPure": false, @@ -4073,18 +4073,18 @@ } ], "expression": { - "id": 48202, + "id": 48199, "name": "ercA", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48127, + "referencedDeclaration": 48124, "src": "2643:4:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$43556", "typeString": "contract IERC20" } }, - "id": 48203, + "id": 48200, "isConstant": false, "isLValue": false, "isPure": false, @@ -4099,7 +4099,7 @@ "typeString": "function (address) view external returns (uint256)" } }, - "id": 48208, + "id": 48205, "isConstant": false, "isLValue": false, "isPure": false, @@ -4124,17 +4124,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48212, + "id": 48209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48210, + "id": 48207, "name": "liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48201, + "referencedDeclaration": 48198, "src": "2690:9:55", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4144,11 +4144,11 @@ "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { - "id": 48211, + "id": 48208, "name": "uniswapV3Liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48115, + "referencedDeclaration": 48112, "src": "2702:18:55", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4161,27 +4161,27 @@ "typeString": "bool" } }, - "id": 48229, + "id": 48226, "nodeType": "IfStatement", "src": "2686:183:55", "trueBody": { - "id": 48228, + "id": 48225, "nodeType": "Block", "src": "2723:146:55", "statements": [ { "expression": { - "id": 48215, + "id": 48212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48213, + "id": 48210, "name": "uniswapV3Fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48111, + "referencedDeclaration": 48108, "src": "2741:12:55", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -4191,11 +4191,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48214, + "id": 48211, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48149, + "referencedDeclaration": 48146, "src": "2756:3:55", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -4208,23 +4208,23 @@ "typeString": "uint24" } }, - "id": 48216, + "id": 48213, "nodeType": "ExpressionStatement", "src": "2741:18:55" }, { "expression": { - "id": 48219, + "id": 48216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48217, + "id": 48214, "name": "uniswapV3Liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48115, + "referencedDeclaration": 48112, "src": "2777:18:55", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4234,11 +4234,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48218, + "id": 48215, "name": "liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48201, + "referencedDeclaration": 48198, "src": "2798:9:55", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4251,23 +4251,23 @@ "typeString": "uint256" } }, - "id": 48220, + "id": 48217, "nodeType": "ExpressionStatement", "src": "2777:30:55" }, { "expression": { - "id": 48226, + "id": 48223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48221, + "id": 48218, "name": "uniswapV3Pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48119, + "referencedDeclaration": 48116, "src": "2825:13:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4279,11 +4279,11 @@ "rightHandSide": { "arguments": [ { - "id": 48224, + "id": 48221, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48156, + "referencedDeclaration": 48153, "src": "2849:4:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", @@ -4298,7 +4298,7 @@ "typeString": "contract IUniswapV3Pool" } ], - "id": 48223, + "id": 48220, "isConstant": false, "isLValue": false, "isPure": true, @@ -4310,14 +4310,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48222, + "id": 48219, "name": "address", "nodeType": "ElementaryTypeName", "src": "2841:7:55", "typeDescriptions": {} } }, - "id": 48225, + "id": 48222, "isConstant": false, "isLValue": false, "isPure": false, @@ -4339,7 +4339,7 @@ "typeString": "address" } }, - "id": 48227, + "id": 48224, "nodeType": "ExpressionStatement", "src": "2825:29:55" } @@ -4353,17 +4353,17 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 48138, + "id": 48135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48136, + "id": 48133, "name": "f", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48133, + "referencedDeclaration": 48130, "src": "2039:1:55", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -4374,7 +4374,7 @@ "operator": "<", "rightExpression": { "hexValue": "34", - "id": 48137, + "id": 48134, "isConstant": false, "isLValue": false, "isPure": true, @@ -4394,20 +4394,20 @@ "typeString": "bool" } }, - "id": 48231, + "id": 48228, "initializationExpression": { "assignments": [ - 48133 + 48130 ], "declarations": [ { "constant": false, - "id": 48133, + "id": 48130, "mutability": "mutable", "name": "f", "nameLocation": "2034:1:55", "nodeType": "VariableDeclaration", - "scope": 48231, + "scope": 48228, "src": "2028:7:55", "stateVariable": false, "storageLocation": "default", @@ -4416,7 +4416,7 @@ "typeString": "uint8" }, "typeName": { - "id": 48132, + "id": 48129, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2028:5:55", @@ -4428,10 +4428,10 @@ "visibility": "internal" } ], - "id": 48135, + "id": 48132, "initialValue": { "hexValue": "30", - "id": 48134, + "id": 48131, "isConstant": false, "isLValue": false, "isPure": true, @@ -4451,7 +4451,7 @@ "isSimpleCounterLoop": true, "loopExpression": { "expression": { - "id": 48140, + "id": 48137, "isConstant": false, "isLValue": false, "isPure": false, @@ -4461,11 +4461,11 @@ "prefix": false, "src": "2044:3:55", "subExpression": { - "id": 48139, + "id": 48136, "name": "f", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48133, + "referencedDeclaration": 48130, "src": "2044:1:55", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -4477,7 +4477,7 @@ "typeString": "uint8" } }, - "id": 48141, + "id": 48138, "nodeType": "ExpressionStatement", "src": "2044:3:55" }, @@ -4486,17 +4486,17 @@ }, { "assignments": [ - 48233 + 48230 ], "declarations": [ { "constant": false, - "id": 48233, + "id": 48230, "mutability": "mutable", "name": "routesCount", "nameLocation": "2894:11:55", "nodeType": "VariableDeclaration", - "scope": 48294, + "scope": 48291, "src": "2888:17:55", "stateVariable": false, "storageLocation": "default", @@ -4505,7 +4505,7 @@ "typeString": "uint8" }, "typeName": { - "id": 48232, + "id": 48229, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2888:5:55", @@ -4517,24 +4517,24 @@ "visibility": "internal" } ], - "id": 48247, + "id": 48244, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_uint24", "typeString": "uint24" }, - "id": 48236, + "id": 48233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48234, + "id": 48231, "name": "uniswapV3Fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48111, + "referencedDeclaration": 48108, "src": "2908:12:55", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -4545,7 +4545,7 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 48235, + "id": 48232, "isConstant": false, "isLValue": false, "isPure": true, @@ -4571,7 +4571,7 @@ "typeIdentifier": "t_uint24", "typeString": "uint24" }, - "id": 48242, + "id": 48239, "isConstant": false, "isLValue": false, "isPure": false, @@ -4581,14 +4581,14 @@ "typeIdentifier": "t_uint24", "typeString": "uint24" }, - "id": 48240, + "id": 48237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "30", - "id": 48238, + "id": 48235, "isConstant": false, "isLValue": false, "isPure": true, @@ -4605,11 +4605,11 @@ "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { - "id": 48239, + "id": 48236, "name": "uniswapV2Fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48107, + "referencedDeclaration": 48104, "src": "2935:12:55", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -4626,7 +4626,7 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 48241, + "id": 48238, "isConstant": false, "isLValue": false, "isPure": true, @@ -4648,7 +4648,7 @@ }, "falseExpression": { "hexValue": "30", - "id": 48244, + "id": 48241, "isConstant": false, "isLValue": false, "isPure": true, @@ -4662,7 +4662,7 @@ }, "value": "0" }, - "id": 48245, + "id": 48242, "isConstant": false, "isLValue": false, "isPure": false, @@ -4671,7 +4671,7 @@ "src": "2931:28:55", "trueExpression": { "hexValue": "31", - "id": 48243, + "id": 48240, "isConstant": false, "isLValue": false, "isPure": true, @@ -4690,7 +4690,7 @@ "typeString": "uint8" } }, - "id": 48246, + "id": 48243, "isConstant": false, "isLValue": false, "isPure": false, @@ -4699,7 +4699,7 @@ "src": "2908:51:55", "trueExpression": { "hexValue": "31", - "id": 48237, + "id": 48234, "isConstant": false, "isLValue": false, "isPure": true, @@ -4725,11 +4725,11 @@ "expression": { "arguments": [ { - "id": 48251, + "id": 48248, "name": "uniswapV3Pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48119, + "referencedDeclaration": 48116, "src": "2982:13:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4745,7 +4745,7 @@ } ], "expression": { - "id": 48248, + "id": 48245, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4756,7 +4756,7 @@ "typeString": "type(library console2)" } }, - "id": 48250, + "id": 48247, "isConstant": false, "isLValue": false, "isPure": false, @@ -4771,7 +4771,7 @@ "typeString": "function (address) pure" } }, - "id": 48252, + "id": 48249, "isConstant": false, "isLValue": false, "isPure": false, @@ -4787,7 +4787,7 @@ "typeString": "tuple()" } }, - "id": 48253, + "id": 48250, "nodeType": "ExpressionStatement", "src": "2969:27:55" }, @@ -4797,11 +4797,11 @@ { "arguments": [ { - "id": 48259, + "id": 48256, "name": "routesCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48233, + "referencedDeclaration": 48230, "src": "3024:11:55", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -4816,7 +4816,7 @@ "typeString": "uint8" } ], - "id": 48258, + "id": 48255, "isConstant": false, "isLValue": false, "isPure": true, @@ -4828,14 +4828,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 48257, + "id": 48254, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3019:4:55", "typeDescriptions": {} } }, - "id": 48260, + "id": 48257, "isConstant": false, "isLValue": false, "isPure": false, @@ -4860,7 +4860,7 @@ } ], "expression": { - "id": 48254, + "id": 48251, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4871,7 +4871,7 @@ "typeString": "type(library console2)" } }, - "id": 48256, + "id": 48253, "isConstant": false, "isLValue": false, "isPure": false, @@ -4886,7 +4886,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48261, + "id": 48258, "isConstant": false, "isLValue": false, "isPure": false, @@ -4902,26 +4902,26 @@ "typeString": "tuple()" } }, - "id": 48262, + "id": 48259, "nodeType": "ExpressionStatement", "src": "3006:31:55" }, { "expression": { - "id": 48270, + "id": 48267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48263, + "id": 48260, "name": "routes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48071, + "referencedDeclaration": 48068, "src": "3047:6:55", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48062_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48059_memory_ptr_$dyn_memory_ptr", "typeString": "struct QueryHelper.RoutesResult memory[] memory" } }, @@ -4930,11 +4930,11 @@ "rightHandSide": { "arguments": [ { - "id": 48268, + "id": 48265, "name": "routesCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48233, + "referencedDeclaration": 48230, "src": "3087:11:55", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -4949,7 +4949,7 @@ "typeString": "uint8" } ], - "id": 48267, + "id": 48264, "isConstant": false, "isLValue": false, "isPure": true, @@ -4957,41 +4957,41 @@ "nodeType": "NewExpression", "src": "3056:30:55", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RoutesResult_$48062_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RoutesResult_$48059_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct QueryHelper.RoutesResult memory[] memory)" }, "typeName": { "baseType": { - "id": 48265, + "id": 48262, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48264, + "id": 48261, "name": "QueryHelper.RoutesResult", "nameLocations": [ "3060:11:55", "3072:12:55" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48062, + "referencedDeclaration": 48059, "src": "3060:24:55" }, - "referencedDeclaration": 48062, + "referencedDeclaration": 48059, "src": "3060:24:55", "typeDescriptions": { - "typeIdentifier": "t_struct$_RoutesResult_$48062_storage_ptr", + "typeIdentifier": "t_struct$_RoutesResult_$48059_storage_ptr", "typeString": "struct QueryHelper.RoutesResult" } }, - "id": 48266, + "id": 48263, "nodeType": "ArrayTypeName", "src": "3060:26:55", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48062_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48059_storage_$dyn_storage_ptr", "typeString": "struct QueryHelper.RoutesResult[]" } } }, - "id": 48269, + "id": 48266, "isConstant": false, "isLValue": false, "isPure": false, @@ -5003,33 +5003,33 @@ "src": "3056:43:55", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48062_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48059_memory_ptr_$dyn_memory_ptr", "typeString": "struct QueryHelper.RoutesResult memory[] memory" } }, "src": "3047:52:55", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48062_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48059_memory_ptr_$dyn_memory_ptr", "typeString": "struct QueryHelper.RoutesResult memory[] memory" } }, - "id": 48271, + "id": 48268, "nodeType": "ExpressionStatement", "src": "3047:52:55" }, { "assignments": [ - 48273 + 48270 ], "declarations": [ { "constant": false, - "id": 48273, + "id": 48270, "mutability": "mutable", "name": "i", "nameLocation": "3115:1:55", "nodeType": "VariableDeclaration", - "scope": 48294, + "scope": 48291, "src": "3109:7:55", "stateVariable": false, "storageLocation": "default", @@ -5038,7 +5038,7 @@ "typeString": "uint8" }, "typeName": { - "id": 48272, + "id": 48269, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3109:5:55", @@ -5050,10 +5050,10 @@ "visibility": "internal" } ], - "id": 48275, + "id": 48272, "initialValue": { "hexValue": "30", - "id": 48274, + "id": 48271, "isConstant": false, "isLValue": false, "isPure": true, @@ -5076,17 +5076,17 @@ "typeIdentifier": "t_uint24", "typeString": "uint24" }, - "id": 48278, + "id": 48275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48276, + "id": 48273, "name": "uniswapV3Fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48111, + "referencedDeclaration": 48108, "src": "3153:12:55", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -5097,7 +5097,7 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 48277, + "id": 48274, "isConstant": false, "isLValue": false, "isPure": true, @@ -5117,32 +5117,32 @@ "typeString": "bool" } }, - "id": 48293, + "id": 48290, "nodeType": "IfStatement", "src": "3149:131:55", "trueBody": { "expression": { - "id": 48291, + "id": 48288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 48279, + "id": 48276, "name": "routes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48071, + "referencedDeclaration": 48068, "src": "3184:6:55", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48062_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48059_memory_ptr_$dyn_memory_ptr", "typeString": "struct QueryHelper.RoutesResult memory[] memory" } }, - "id": 48282, + "id": 48279, "indexExpression": { - "id": 48281, + "id": 48278, "isConstant": false, "isLValue": false, "isPure": false, @@ -5152,11 +5152,11 @@ "prefix": false, "src": "3191:3:55", "subExpression": { - "id": 48280, + "id": 48277, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48273, + "referencedDeclaration": 48270, "src": "3191:1:55", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -5175,7 +5175,7 @@ "nodeType": "IndexAccess", "src": "3184:11:55", "typeDescriptions": { - "typeIdentifier": "t_struct$_RoutesResult_$48062_memory_ptr", + "typeIdentifier": "t_struct$_RoutesResult_$48059_memory_ptr", "typeString": "struct QueryHelper.RoutesResult memory" } }, @@ -5186,18 +5186,18 @@ { "expression": { "expression": { - "id": 48285, + "id": 48282, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3223:8:55", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 48286, + "id": 48283, "isConstant": false, "isLValue": false, "isPure": false, @@ -5205,14 +5205,14 @@ "memberLocation": "3232:8:55", "memberName": "Exchange", "nodeType": "MemberAccess", - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "3223:17:55", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", + "typeIdentifier": "t_type$_t_enum$_Exchange_$46534_$", "typeString": "type(enum OrderLib.Exchange)" } }, - "id": 48287, + "id": 48284, "isConstant": false, "isLValue": false, "isPure": true, @@ -5220,19 +5220,19 @@ "memberLocation": "3241:9:55", "memberName": "UniswapV3", "nodeType": "MemberAccess", - "referencedDeclaration": 46536, + "referencedDeclaration": 46533, "src": "3223:27:55", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, { - "id": 48288, + "id": 48285, "name": "uniswapV3Fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48111, + "referencedDeclaration": 48108, "src": "3252:12:55", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -5240,11 +5240,11 @@ } }, { - "id": 48289, + "id": 48286, "name": "uniswapV3Pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48119, + "referencedDeclaration": 48116, "src": "3266:13:55", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5255,7 +5255,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, { @@ -5268,18 +5268,18 @@ } ], "expression": { - "id": 48283, + "id": 48280, "name": "QueryHelper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48320, + "referencedDeclaration": 48317, "src": "3198:11:55", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_QueryHelper_$48320_$", + "typeIdentifier": "t_type$_t_contract$_QueryHelper_$48317_$", "typeString": "type(contract QueryHelper)" } }, - "id": 48284, + "id": 48281, "isConstant": false, "isLValue": false, "isPure": false, @@ -5287,14 +5287,14 @@ "memberLocation": "3210:12:55", "memberName": "RoutesResult", "nodeType": "MemberAccess", - "referencedDeclaration": 48062, + "referencedDeclaration": 48059, "src": "3198:24:55", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_RoutesResult_$48062_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_RoutesResult_$48059_storage_ptr_$", "typeString": "type(struct QueryHelper.RoutesResult storage pointer)" } }, - "id": 48290, + "id": 48287, "isConstant": false, "isLValue": false, "isPure": false, @@ -5306,17 +5306,17 @@ "src": "3198:82:55", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_RoutesResult_$48062_memory_ptr", + "typeIdentifier": "t_struct$_RoutesResult_$48059_memory_ptr", "typeString": "struct QueryHelper.RoutesResult memory" } }, "src": "3184:96:55", "typeDescriptions": { - "typeIdentifier": "t_struct$_RoutesResult_$48062_memory_ptr", + "typeIdentifier": "t_struct$_RoutesResult_$48059_memory_ptr", "typeString": "struct QueryHelper.RoutesResult memory" } }, - "id": 48292, + "id": 48289, "nodeType": "ExpressionStatement", "src": "3184:96:55" } @@ -5330,17 +5330,17 @@ "name": "getRoutes", "nameLocation": "1368:9:55", "parameters": { - "id": 48067, + "id": 48064, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48064, + "id": 48061, "mutability": "mutable", "name": "tokenA", "nameLocation": "1387:6:55", "nodeType": "VariableDeclaration", - "scope": 48295, + "scope": 48292, "src": "1379:14:55", "stateVariable": false, "storageLocation": "default", @@ -5349,7 +5349,7 @@ "typeString": "address" }, "typeName": { - "id": 48063, + "id": 48060, "name": "address", "nodeType": "ElementaryTypeName", "src": "1379:7:55", @@ -5363,12 +5363,12 @@ }, { "constant": false, - "id": 48066, + "id": 48063, "mutability": "mutable", "name": "tokenB", "nameLocation": "1403:6:55", "nodeType": "VariableDeclaration", - "scope": 48295, + "scope": 48292, "src": "1395:14:55", "stateVariable": false, "storageLocation": "default", @@ -5377,7 +5377,7 @@ "typeString": "address" }, "typeName": { - "id": 48065, + "id": 48062, "name": "address", "nodeType": "ElementaryTypeName", "src": "1395:7:55", @@ -5393,50 +5393,50 @@ "src": "1377:34:55" }, "returnParameters": { - "id": 48072, + "id": 48069, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48071, + "id": 48068, "mutability": "mutable", "name": "routes", "nameLocation": "1458:6:55", "nodeType": "VariableDeclaration", - "scope": 48295, + "scope": 48292, "src": "1436:28:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48062_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48059_memory_ptr_$dyn_memory_ptr", "typeString": "struct QueryHelper.RoutesResult[]" }, "typeName": { "baseType": { - "id": 48069, + "id": 48066, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48068, + "id": 48065, "name": "RoutesResult", "nameLocations": [ "1436:12:55" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48062, + "referencedDeclaration": 48059, "src": "1436:12:55" }, - "referencedDeclaration": 48062, + "referencedDeclaration": 48059, "src": "1436:12:55", "typeDescriptions": { - "typeIdentifier": "t_struct$_RoutesResult_$48062_storage_ptr", + "typeIdentifier": "t_struct$_RoutesResult_$48059_storage_ptr", "typeString": "struct QueryHelper.RoutesResult" } }, - "id": 48070, + "id": 48067, "nodeType": "ArrayTypeName", "src": "1436:14:55", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48062_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_RoutesResult_$48059_storage_$dyn_storage_ptr", "typeString": "struct QueryHelper.RoutesResult[]" } }, @@ -5445,25 +5445,25 @@ ], "src": "1435:30:55" }, - "scope": 48320, + "scope": 48317, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 48319, + "id": 48316, "nodeType": "FunctionDefinition", "src": "3293:202:55", "nodes": [], "body": { - "id": 48318, + "id": 48315, "nodeType": "Block", "src": "3412:83:55", "nodes": [], "statements": [ { "expression": { - "id": 48310, + "id": 48307, "isConstant": false, "isLValue": false, "isPure": false, @@ -5472,11 +5472,11 @@ "components": [ null, { - "id": 48305, + "id": 48302, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48301, + "referencedDeclaration": 48298, "src": "3425:4:55", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -5489,7 +5489,7 @@ null, null ], - "id": 48306, + "id": 48303, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -5509,18 +5509,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 48307, + "id": 48304, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48298, + "referencedDeclaration": 48295, "src": "3438:4:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, - "id": 48308, + "id": 48305, "isConstant": false, "isLValue": false, "isPure": false, @@ -5535,7 +5535,7 @@ "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" } }, - "id": 48309, + "id": 48306, "isConstant": false, "isLValue": false, "isPure": false, @@ -5557,23 +5557,23 @@ "typeString": "tuple()" } }, - "id": 48311, + "id": 48308, "nodeType": "ExpressionStatement", "src": "3422:28:55" }, { "expression": { - "id": 48316, + "id": 48313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48312, + "id": 48309, "name": "liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48303, + "referencedDeclaration": 48300, "src": "3460:9:55", "typeDescriptions": { "typeIdentifier": "t_uint128", @@ -5587,18 +5587,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 48313, + "id": 48310, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48298, + "referencedDeclaration": 48295, "src": "3472:4:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, - "id": 48314, + "id": 48311, "isConstant": false, "isLValue": false, "isPure": false, @@ -5613,7 +5613,7 @@ "typeString": "function () view external returns (uint128)" } }, - "id": 48315, + "id": 48312, "isConstant": false, "isLValue": false, "isPure": false, @@ -5635,7 +5635,7 @@ "typeString": "uint128" } }, - "id": 48317, + "id": 48314, "nodeType": "ExpressionStatement", "src": "3460:28:55" } @@ -5648,17 +5648,17 @@ "name": "poolStatus", "nameLocation": "3302:10:55", "parameters": { - "id": 48299, + "id": 48296, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48298, + "id": 48295, "mutability": "mutable", "name": "pool", "nameLocation": "3328:4:55", "nodeType": "VariableDeclaration", - "scope": 48319, + "scope": 48316, "src": "3313:19:55", "stateVariable": false, "storageLocation": "default", @@ -5667,10 +5667,10 @@ "typeString": "contract IUniswapV3Pool" }, "typeName": { - "id": 48297, + "id": 48294, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48296, + "id": 48293, "name": "IUniswapV3Pool", "nameLocations": [ "3313:14:55" @@ -5692,17 +5692,17 @@ "src": "3312:21:55" }, "returnParameters": { - "id": 48304, + "id": 48301, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48301, + "id": 48298, "mutability": "mutable", "name": "tick", "nameLocation": "3374:4:55", "nodeType": "VariableDeclaration", - "scope": 48319, + "scope": 48316, "src": "3368:10:55", "stateVariable": false, "storageLocation": "default", @@ -5711,7 +5711,7 @@ "typeString": "int24" }, "typeName": { - "id": 48300, + "id": 48297, "name": "int24", "nodeType": "ElementaryTypeName", "src": "3368:5:55", @@ -5724,12 +5724,12 @@ }, { "constant": false, - "id": 48303, + "id": 48300, "mutability": "mutable", "name": "liquidity", "nameLocation": "3396:9:55", "nodeType": "VariableDeclaration", - "scope": 48319, + "scope": 48316, "src": "3388:17:55", "stateVariable": false, "storageLocation": "default", @@ -5738,7 +5738,7 @@ "typeString": "uint128" }, "typeName": { - "id": 48302, + "id": 48299, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "3388:7:55", @@ -5752,7 +5752,7 @@ ], "src": "3358:53:55" }, - "scope": 48320, + "scope": 48317, "stateMutability": "view", "virtual": false, "visibility": "public" @@ -5768,11 +5768,11 @@ "21582": 1 }, "linearizedBaseContracts": [ - 48320 + 48317 ], "name": "QueryHelper", "nameLocation": "344:11:55", - "scope": 48321, + "scope": 48318, "usedErrors": [], "usedEvents": [] } diff --git a/deployment/alpha/out/TestFullMath.sol/TestFullMath.json b/deployment/alpha/out/TestFullMath.sol/TestFullMath.json index 1903611..0da00c6 100644 --- a/deployment/alpha/out/TestFullMath.sol/TestFullMath.json +++ b/deployment/alpha/out/TestFullMath.sol/TestFullMath.json @@ -1309,7 +1309,7 @@ }, "ast": { "absolutePath": "test/TestFullMath.sol", - "id": 50395, + "id": 50392, "exportedSymbols": { "DSTest": [ 2291 @@ -1345,7 +1345,7 @@ 2357 ], "TestFullMath": [ - 50394 + 50391 ], "Vm": [ 13464 @@ -1376,7 +1376,7 @@ "src": "39:2904:64", "nodes": [ { - "id": 50071, + "id": 50068, "nodeType": "PragmaDirective", "src": "39:24:64", "nodes": [], @@ -1388,7 +1388,7 @@ ] }, { - "id": 50072, + "id": 50069, "nodeType": "PragmaDirective", "src": "64:19:64", "nodes": [], @@ -1398,43 +1398,43 @@ ] }, { - "id": 50073, + "id": 50070, "nodeType": "ImportDirective", "src": "85:28:64", "nodes": [], "absolutePath": "lib/forge-std/src/Test.sol", "file": "forge-std/Test.sol", "nameLocation": "-1:-1:-1", - "scope": 50395, + "scope": 50392, "sourceUnit": 11938, "symbolAliases": [], "unitAlias": "" }, { - "id": 50074, + "id": 50071, "nodeType": "ImportDirective", "src": "114:59:64", "nodes": [], "absolutePath": "lib_uniswap/v3-core/contracts/libraries/FullMath.sol", "file": "@uniswap/v3-core/contracts/libraries/FullMath.sol", "nameLocation": "-1:-1:-1", - "scope": 50395, + "scope": 50392, "sourceUnit": 44520, "symbolAliases": [], "unitAlias": "" }, { - "id": 50394, + "id": 50391, "nodeType": "ContractDefinition", "src": "411:2531:64", "nodes": [ { - "id": 50086, + "id": 50083, "nodeType": "FunctionDefinition", "src": "448:78:64", "nodes": [], "body": { - "id": 50085, + "id": 50082, "nodeType": "Block", "src": "477:49:64", "nodes": [], @@ -1444,7 +1444,7 @@ "arguments": [ { "hexValue": "46756c6c4d6174682073657475702829", - "id": 50082, + "id": 50079, "isConstant": false, "isLValue": false, "isPure": true, @@ -1467,7 +1467,7 @@ } ], "expression": { - "id": 50079, + "id": 50076, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1478,7 +1478,7 @@ "typeString": "type(library console2)" } }, - "id": 50081, + "id": 50078, "isConstant": false, "isLValue": false, "isPure": false, @@ -1493,7 +1493,7 @@ "typeString": "function (string memory) pure" } }, - "id": 50083, + "id": 50080, "isConstant": false, "isLValue": false, "isPure": false, @@ -1509,7 +1509,7 @@ "typeString": "tuple()" } }, - "id": 50084, + "id": 50081, "nodeType": "ExpressionStatement", "src": "487:32:64" } @@ -1522,29 +1522,29 @@ "name": "setUp", "nameLocation": "457:5:64", "parameters": { - "id": 50077, + "id": 50074, "nodeType": "ParameterList", "parameters": [], "src": "462:2:64" }, "returnParameters": { - "id": 50078, + "id": 50075, "nodeType": "ParameterList", "parameters": [], "src": "477:0:64" }, - "scope": 50394, + "scope": 50391, "stateMutability": "pure", "virtual": false, "visibility": "public" }, { - "id": 50393, + "id": 50390, "nodeType": "FunctionDefinition", "src": "532:2408:64", "nodes": [], "body": { - "id": 50392, + "id": 50389, "nodeType": "Block", "src": "568:2372:64", "nodes": [], @@ -1554,7 +1554,7 @@ "arguments": [ { "hexValue": "46756c6c4d617468207465737446756c6c4d6174682829", - "id": 50092, + "id": 50089, "isConstant": false, "isLValue": false, "isPure": true, @@ -1577,7 +1577,7 @@ } ], "expression": { - "id": 50089, + "id": 50086, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1588,7 +1588,7 @@ "typeString": "type(library console2)" } }, - "id": 50091, + "id": 50088, "isConstant": false, "isLValue": false, "isPure": false, @@ -1603,7 +1603,7 @@ "typeString": "function (string memory) pure" } }, - "id": 50093, + "id": 50090, "isConstant": false, "isLValue": false, "isPure": false, @@ -1619,23 +1619,23 @@ "typeString": "tuple()" } }, - "id": 50094, + "id": 50091, "nodeType": "ExpressionStatement", "src": "579:39:64" }, { "assignments": [ - 50096 + 50093 ], "declarations": [ { "constant": false, - "id": 50096, + "id": 50093, "mutability": "mutable", "name": "MinusOne", "nameLocation": "659:8:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "651:16:64", "stateVariable": false, "storageLocation": "default", @@ -1644,7 +1644,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50095, + "id": 50092, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "651:7:64", @@ -1656,13 +1656,13 @@ "visibility": "internal" } ], - "id": 50105, + "id": 50102, "initialValue": { "arguments": [ { "arguments": [ { - "id": 50102, + "id": 50099, "isConstant": false, "isLValue": false, "isPure": true, @@ -1673,7 +1673,7 @@ "src": "685:2:64", "subExpression": { "hexValue": "31", - "id": 50101, + "id": 50098, "isConstant": false, "isLValue": false, "isPure": true, @@ -1700,7 +1700,7 @@ "typeString": "int_const -1" } ], - "id": 50100, + "id": 50097, "isConstant": false, "isLValue": false, "isPure": true, @@ -1712,14 +1712,14 @@ "typeString": "type(int256)" }, "typeName": { - "id": 50099, + "id": 50096, "name": "int256", "nodeType": "ElementaryTypeName", "src": "678:6:64", "typeDescriptions": {} } }, - "id": 50103, + "id": 50100, "isConstant": false, "isLValue": false, "isPure": true, @@ -1743,7 +1743,7 @@ "typeString": "int256" } ], - "id": 50098, + "id": 50095, "isConstant": false, "isLValue": false, "isPure": true, @@ -1755,14 +1755,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 50097, + "id": 50094, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "670:7:64", "typeDescriptions": {} } }, - "id": 50104, + "id": 50101, "isConstant": false, "isLValue": false, "isPure": true, @@ -1783,17 +1783,17 @@ }, { "assignments": [ - 50107 + 50104 ], "declarations": [ { "constant": false, - "id": 50107, + "id": 50104, "mutability": "mutable", "name": "MAXneg", "nameLocation": "707:6:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "699:14:64", "stateVariable": false, "storageLocation": "default", @@ -1802,7 +1802,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50106, + "id": 50103, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "699:7:64", @@ -1814,20 +1814,20 @@ "visibility": "internal" } ], - "id": 50111, + "id": 50108, "initialValue": { "commonType": { "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", "typeString": "int_const 5789...(69 digits omitted)...9968" }, - "id": 50110, + "id": 50107, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 50108, + "id": 50105, "isConstant": false, "isLValue": false, "isPure": true, @@ -1845,7 +1845,7 @@ "operator": "**", "rightExpression": { "hexValue": "323535", - "id": 50109, + "id": 50106, "isConstant": false, "isLValue": false, "isPure": true, @@ -1870,17 +1870,17 @@ }, { "assignments": [ - 50113 + 50110 ], "declarations": [ { "constant": false, - "id": 50113, + "id": 50110, "mutability": "mutable", "name": "MAXpos", "nameLocation": "740:6:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "732:14:64", "stateVariable": false, "storageLocation": "default", @@ -1889,7 +1889,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50112, + "id": 50109, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "732:7:64", @@ -1901,9 +1901,9 @@ "visibility": "internal" } ], - "id": 50116, + "id": 50113, "initialValue": { - "id": 50115, + "id": 50112, "isConstant": false, "isLValue": false, "isPure": false, @@ -1913,11 +1913,11 @@ "prefix": true, "src": "749:7:64", "subExpression": { - "id": 50114, + "id": 50111, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "750:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1940,17 +1940,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50122, + "id": 50119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50118, + "id": 50115, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "802:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1964,17 +1964,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50121, + "id": 50118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50119, + "id": 50116, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "812:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1985,7 +1985,7 @@ "operator": ">>", "rightExpression": { "hexValue": "31", - "id": 50120, + "id": 50117, "isConstant": false, "isLValue": false, "isPure": true, @@ -2019,7 +2019,7 @@ "typeString": "bool" } ], - "id": 50117, + "id": 50114, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2033,7 +2033,7 @@ "typeString": "function (bool) pure" } }, - "id": 50123, + "id": 50120, "isConstant": false, "isLValue": false, "isPure": false, @@ -2049,7 +2049,7 @@ "typeString": "tuple()" } }, - "id": 50124, + "id": 50121, "nodeType": "ExpressionStatement", "src": "794:30:64" }, @@ -2061,17 +2061,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50130, + "id": 50127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50126, + "id": 50123, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "842:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2085,17 +2085,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50129, + "id": 50126, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50127, + "id": 50124, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "852:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2106,7 +2106,7 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 50128, + "id": 50125, "isConstant": false, "isLValue": false, "isPure": true, @@ -2140,7 +2140,7 @@ "typeString": "bool" } ], - "id": 50125, + "id": 50122, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2154,7 +2154,7 @@ "typeString": "function (bool) pure" } }, - "id": 50131, + "id": 50128, "isConstant": false, "isLValue": false, "isPure": false, @@ -2170,12 +2170,12 @@ "typeString": "tuple()" } }, - "id": 50132, + "id": 50129, "nodeType": "ExpressionStatement", "src": "834:27:64" }, { - "id": 50141, + "id": 50138, "nodeType": "UncheckedBlock", "src": "871:58:64", "statements": [ @@ -2187,7 +2187,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50138, + "id": 50135, "isConstant": false, "isLValue": false, "isPure": false, @@ -2197,17 +2197,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50136, + "id": 50133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50134, + "id": 50131, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "902:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2218,7 +2218,7 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 50135, + "id": 50132, "isConstant": false, "isLValue": false, "isPure": true, @@ -2242,7 +2242,7 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 50137, + "id": 50134, "isConstant": false, "isLValue": false, "isPure": true, @@ -2270,7 +2270,7 @@ "typeString": "bool" } ], - "id": 50133, + "id": 50130, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2284,7 +2284,7 @@ "typeString": "function (bool) pure" } }, - "id": 50139, + "id": 50136, "isConstant": false, "isLValue": false, "isPure": false, @@ -2300,7 +2300,7 @@ "typeString": "tuple()" } }, - "id": 50140, + "id": 50137, "nodeType": "ExpressionStatement", "src": "894:24:64" } @@ -2308,17 +2308,17 @@ }, { "assignments": [ - 50143 + 50140 ], "declarations": [ { "constant": false, - "id": 50143, + "id": 50140, "mutability": "mutable", "name": "q", "nameLocation": "989:1:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "981:9:64", "stateVariable": false, "storageLocation": "default", @@ -2327,7 +2327,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50142, + "id": 50139, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "981:7:64", @@ -2339,15 +2339,15 @@ "visibility": "internal" } ], - "id": 50150, + "id": 50147, "initialValue": { "arguments": [ { - "id": 50146, + "id": 50143, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1009:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2355,11 +2355,11 @@ } }, { - "id": 50147, + "id": 50144, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1017:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2367,11 +2367,11 @@ } }, { - "id": 50148, + "id": 50145, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1025:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2395,7 +2395,7 @@ } ], "expression": { - "id": 50144, + "id": 50141, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2406,7 +2406,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50145, + "id": 50142, "isConstant": false, "isLValue": false, "isPure": false, @@ -2421,7 +2421,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50149, + "id": 50146, "isConstant": false, "isLValue": false, "isPure": false, @@ -2448,17 +2448,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50154, + "id": 50151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50152, + "id": 50149, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1057:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2468,11 +2468,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50153, + "id": 50150, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1062:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2487,7 +2487,7 @@ }, { "hexValue": "636173652031206661696c6564", - "id": 50155, + "id": 50152, "isConstant": false, "isLValue": false, "isPure": true, @@ -2513,7 +2513,7 @@ "typeString": "literal_string \"case 1 failed\"" } ], - "id": 50151, + "id": 50148, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2527,7 +2527,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50156, + "id": 50153, "isConstant": false, "isLValue": false, "isPure": false, @@ -2543,23 +2543,23 @@ "typeString": "tuple()" } }, - "id": 50157, + "id": 50154, "nodeType": "ExpressionStatement", "src": "1049:37:64" }, { "expression": { - "id": 50165, + "id": 50162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50158, + "id": 50155, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1147:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2571,11 +2571,11 @@ "rightHandSide": { "arguments": [ { - "id": 50161, + "id": 50158, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1167:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2583,11 +2583,11 @@ } }, { - "id": 50162, + "id": 50159, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1177:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2595,11 +2595,11 @@ } }, { - "id": 50163, + "id": 50160, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1187:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2623,7 +2623,7 @@ } ], "expression": { - "id": 50159, + "id": 50156, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2634,7 +2634,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50160, + "id": 50157, "isConstant": false, "isLValue": false, "isPure": false, @@ -2649,7 +2649,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50164, + "id": 50161, "isConstant": false, "isLValue": false, "isPure": false, @@ -2671,7 +2671,7 @@ "typeString": "uint256" } }, - "id": 50166, + "id": 50163, "nodeType": "ExpressionStatement", "src": "1147:49:64" }, @@ -2683,17 +2683,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50170, + "id": 50167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50168, + "id": 50165, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1214:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2703,11 +2703,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50169, + "id": 50166, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1219:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2722,7 +2722,7 @@ }, { "hexValue": "636173652032206661696c6564", - "id": 50171, + "id": 50168, "isConstant": false, "isLValue": false, "isPure": true, @@ -2748,7 +2748,7 @@ "typeString": "literal_string \"case 2 failed\"" } ], - "id": 50167, + "id": 50164, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2762,7 +2762,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50172, + "id": 50169, "isConstant": false, "isLValue": false, "isPure": false, @@ -2778,23 +2778,23 @@ "typeString": "tuple()" } }, - "id": 50173, + "id": 50170, "nodeType": "ExpressionStatement", "src": "1206:39:64" }, { "expression": { - "id": 50181, + "id": 50178, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50174, + "id": 50171, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1307:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2806,11 +2806,11 @@ "rightHandSide": { "arguments": [ { - "id": 50177, + "id": 50174, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1327:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2818,11 +2818,11 @@ } }, { - "id": 50178, + "id": 50175, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1335:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2830,11 +2830,11 @@ } }, { - "id": 50179, + "id": 50176, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1343:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2858,7 +2858,7 @@ } ], "expression": { - "id": 50175, + "id": 50172, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2869,7 +2869,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50176, + "id": 50173, "isConstant": false, "isLValue": false, "isPure": false, @@ -2884,7 +2884,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50180, + "id": 50177, "isConstant": false, "isLValue": false, "isPure": false, @@ -2906,7 +2906,7 @@ "typeString": "uint256" } }, - "id": 50182, + "id": 50179, "nodeType": "ExpressionStatement", "src": "1307:43:64" }, @@ -2918,17 +2918,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50186, + "id": 50183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50184, + "id": 50181, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1368:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2938,11 +2938,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50185, + "id": 50182, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1373:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2957,7 +2957,7 @@ }, { "hexValue": "636173652033206661696c6564", - "id": 50187, + "id": 50184, "isConstant": false, "isLValue": false, "isPure": true, @@ -2983,7 +2983,7 @@ "typeString": "literal_string \"case 3 failed\"" } ], - "id": 50183, + "id": 50180, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2997,7 +2997,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50188, + "id": 50185, "isConstant": false, "isLValue": false, "isPure": false, @@ -3013,23 +3013,23 @@ "typeString": "tuple()" } }, - "id": 50189, + "id": 50186, "nodeType": "ExpressionStatement", "src": "1360:37:64" }, { "expression": { - "id": 50197, + "id": 50194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50190, + "id": 50187, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1448:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3041,11 +3041,11 @@ "rightHandSide": { "arguments": [ { - "id": 50193, + "id": 50190, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1468:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3053,11 +3053,11 @@ } }, { - "id": 50194, + "id": 50191, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1476:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3065,11 +3065,11 @@ } }, { - "id": 50195, + "id": 50192, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1484:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3093,7 +3093,7 @@ } ], "expression": { - "id": 50191, + "id": 50188, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3104,7 +3104,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50192, + "id": 50189, "isConstant": false, "isLValue": false, "isPure": false, @@ -3119,7 +3119,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50196, + "id": 50193, "isConstant": false, "isLValue": false, "isPure": false, @@ -3141,7 +3141,7 @@ "typeString": "uint256" } }, - "id": 50198, + "id": 50195, "nodeType": "ExpressionStatement", "src": "1448:43:64" }, @@ -3153,17 +3153,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50202, + "id": 50199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50200, + "id": 50197, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1509:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3173,11 +3173,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50201, + "id": 50198, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1514:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3192,7 +3192,7 @@ }, { "hexValue": "63617365203461206661696c6564", - "id": 50203, + "id": 50200, "isConstant": false, "isLValue": false, "isPure": true, @@ -3218,7 +3218,7 @@ "typeString": "literal_string \"case 4a failed\"" } ], - "id": 50199, + "id": 50196, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3232,7 +3232,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50204, + "id": 50201, "isConstant": false, "isLValue": false, "isPure": false, @@ -3248,23 +3248,23 @@ "typeString": "tuple()" } }, - "id": 50205, + "id": 50202, "nodeType": "ExpressionStatement", "src": "1501:38:64" }, { "expression": { - "id": 50213, + "id": 50210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50206, + "id": 50203, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1549:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3276,11 +3276,11 @@ "rightHandSide": { "arguments": [ { - "id": 50209, + "id": 50206, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1569:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3288,11 +3288,11 @@ } }, { - "id": 50210, + "id": 50207, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1577:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3300,11 +3300,11 @@ } }, { - "id": 50211, + "id": 50208, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1585:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3328,7 +3328,7 @@ } ], "expression": { - "id": 50207, + "id": 50204, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3339,7 +3339,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50208, + "id": 50205, "isConstant": false, "isLValue": false, "isPure": false, @@ -3354,7 +3354,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50212, + "id": 50209, "isConstant": false, "isLValue": false, "isPure": false, @@ -3376,7 +3376,7 @@ "typeString": "uint256" } }, - "id": 50214, + "id": 50211, "nodeType": "ExpressionStatement", "src": "1549:43:64" }, @@ -3388,17 +3388,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50218, + "id": 50215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50216, + "id": 50213, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1610:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3408,11 +3408,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50217, + "id": 50214, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1615:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3427,7 +3427,7 @@ }, { "hexValue": "63617365203462206661696c6564", - "id": 50219, + "id": 50216, "isConstant": false, "isLValue": false, "isPure": true, @@ -3453,7 +3453,7 @@ "typeString": "literal_string \"case 4b failed\"" } ], - "id": 50215, + "id": 50212, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3467,7 +3467,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50220, + "id": 50217, "isConstant": false, "isLValue": false, "isPure": false, @@ -3483,23 +3483,23 @@ "typeString": "tuple()" } }, - "id": 50221, + "id": 50218, "nodeType": "ExpressionStatement", "src": "1602:38:64" }, { "expression": { - "id": 50229, + "id": 50226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50222, + "id": 50219, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1650:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3511,11 +3511,11 @@ "rightHandSide": { "arguments": [ { - "id": 50225, + "id": 50222, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1670:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3523,11 +3523,11 @@ } }, { - "id": 50226, + "id": 50223, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1678:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3535,11 +3535,11 @@ } }, { - "id": 50227, + "id": 50224, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1688:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3563,7 +3563,7 @@ } ], "expression": { - "id": 50223, + "id": 50220, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3574,7 +3574,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50224, + "id": 50221, "isConstant": false, "isLValue": false, "isPure": false, @@ -3589,7 +3589,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50228, + "id": 50225, "isConstant": false, "isLValue": false, "isPure": false, @@ -3611,7 +3611,7 @@ "typeString": "uint256" } }, - "id": 50230, + "id": 50227, "nodeType": "ExpressionStatement", "src": "1650:45:64" }, @@ -3623,17 +3623,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50234, + "id": 50231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50232, + "id": 50229, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1713:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3643,11 +3643,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50233, + "id": 50230, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1718:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3662,7 +3662,7 @@ }, { "hexValue": "63617365203463206661696c6564", - "id": 50235, + "id": 50232, "isConstant": false, "isLValue": false, "isPure": true, @@ -3688,7 +3688,7 @@ "typeString": "literal_string \"case 4c failed\"" } ], - "id": 50231, + "id": 50228, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3702,7 +3702,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50236, + "id": 50233, "isConstant": false, "isLValue": false, "isPure": false, @@ -3718,23 +3718,23 @@ "typeString": "tuple()" } }, - "id": 50237, + "id": 50234, "nodeType": "ExpressionStatement", "src": "1705:40:64" }, { "expression": { - "id": 50245, + "id": 50242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50238, + "id": 50235, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1755:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3746,11 +3746,11 @@ "rightHandSide": { "arguments": [ { - "id": 50241, + "id": 50238, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1775:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3758,11 +3758,11 @@ } }, { - "id": 50242, + "id": 50239, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1783:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3770,11 +3770,11 @@ } }, { - "id": 50243, + "id": 50240, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1793:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3798,7 +3798,7 @@ } ], "expression": { - "id": 50239, + "id": 50236, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3809,7 +3809,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50240, + "id": 50237, "isConstant": false, "isLValue": false, "isPure": false, @@ -3824,7 +3824,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50244, + "id": 50241, "isConstant": false, "isLValue": false, "isPure": false, @@ -3846,7 +3846,7 @@ "typeString": "uint256" } }, - "id": 50246, + "id": 50243, "nodeType": "ExpressionStatement", "src": "1755:45:64" }, @@ -3858,17 +3858,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50250, + "id": 50247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50248, + "id": 50245, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1818:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3878,11 +3878,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50249, + "id": 50246, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1823:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3897,7 +3897,7 @@ }, { "hexValue": "63617365203464206661696c6564", - "id": 50251, + "id": 50248, "isConstant": false, "isLValue": false, "isPure": true, @@ -3923,7 +3923,7 @@ "typeString": "literal_string \"case 4d failed\"" } ], - "id": 50247, + "id": 50244, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3937,7 +3937,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50252, + "id": 50249, "isConstant": false, "isLValue": false, "isPure": false, @@ -3953,23 +3953,23 @@ "typeString": "tuple()" } }, - "id": 50253, + "id": 50250, "nodeType": "ExpressionStatement", "src": "1810:40:64" }, { "expression": { - "id": 50261, + "id": 50258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50254, + "id": 50251, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1860:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3981,11 +3981,11 @@ "rightHandSide": { "arguments": [ { - "id": 50257, + "id": 50254, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1880:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3993,11 +3993,11 @@ } }, { - "id": 50258, + "id": 50255, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1888:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4005,11 +4005,11 @@ } }, { - "id": 50259, + "id": 50256, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1898:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4033,7 +4033,7 @@ } ], "expression": { - "id": 50255, + "id": 50252, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4044,7 +4044,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50256, + "id": 50253, "isConstant": false, "isLValue": false, "isPure": false, @@ -4059,7 +4059,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50260, + "id": 50257, "isConstant": false, "isLValue": false, "isPure": false, @@ -4081,7 +4081,7 @@ "typeString": "uint256" } }, - "id": 50262, + "id": 50259, "nodeType": "ExpressionStatement", "src": "1860:47:64" }, @@ -4093,17 +4093,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50266, + "id": 50263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50264, + "id": 50261, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1925:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4113,11 +4113,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50265, + "id": 50262, "name": "MAXpos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50113, + "referencedDeclaration": 50110, "src": "1930:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4132,7 +4132,7 @@ }, { "hexValue": "63617365203465206661696c6564", - "id": 50267, + "id": 50264, "isConstant": false, "isLValue": false, "isPure": true, @@ -4158,7 +4158,7 @@ "typeString": "literal_string \"case 4e failed\"" } ], - "id": 50263, + "id": 50260, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4172,7 +4172,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50268, + "id": 50265, "isConstant": false, "isLValue": false, "isPure": false, @@ -4188,23 +4188,23 @@ "typeString": "tuple()" } }, - "id": 50269, + "id": 50266, "nodeType": "ExpressionStatement", "src": "1917:38:64" }, { "expression": { - "id": 50277, + "id": 50274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50270, + "id": 50267, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "1965:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4216,11 +4216,11 @@ "rightHandSide": { "arguments": [ { - "id": 50273, + "id": 50270, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "1985:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4228,11 +4228,11 @@ } }, { - "id": 50274, + "id": 50271, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "1993:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4240,11 +4240,11 @@ } }, { - "id": 50275, + "id": 50272, "name": "MinusOne", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50096, + "referencedDeclaration": 50093, "src": "2003:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4268,7 +4268,7 @@ } ], "expression": { - "id": 50271, + "id": 50268, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4279,7 +4279,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50272, + "id": 50269, "isConstant": false, "isLValue": false, "isPure": false, @@ -4294,7 +4294,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50276, + "id": 50273, "isConstant": false, "isLValue": false, "isPure": false, @@ -4316,7 +4316,7 @@ "typeString": "uint256" } }, - "id": 50278, + "id": 50275, "nodeType": "ExpressionStatement", "src": "1965:47:64" }, @@ -4328,17 +4328,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50282, + "id": 50279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50280, + "id": 50277, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "2030:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4348,11 +4348,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50281, + "id": 50278, "name": "MAXneg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50107, + "referencedDeclaration": 50104, "src": "2035:6:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4367,7 +4367,7 @@ }, { "hexValue": "63617365203466206661696c6564", - "id": 50283, + "id": 50280, "isConstant": false, "isLValue": false, "isPure": true, @@ -4393,7 +4393,7 @@ "typeString": "literal_string \"case 4f failed\"" } ], - "id": 50279, + "id": 50276, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4407,7 +4407,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50284, + "id": 50281, "isConstant": false, "isLValue": false, "isPure": false, @@ -4423,23 +4423,23 @@ "typeString": "tuple()" } }, - "id": 50285, + "id": 50282, "nodeType": "ExpressionStatement", "src": "2022:38:64" }, { "assignments": [ - 50287 + 50284 ], "declarations": [ { "constant": false, - "id": 50287, + "id": 50284, "mutability": "mutable", "name": "a", "nameLocation": "2155:1:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "2147:9:64", "stateVariable": false, "storageLocation": "default", @@ -4448,7 +4448,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50286, + "id": 50283, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2147:7:64", @@ -4460,23 +4460,23 @@ "visibility": "internal" } ], - "id": 50288, + "id": 50285, "nodeType": "VariableDeclarationStatement", "src": "2147:9:64" }, { "assignments": [ - 50290 + 50287 ], "declarations": [ { "constant": false, - "id": 50290, + "id": 50287, "mutability": "mutable", "name": "b", "nameLocation": "2174:1:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "2166:9:64", "stateVariable": false, "storageLocation": "default", @@ -4485,7 +4485,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50289, + "id": 50286, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2166:7:64", @@ -4497,23 +4497,23 @@ "visibility": "internal" } ], - "id": 50291, + "id": 50288, "nodeType": "VariableDeclarationStatement", "src": "2166:9:64" }, { "assignments": [ - 50293 + 50290 ], "declarations": [ { "constant": false, - "id": 50293, + "id": 50290, "mutability": "mutable", "name": "d", "nameLocation": "2193:1:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "2185:9:64", "stateVariable": false, "storageLocation": "default", @@ -4522,7 +4522,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50292, + "id": 50289, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2185:7:64", @@ -4534,23 +4534,23 @@ "visibility": "internal" } ], - "id": 50294, + "id": 50291, "nodeType": "VariableDeclarationStatement", "src": "2185:9:64" }, { "assignments": [ - 50296 + 50293 ], "declarations": [ { "constant": false, - "id": 50296, + "id": 50293, "mutability": "mutable", "name": "expected", "nameLocation": "2212:8:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "2204:16:64", "stateVariable": false, "storageLocation": "default", @@ -4559,7 +4559,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50295, + "id": 50292, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2204:7:64", @@ -4571,23 +4571,23 @@ "visibility": "internal" } ], - "id": 50297, + "id": 50294, "nodeType": "VariableDeclarationStatement", "src": "2204:16:64" }, { "expression": { - "id": 50300, + "id": 50297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50298, + "id": 50295, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50287, + "referencedDeclaration": 50284, "src": "2231:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4598,7 +4598,7 @@ "operator": "=", "rightHandSide": { "hexValue": "333136393232313031363331353537333535313832333138343631373831323438303130383739363830363433303732", - "id": 50299, + "id": 50296, "isConstant": false, "isLValue": false, "isPure": true, @@ -4618,23 +4618,23 @@ "typeString": "uint256" } }, - "id": 50301, + "id": 50298, "nodeType": "ExpressionStatement", "src": "2231:52:64" }, { "expression": { - "id": 50304, + "id": 50301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50302, + "id": 50299, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50290, + "referencedDeclaration": 50287, "src": "2303:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4645,7 +4645,7 @@ "operator": "=", "rightHandSide": { "hexValue": "32363934353139393938303935323037323237383033313735383833373430", - "id": 50303, + "id": 50300, "isConstant": false, "isLValue": false, "isPure": true, @@ -4665,23 +4665,23 @@ "typeString": "uint256" } }, - "id": 50305, + "id": 50302, "nodeType": "ExpressionStatement", "src": "2303:35:64" }, { "expression": { - "id": 50308, + "id": 50305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50306, + "id": 50303, "name": "d", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50293, + "referencedDeclaration": 50290, "src": "2358:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4692,7 +4692,7 @@ "operator": "=", "rightHandSide": { "hexValue": "3739323332303139303835333936383535333935353039313630363830363931363838", - "id": 50307, + "id": 50304, "isConstant": false, "isLValue": false, "isPure": true, @@ -4712,23 +4712,23 @@ "typeString": "uint256" } }, - "id": 50309, + "id": 50306, "nodeType": "ExpressionStatement", "src": "2358:39:64" }, { "expression": { - "id": 50312, + "id": 50309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50310, + "id": 50307, "name": "expected", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50296, + "referencedDeclaration": 50293, "src": "2417:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4739,7 +4739,7 @@ "operator": "=", "rightHandSide": { "hexValue": "3130373737383736383034363331313730373534323439353233313036333933393132343532383036313231", - "id": 50311, + "id": 50308, "isConstant": false, "isLValue": false, "isPure": true, @@ -4759,7 +4759,7 @@ "typeString": "uint256" } }, - "id": 50313, + "id": 50310, "nodeType": "ExpressionStatement", "src": "2417:55:64" }, @@ -4771,7 +4771,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50322, + "id": 50319, "isConstant": false, "isLValue": false, "isPure": false, @@ -4779,11 +4779,11 @@ "leftExpression": { "arguments": [ { - "id": 50317, + "id": 50314, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50287, + "referencedDeclaration": 50284, "src": "2518:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4791,11 +4791,11 @@ } }, { - "id": 50318, + "id": 50315, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50290, + "referencedDeclaration": 50287, "src": "2521:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4803,11 +4803,11 @@ } }, { - "id": 50319, + "id": 50316, "name": "d", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50293, + "referencedDeclaration": 50290, "src": "2524:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4831,7 +4831,7 @@ } ], "expression": { - "id": 50315, + "id": 50312, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4842,7 +4842,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50316, + "id": 50313, "isConstant": false, "isLValue": false, "isPure": false, @@ -4857,7 +4857,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50320, + "id": 50317, "isConstant": false, "isLValue": false, "isPure": false, @@ -4876,11 +4876,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50321, + "id": 50318, "name": "expected", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50296, + "referencedDeclaration": 50293, "src": "2530:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4895,7 +4895,7 @@ }, { "hexValue": "436173652035206661696c6564", - "id": 50323, + "id": 50320, "isConstant": false, "isLValue": false, "isPure": true, @@ -4921,7 +4921,7 @@ "typeString": "literal_string \"Case 5 failed\"" } ], - "id": 50314, + "id": 50311, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4935,7 +4935,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50324, + "id": 50321, "isConstant": false, "isLValue": false, "isPure": false, @@ -4951,23 +4951,23 @@ "typeString": "tuple()" } }, - "id": 50325, + "id": 50322, "nodeType": "ExpressionStatement", "src": "2493:63:64" }, { "assignments": [ - 50327 + 50324 ], "declarations": [ { "constant": false, - "id": 50327, + "id": 50324, "mutability": "mutable", "name": "aExp", "nameLocation": "2616:4:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "2608:12:64", "stateVariable": false, "storageLocation": "default", @@ -4976,7 +4976,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50326, + "id": 50323, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2608:7:64", @@ -4988,23 +4988,23 @@ "visibility": "internal" } ], - "id": 50328, + "id": 50325, "nodeType": "VariableDeclarationStatement", "src": "2608:12:64" }, { "assignments": [ - 50330 + 50327 ], "declarations": [ { "constant": false, - "id": 50330, + "id": 50327, "mutability": "mutable", "name": "bExp", "nameLocation": "2638:4:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "2630:12:64", "stateVariable": false, "storageLocation": "default", @@ -5013,7 +5013,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50329, + "id": 50326, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2630:7:64", @@ -5025,23 +5025,23 @@ "visibility": "internal" } ], - "id": 50331, + "id": 50328, "nodeType": "VariableDeclarationStatement", "src": "2630:12:64" }, { "assignments": [ - 50333 + 50330 ], "declarations": [ { "constant": false, - "id": 50333, + "id": 50330, "mutability": "mutable", "name": "dExp", "nameLocation": "2660:4:64", "nodeType": "VariableDeclaration", - "scope": 50392, + "scope": 50389, "src": "2652:12:64", "stateVariable": false, "storageLocation": "default", @@ -5050,7 +5050,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50332, + "id": 50329, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2652:7:64", @@ -5062,23 +5062,23 @@ "visibility": "internal" } ], - "id": 50334, + "id": 50331, "nodeType": "VariableDeclarationStatement", "src": "2652:12:64" }, { "expression": { - "id": 50337, + "id": 50334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50335, + "id": 50332, "name": "aExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50327, + "referencedDeclaration": 50324, "src": "2675:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5089,7 +5089,7 @@ "operator": "=", "rightHandSide": { "hexValue": "323535", - "id": 50336, + "id": 50333, "isConstant": false, "isLValue": false, "isPure": true, @@ -5109,23 +5109,23 @@ "typeString": "uint256" } }, - "id": 50338, + "id": 50335, "nodeType": "ExpressionStatement", "src": "2675:10:64" }, { "expression": { - "id": 50341, + "id": 50338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50339, + "id": 50336, "name": "bExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50330, + "referencedDeclaration": 50327, "src": "2695:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5136,7 +5136,7 @@ "operator": "=", "rightHandSide": { "hexValue": "323535", - "id": 50340, + "id": 50337, "isConstant": false, "isLValue": false, "isPure": true, @@ -5156,23 +5156,23 @@ "typeString": "uint256" } }, - "id": 50342, + "id": 50339, "nodeType": "ExpressionStatement", "src": "2695:10:64" }, { "expression": { - "id": 50345, + "id": 50342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50343, + "id": 50340, "name": "dExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50333, + "referencedDeclaration": 50330, "src": "2715:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5183,7 +5183,7 @@ "operator": "=", "rightHandSide": { "hexValue": "323535", - "id": 50344, + "id": 50341, "isConstant": false, "isLValue": false, "isPure": true, @@ -5203,23 +5203,23 @@ "typeString": "uint256" } }, - "id": 50346, + "id": 50343, "nodeType": "ExpressionStatement", "src": "2715:10:64" }, { "expression": { - "id": 50351, + "id": 50348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50347, + "id": 50344, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50287, + "referencedDeclaration": 50284, "src": "2736:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5233,14 +5233,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50350, + "id": 50347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 50348, + "id": 50345, "isConstant": false, "isLValue": false, "isPure": true, @@ -5257,11 +5257,11 @@ "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { - "id": 50349, + "id": 50346, "name": "aExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50327, + "referencedDeclaration": 50324, "src": "2743:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5280,23 +5280,23 @@ "typeString": "uint256" } }, - "id": 50352, + "id": 50349, "nodeType": "ExpressionStatement", "src": "2736:11:64" }, { "expression": { - "id": 50357, + "id": 50354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50353, + "id": 50350, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50290, + "referencedDeclaration": 50287, "src": "2757:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5310,14 +5310,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50356, + "id": 50353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 50354, + "id": 50351, "isConstant": false, "isLValue": false, "isPure": true, @@ -5334,11 +5334,11 @@ "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { - "id": 50355, + "id": 50352, "name": "bExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50330, + "referencedDeclaration": 50327, "src": "2764:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5357,23 +5357,23 @@ "typeString": "uint256" } }, - "id": 50358, + "id": 50355, "nodeType": "ExpressionStatement", "src": "2757:11:64" }, { "expression": { - "id": 50363, + "id": 50360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50359, + "id": 50356, "name": "d", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50293, + "referencedDeclaration": 50290, "src": "2778:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5387,14 +5387,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50362, + "id": 50359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 50360, + "id": 50357, "isConstant": false, "isLValue": false, "isPure": true, @@ -5411,11 +5411,11 @@ "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { - "id": 50361, + "id": 50358, "name": "dExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50333, + "referencedDeclaration": 50330, "src": "2785:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5434,23 +5434,23 @@ "typeString": "uint256" } }, - "id": 50364, + "id": 50361, "nodeType": "ExpressionStatement", "src": "2778:11:64" }, { "expression": { - "id": 50374, + "id": 50371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50365, + "id": 50362, "name": "expected", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50296, + "referencedDeclaration": 50293, "src": "2799:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5464,14 +5464,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50373, + "id": 50370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "32", - "id": 50366, + "id": 50363, "isConstant": false, "isLValue": false, "isPure": true, @@ -5494,7 +5494,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50371, + "id": 50368, "isConstant": false, "isLValue": false, "isPure": false, @@ -5504,17 +5504,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50369, + "id": 50366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50367, + "id": 50364, "name": "aExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50327, + "referencedDeclaration": 50324, "src": "2814:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5524,11 +5524,11 @@ "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { - "id": 50368, + "id": 50365, "name": "bExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50330, + "referencedDeclaration": 50327, "src": "2819:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5544,11 +5544,11 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 50370, + "id": 50367, "name": "dExp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50333, + "referencedDeclaration": 50330, "src": "2824:4:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5562,7 +5562,7 @@ } } ], - "id": 50372, + "id": 50369, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -5587,23 +5587,23 @@ "typeString": "uint256" } }, - "id": 50375, + "id": 50372, "nodeType": "ExpressionStatement", "src": "2799:30:64" }, { "expression": { - "id": 50383, + "id": 50380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50376, + "id": 50373, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "2840:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5615,11 +5615,11 @@ "rightHandSide": { "arguments": [ { - "id": 50379, + "id": 50376, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50287, + "referencedDeclaration": 50284, "src": "2860:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5627,11 +5627,11 @@ } }, { - "id": 50380, + "id": 50377, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50290, + "referencedDeclaration": 50287, "src": "2862:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5639,11 +5639,11 @@ } }, { - "id": 50381, + "id": 50378, "name": "d", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50293, + "referencedDeclaration": 50290, "src": "2864:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5667,7 +5667,7 @@ } ], "expression": { - "id": 50377, + "id": 50374, "name": "FullMath", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5678,7 +5678,7 @@ "typeString": "type(library FullMath)" } }, - "id": 50378, + "id": 50375, "isConstant": false, "isLValue": false, "isPure": false, @@ -5693,7 +5693,7 @@ "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, - "id": 50382, + "id": 50379, "isConstant": false, "isLValue": false, "isPure": false, @@ -5715,7 +5715,7 @@ "typeString": "uint256" } }, - "id": 50384, + "id": 50381, "nodeType": "ExpressionStatement", "src": "2840:26:64" }, @@ -5727,17 +5727,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50388, + "id": 50385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50386, + "id": 50383, "name": "q", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50143, + "referencedDeclaration": 50140, "src": "2891:1:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5747,11 +5747,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 50387, + "id": 50384, "name": "expected", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50296, + "referencedDeclaration": 50293, "src": "2896:8:64", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5766,7 +5766,7 @@ }, { "hexValue": "63617365203130206661696c6564", - "id": 50389, + "id": 50386, "isConstant": false, "isLValue": false, "isPure": true, @@ -5792,7 +5792,7 @@ "typeString": "literal_string \"case 10 failed\"" } ], - "id": 50385, + "id": 50382, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5806,7 +5806,7 @@ "typeString": "function (bool,string memory) pure" } }, - "id": 50390, + "id": 50387, "isConstant": false, "isLValue": false, "isPure": false, @@ -5822,7 +5822,7 @@ "typeString": "tuple()" } }, - "id": 50391, + "id": 50388, "nodeType": "ExpressionStatement", "src": "2883:40:64" } @@ -5835,18 +5835,18 @@ "name": "testFullMath", "nameLocation": "541:12:64", "parameters": { - "id": 50087, + "id": 50084, "nodeType": "ParameterList", "parameters": [], "src": "553:2:64" }, "returnParameters": { - "id": 50088, + "id": 50085, "nodeType": "ParameterList", "parameters": [], "src": "568:0:64" }, - "scope": 50394, + "scope": 50391, "stateMutability": "pure", "virtual": false, "visibility": "public" @@ -5856,7 +5856,7 @@ "baseContracts": [ { "baseName": { - "id": 50075, + "id": 50072, "name": "Test", "nameLocations": [ "436:4:64" @@ -5865,7 +5865,7 @@ "referencedDeclaration": 11937, "src": "436:4:64" }, - "id": 50076, + "id": 50073, "nodeType": "InheritanceSpecifier", "src": "436:4:64" } @@ -5878,7 +5878,7 @@ "21582": 1 }, "linearizedBaseContracts": [ - 50394, + 50391, 11937, 2357, 2354, @@ -5892,7 +5892,7 @@ ], "name": "TestFullMath", "nameLocation": "420:12:64", - "scope": 50395, + "scope": 50392, "usedErrors": [], "usedEvents": [ 5, diff --git a/deployment/alpha/out/TestOrder.sol/TestOrder.json b/deployment/alpha/out/TestOrder.sol/TestOrder.json index 3c4d2d9..aea1c5b 100644 --- a/deployment/alpha/out/TestOrder.sol/TestOrder.json +++ b/deployment/alpha/out/TestOrder.sol/TestOrder.json @@ -884,7 +884,7 @@ } ], "bytecode": { - "object": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c058615641781556006805460ff60a81b1916600160a81b179055600a805460ff1916909117905534801561007857600080fd5b5061b57e80620000896000396000f3fe60806040523480156200001157600080fd5b5060043610620002535760003560e01c8063916a17c61162000142578063d21220a711620000cc578063e1c7392a1162000097578063e3baf41a116200007a578063e3baf41a1462000565578063fa7626d4146200057c578063fbfa77cf14620005a357600080fd5b8063e1c7392a1462000551578063e20c9f71146200055b57600080fd5b8063d21220a714620004b9578063d6f1300214620004da578063ddca3f431462000503578063df791e50146200053a57600080fd5b8063b5508aa9116200010d578063b5508aa9146200046d578063ba414fa61462000477578063c45a01551462000481578063c578d91d14620004a257600080fd5b8063916a17c6146200041f5780639febdbf71462000429578063a035b1fe1462000433578063a54a72b7146200044c57600080fd5b80634a09d3dd11620001e15780636fe2ae0e11620001ac5780637303e913116200018f5780637303e91314620003db57806385226c8114620003fc5780638e3b558a146200041557600080fd5b80636fe2ae0e14620003c75780637083accc14620003d157600080fd5b80634a09d3dd146200033c57806353486e2f146200036257806366d9a9a0146200037957806367e368fc146200039257600080fd5b80631ed7831c11620002225780631ed7831c14620002ee5780632b3297f914620003075780633e5e3c2314620003285780633f7286f4146200033257600080fd5b80630a9254e414620002585780630dfe1681146200026457806316f0115b146200029d5780631bf6c21b14620002cd575b600080fd5b62000262620005c4565b005b600554620002859073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003ae9565b60405180910390f35b600254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003b3d565b600454620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f862000982565b60405162000294919062003baa565b600154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f8620009f3565b620002f862000a62565b620003536200034d36600462003c38565b62000ad1565b60405162000294919062003ca4565b620002626200037336600462003ccd565b62000c7c565b6200038362000cdc565b60405162000294919062003e33565b600654620003b89074010000000000000000000000000000000000000000900460ff1681565b60405162000294919062003e51565b6200026262000df1565b6200026262001229565b600054620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b6200040662001a36565b60405162000294919062003f42565b6200026262001b10565b620003836200204c565b6200026262002158565b6200043d6200248c565b60405162000294919062003f74565b600354620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620004066200252f565b620003b862002609565b602154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b62000262620004b336600462003f84565b620027c3565b600654620002859073ffffffffffffffffffffffffffffffffffffffff1681565b620004f1620004eb36600462003fa7565b62002a15565b6040516200029494939291906200401a565b6002546200052b9074010000000000000000000000000000000000000000900462ffffff1681565b6040516200029491906200406c565b620003536200054b3660046200407c565b62002a3b565b6200026262002b59565b620002f862003109565b6200026262000576366004620040c4565b62003178565b600654620003b8907501000000000000000000000000000000000000000000900460ff1681565b602254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620005ce62002b59565b604051620005dc9062003a9c565b604051809103906000f080158015620005f9573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556040517f5eb512e7000000000000000000000000000000000000000000000000000000008152635eb512e7906200067a90309060040162003ae9565b6020604051808303816000875af11580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c091906200411b565b602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600354604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051600093929092169163313ce567916004808201926020929091908290030181865afa15801562000761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000787919062004156565b6200079490600a620042d8565b620007a390620186a06200430b565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262000803921690859060040162004336565b600060405180830381600087803b1580156200081e57600080fd5b505af115801562000833573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008cd919062004156565b620008da90600a620042d8565b620008e990620186a06200430b565b600480546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff918216936340c10f19936200094a939092169186910162004336565b600060405180830381600087803b1580156200096557600080fd5b505af11580156200097a573d6000803e3d6000fd5b505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620009e957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b39262000b2e921690879060040162004336565b6020604051808303816000875af115801562000b4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b7491906200436c565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf3899062000c2a9084906004016200442e565b6020604051808303816000875af115801562000c4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7091906200444d565b9150505b949350505050565b6000600262000c9485670de0b6b3a76400006200430b565b62000ca091906200449f565b90506000600262000cb586620f42406200430b565b62000cc191906200449f565b905062000cd18282868662002a15565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000dcf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d7b5790505b5050505050815250508152602001906001019062000d00565b50505050905090565b60408051600380825260808201909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000e0957505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162000e4c579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062000ebd5762000ebd620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000edf579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b3c9608091398152508160008151811062000f505762000f50620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000f72579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b449608091398152508160008151811062000fe35762000fe3620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200184815250846000815181106200101f576200101f620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200183815250846001815181106200105b576200105b620044ec565b6020026020010181905250604051806040016040528061555561ffff1681526020018281525084600281518110620010975762001097620044ec565b6020026020010181905250600060405180610100016040528073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff1681526020017382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600180811115620011305762001130620044bd565b81526101f460209182015290825268056bc75e2d631000008282015260016040808401919091526000606084015267ffffffffffffffff608084015260a09092018890529051919250620011a1916200118c9184910162004799565b6040516020818303038152906040526200324c565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f1c6d05190620011f990849060040162004799565b600060405180830381600087803b1580156200121457600080fd5b505af115801562000cd1573d6000803e3d6000fd5b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200124057505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620012835790505090506000612710620012bd6200248c565b620012cb90612711620047ae565b620012d79190620047fd565b6040805160a081018252600181526000602080830182905282840182905273ffffffffffffffffffffffffffffffffffffffff85166060840152608083018290529251939450926200132a9201620048ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091529150806001815260200182815250836000815181106200137f576200137f620044ec565b6020026020010181905250604051806040016040528061ffff801681526020018481525084600081518110620013b957620013b9620044ec565b60200260200101819052506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600a8273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001461919062004156565b6200146e90600a620042d8565b6200147b9060036200430b565b6200148791906200449f565b6022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff808516926340c10f1992620014e4921690859060040162004336565b600060405180830381600087803b158015620014ff57600080fd5b505af115801562001514573d6000803e3d6000fd5b5050604080516101008101825260055473ffffffffffffffffffffffffffffffffffffffff9081168252600654811660208084019190915283518085018552600180825260025474010000000000000000000000000000000000000000900462ffffff168284015284860191909152606084018890526080840152600060a0840181905267ffffffffffffffff60c085015260e084018d905260225485517fe78f84e700000000000000000000000000000000000000000000000000000000815295519497509095509091169263e78f84e792600480830193928290030181865afa15801562001608573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162e9190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d051906200168790859060040162004799565b600060405180830381600087803b158015620016a257600080fd5b505af1158015620016b7573d6000803e3d6000fd5b50505050620016fb6040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b620017108167ffffffffffffffff1662003372565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620017939190600401620048fd565b600060405180830381600087803b158015620017ae57600080fd5b505af1158015620017c3573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d93506200182f92869291906004016200493a565b600060405180830381600087803b1580156200184a57600080fd5b505af11580156200185f573d6000803e3d6000fd5b50505050620018876040518060600160405280603081526020016200b37560309139620032df565b6200189286620027c3565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620019159190600401620048fd565b600060405180830381600087803b1580156200193057600080fd5b505af115801562001945573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d9350620019b192869291906004016200493a565b600060405180830381600087803b158015620019cc57600080fd5b505af1158015620019e1573d6000803e3d6000fd5b5050505062001a0861271087612711620019fc9190620047ae565b620004b39190620047fd565b62001a2c6040518060600160405280602481526020016200b3a560249139620032df565b5050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000de857838290600052602060002001805462001a7c9062004997565b80601f016020809104026020016040519081016040528092919081815260200182805462001aaa9062004997565b801562001afb5780601f1062001acf5761010080835404028352916020019162001afb565b820191906000526020600020905b81548152906001019060200180831162001add57829003601f168201915b50505050508152602001906001019062001a5a565b604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162001b2757505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162001b6a579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062001bdb5762001bdb620044ec565b6020026020010181905250604051806040016040528061ffff80168152602001828152508260008151811062001c155762001c15620044ec565b60200260200101819052506000600a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb8919062004156565b62001cc590600a620042d8565b62001cd29060036200430b565b62001cde91906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262001d3e921690859060040162004336565b600060405180830381600087803b15801562001d5957600080fd5b505af115801562001d6e573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600180825260025474010000000000000000000000000000000000000000900462ffffff168284015285870191909152606085018990526080850152600060a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e899190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d0519062001ee290859060040162004799565b600060405180830381600087803b15801562001efd57600080fd5b505af115801562001f12573d6000803e3d6000fd5b5050505062001f566040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b62001f6b8167ffffffffffffffff1662003372565b60225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692636e98833d9262001fd19286926004016200493a565b600060405180830381600087803b15801562001fec57600080fd5b505af115801562002001573d6000803e3d6000fd5b50505050620020456040518060400160405280600881526020017f6578656375746564000000000000000000000000000000000000000000000000815250620032df565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200213f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020eb5790505b5050505050815250508152602001906001019062002070565b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200216f57505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620021b2579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c96080913981525081600081518110620022235762002223620044ec565b6020026020010181905250604051806040016040528061ffff8016815260200182815250826000815181106200225d576200225d620044ec565b60200260200101819052506000600a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002300919062004156565b6200230d90600a620042d8565b6200231a9060036200430b565b6200232691906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262002386921690859060040162004336565b600060405180830381600087803b158015620023a157600080fd5b505af1158015620023b6573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600181526101f481830152848601526060840188905260006080850181905260a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620024fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025239190620049ff565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b8282101562000de8578382906000526020600020018054620025759062004997565b80601f0160208091040260200160405190810160405280929190818152602001828054620025a39062004997565b8015620025f45780601f10620025c857610100808354040283529160200191620025f4565b820191906000526020600020905b815481529060010190602001808311620025d657829003601f168201915b50505050508152602001906001019062002553565b600654600090760100000000000000000000000000000000000000000000900460ff1615620026565750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620027be57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490620026e49083907f6661696c656400000000000000000000000000000000000000000000000000009060200162004336565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262002722929160200162004ac3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200275c9162004ae0565b6000604051808303816000865af19150503d80600081146200279b576040519150601f19603f3d011682016040523d82523d6000602084013e620027a0565b606091505b5091505080806020019051810190620027ba91906200436c565b9150505b919050565b620028036040518060400160405280600b81526020017f73776170546f5072696365000000000000000000000000000000000000000000815250620032df565b620028248173ffffffffffffffffffffffffffffffffffffffff1662003372565b6000620028306200248c565b9050620028538173ffffffffffffffffffffffffffffffffffffffff1662003372565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200288b575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620028e05760065473ffffffffffffffffffffffffffffffffffffffff16620028fa565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620029515760065473ffffffffffffffffffffffffffffffffffffffff166200296b565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f1990620029d3903090859060040162004336565b600060405180830381600087803b158015620029ee57600080fd5b505af115801562002a03573d6000803e3d6000fd5b505050506200097a8383838862000ad1565b60008060008062002a298888888862003405565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002aac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ad291906200411b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161462002b2c5762002b26600173fffd8963efd1fc6a506488495d951d5263988d2662004aee565b62002b3e565b62002b3e6401000276a3600162004b1f565b905062002b4e8585858462000ad1565b9150505b9392505050565b601260405162002b699062003aaa565b62002b75919062004bba565b604051809103906000f08015801562002b92573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262002c1690620032df565b60035462002c3a9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600660405162002c4a9062003aaa565b62002c56919062004c59565b604051809103906000f08015801562002c73573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262002cf790620032df565b60045462002d1b9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662002df05760035473ffffffffffffffffffffffffffffffffffffffff1662002e0a565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662002e915760045473ffffffffffffffffffffffffffffffffffffffff1662002eab565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662002f26576910c6f7a0b5ed8d36b4c762002f37565b6e0f42400000000000000000000000005b905062002f5d6040518060800160405280605381526020016200b32260539139620032df565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462002fe494908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162004c80565b6020604051808303816000875af115801562003004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200302a91906200411b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c000000000000000000000000000000000000000000000000006020820152620030ae90620032df565b600254620030d29073ffffffffffffffffffffffffffffffffffffffff16620039e8565b62003106629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003738162004cbd565b50565b60606012805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60008160020b136200318957600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620031fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032209190620049ff565b5050505050915050620032478383836200323b919062004d05565b62000373858562004d5c565b505050565b6200310681604051602401620032639190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905262003a76565b6200310681604051602401620032f69190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262003a76565b620031068160405160240162003389919062003ca4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f10000000000000000000000000000000000000000000000000000000017905262003a76565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620034689030908c9060040162004336565b600060405180830381600087803b1580156200348357600080fd5b505af115801562003498573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b39350620034fb92909116908c9060040162004336565b6020604051808303816000875af11580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354191906200436c565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200359b9130918c910162004336565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200362e9391909216918c910162004336565b6020604051808303816000875af11580156200364e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367491906200436c565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa158015620036e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370c919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062003763908a90859060040162004de0565b602060405180830381865af415801562003781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a7919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620037fe908990859060040162004de0565b602060405180830381865af41580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062004db2565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620039199185910162004ee3565b6080604051808303816000875af115801562003939573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200395f919062004f1b565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620039a890620032df565b620039c5856fffffffffffffffffffffffffffffffff1662003372565b620039d08462003372565b620039db8362003372565b5050945094509450949050565b6200310681604051602401620039ff919062003ae9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b620031068180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8062004f7683390190565b6111fd806200a12583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62003ae38162003ab8565b82525050565b6020810162003ad2828462003ad8565b600073ffffffffffffffffffffffffffffffffffffffff821662003ad2565b600062003ad28262003af9565b600062003ad28262003b18565b62003ae38162003b25565b6020810162003ad2828462003b32565b62003b59828262003ad8565b5060200190565b600062003b6b825190565b808452602093840193830160005b8281101562003ba05762003b8f86835162003b4d565b955060208201915060010162003b79565b5093949350505050565b60208152600062002b52602083018462003b60565b600062003ad28262003ab8565b62003bd78162003bbf565b81146200310657600080fd5b80358062003bf18162003bcc565b5092915050565b8062003bd7565b80358062003bf18162003bf8565b73ffffffffffffffffffffffffffffffffffffffff811662003bd7565b80358062003bf18162003c0d565b6000806000806080858703121562003c535762003c53600080fd5b62003c5f868662003be3565b935062003c70866020870162003be3565b925062003c81866040870162003bff565b915062003c92866060870162003c2a565b905092959194509250565b8062003ae3565b6020810162003ad2828462003c9d565b62003bd78160020b90565b80358062003bf18162003cb4565b60008060006060848603121562003ce75762003ce7600080fd5b62003cf3858562003bff565b925062003d04856020860162003cbf565b915062003d15856040860162003cbf565b90509250925092565b7fffffffff00000000000000000000000000000000000000000000000000000000811662003ae3565b62003b59828262003d1e565b600062003d5e825190565b808452602093840193830160005b8281101562003ba05762003d8286835162003d47565b955060208201915060010162003d6c565b62003da082825162003ad8565b600060208201516040602085015262000c74604085018262003d53565b600062002b52838362003d93565b600062003dd6825190565b808452602084018094508160051b810162003df18560200190565b60005b8481101562003e2757838303885262003e0f83835162003dbd565b92506020820160209890980197915060010162003df4565b50909695505050505050565b60208152600062002b52602083018462003dcb565b80151562003ae3565b6020810162003ad2828462003e48565b60005b8381101562003e7e57818101518382015260200162003e64565b50506000910152565b600062003e92825190565b8084526020840162003ea982826020870162003e61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b600062002b52838362003e87565b600062003ef1825190565b808452602084018094508160051b810162003f0c8560200190565b60005b8481101562003e2757838303885262003f2a83835162003ed8565b92506020820160209890980197915060010162003f0f565b60208152600062002b52602083018462003ee6565b73ffffffffffffffffffffffffffffffffffffffff811662003ae3565b6020810162003ad2828462003f57565b60006020828403121562003f9b5762003f9b600080fd5b62002b52838362003c2a565b6000806000806080858703121562003fc25762003fc2600080fd5b62003fce868662003bff565b935062003fdf866020870162003bff565b925062003ff0866040870162003cbf565b915062003c92866060870162003cbf565b6fffffffffffffffffffffffffffffffff811662003ae3565b608081016200402a828762003c9d565b62004039602083018662004001565b62004048604083018562003c9d565b62004057606083018462003c9d565b95945050505050565b62ffffff811662003ae3565b6020810162003ad2828462004060565b600080600060608486031215620040965762004096600080fd5b620040a2858562003be3565b9250620040b3856020860162003be3565b915062003d15856040860162003bff565b60008060408385031215620040dc57620040dc600080fd5b620040e8848462003bff565b9150620040f9846020850162003cbf565b90509250929050565b62003bd78162003ab8565b80518062003bf18162004102565b600060208284031215620041325762004132600080fd5b62002b5283836200410d565b60ff811662003bd7565b80518062003bf1816200413e565b6000602082840312156200416d576200416d600080fd5b62002b52838362004148565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80825b6001851115620041ee57808604811115620041ca57620041ca62004179565b6001851615620041d957908102905b8002620041e68560011c90565b9450620041ab565b94509492505050565b600082620042085750600162002b52565b81620042175750600062002b52565b81600181146200423057600281146200423b5762004271565b600191505062002b52565b60ff8411156200424f576200424f62004179565b6001841b8092508581111562004269576200426962004179565b505062002b52565b5060208310610133831016604e8410600b8410161715620042ab575081810a8084811115620042a457620042a462004179565b5062002b52565b620042ba8484846001620041a8565b808604821115620042cf57620042cf62004179565b02949350505050565b60008162000c747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861683620041f7565b600081838181025b80935082810482148315176200432d576200432d62004179565b50505092915050565b6040810162004346828562003ad8565b62002b52602083018462003c9d565b80151562003bd7565b80518062003bf18162004355565b600060208284031215620043835762004383600080fd5b62002b5283836200435e565b6200439c82825162003ad8565b6020810151620043b0602084018262003ad8565b506040810151620043c5604084018262004060565b506060810151620043da606084018262003ad8565b506080810151620043ef608084018262003c9d565b5060a08101516200440460a084018262003c9d565b5060c08101516200441960c084018262003c9d565b5060e08101516200324760e084018262003f57565b610100810162003ad282846200438f565b80518062003bf18162003bf8565b600060208284031215620044645762004464600080fd5b62002b5283836200443f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081835b80620044b457620044b462004470565b90049392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60028110620031065762003106620044bd565b80620027be816200451b565b600062003ad2826200452e565b62003ae3816200453a565b6200455f82825162004547565b602081015162003247602084018262004060565b67ffffffffffffffff811662003ae3565b61ffff811662003ae3565b60038110620031065762003106620044bd565b80620027be816200458f565b600062003ad282620045a2565b62003ae381620045ae565b620045d3828251620045bb565b600060208201516040602085015262000c74604085018262003e87565b600062002b528383620045c6565b600062004609825190565b808452602084018094508160051b8101620046248560200190565b60005b8481101562003e2757838303885262004642838351620045f0565b92506020820160209890980197915060010162004627565b6200466782825162004584565b600060208201516040602085015262000c746040850182620045fe565b600062002b5283836200465a565b60006200469d825190565b808452602084018094508160051b8101620046b88560200190565b60005b8481101562003e27578383038852620046d683835162004684565b925060208201602098909801979150600101620046bb565b620046fb82825162003ad8565b6000602082015162004711602085018262003ad8565b50604082015162004726604085018262004552565b5060608201516200473b608085018262003c9d565b5060808201516200475060a085018262003e48565b5060a08201516200476560c085018262003e48565b5060c08201516200477a60e085018262004573565b5060e082015161012061010085015262000c7461012085018262004692565b60208152600062002b526020830184620046ee565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8282021662004313565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8416620044a4565b63ffffffff811662003ae3565b62003ae38160130b90565b6200485882825162003e48565b60208101516200486c602084018262003e48565b50604081015162004881604084018262004833565b50606081015162004896606084018262003f57565b50608081015162003247608084018262004840565b60a0810162003ad282846200484b565b67ffffffffffffffff811662003bd7565b80518062003bf181620048bb565b600060208284031215620048f157620048f1600080fd5b62002b528383620048cc565b60208152600062002b52602083018462003e87565b600060ff821662003ad2565b62003ae38162004912565b6200493682825162003c9d565b5050565b606081016200494a828662004573565b6200495960208301856200491e565b62000c74604083018462004929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680620049ae57607f821692505b602083108103620049c357620049c362004968565b5050919050565b80518062003bf18162003c0d565b80518062003bf18162003cb4565b61ffff811662003bd7565b80518062003bf181620049e6565b600080600080600080600060e0888a03121562004a1f5762004a1f600080fd5b62004a2b8989620049ca565b965062004a3c8960208a01620049d8565b955062004a4d8960408a01620049f1565b945062004a5e8960608a01620049f1565b935062004a6f8960808a01620049f1565b925062004a808960a08a0162004148565b915062004a918960c08a016200435e565b905092959891949750929550565b600062004aaa825190565b8362004abb82826020870162003e61565b019392505050565b62004acf818462003d1e565b600062000c74600483018462004a9f565b600062002b52828462004a9f565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390819081111562003bf15762003bf162004179565b73ffffffffffffffffffffffffffffffffffffffff8281168282160190819081111562003bf15762003bf162004179565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004bce6060830162004b50565b828103602084015262004be18162004b87565b91505062003ad260408301846200491e565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262004b7e565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004c6d6060830162004bf3565b828103602084015262004be18162004c26565b6080810162004c90828762003ad8565b62004c9f602083018662003ad8565b62004cae604083018562004060565b62004057606083018462003f57565b600062004cca8260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362004cfc5762004cfc62004179565b60000392915050565b600062004d128260020b90565b62004d1d8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171562003bf15762003bf162004179565b600062004d698260020b90565b62004d748460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212171562003bf15762003bf162004179565b60006020828403121562004dc95762004dc9600080fd5b62002b528383620049d8565b62003ae38160020b90565b6040810162004df0828562004dd5565b62002b52602083018462004dd5565b62004e0c82825162003ad8565b602081015162004e20602084018262003ad8565b50604081015162004e35604084018262004060565b50606081015162004e4a606084018262004dd5565b50608081015162004e5f608084018262004dd5565b5060a081015162004e7460a084018262003c9d565b5060c081015162004e8960c084018262003c9d565b5060e081015162004e9e60e084018262003c9d565b5061010081015162004eb561010084018262003c9d565b5061012081015162004ecc61012084018262003ad8565b506101408101516200324761014084018262003c9d565b610160810162003ad2828462004dff565b6fffffffffffffffffffffffffffffffff811662003bd7565b80518062003bf18162004ef4565b6000806000806080858703121562004f365762004f36600080fd5b62004f4286866200443f565b935062004f53866020870162004f0d565b925062004f6486604087016200443f565b915062003c9286606087016200443f56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c6343000816003360806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726c7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d69742070726963657375636365737366756c6c79206578656375746564206174206c696d6974207072696365000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500a2646970667358221220ec235c3410207ac4a1e58d5ffcb4e1cdc084b9d866ed44ff47754a4db02013ef64736f6c63430008160033", + "object": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c058615641781556006805460ff60a81b1916600160a81b179055600a805460ff1916909117905534801561007857600080fd5b5061b57e80620000896000396000f3fe60806040523480156200001157600080fd5b5060043610620002535760003560e01c8063916a17c61162000142578063d21220a711620000cc578063e1c7392a1162000097578063e3baf41a116200007a578063e3baf41a1462000565578063fa7626d4146200057c578063fbfa77cf14620005a357600080fd5b8063e1c7392a1462000551578063e20c9f71146200055b57600080fd5b8063d21220a714620004b9578063d6f1300214620004da578063ddca3f431462000503578063df791e50146200053a57600080fd5b8063b5508aa9116200010d578063b5508aa9146200046d578063ba414fa61462000477578063c45a01551462000481578063c578d91d14620004a257600080fd5b8063916a17c6146200041f5780639febdbf71462000429578063a035b1fe1462000433578063a54a72b7146200044c57600080fd5b80634a09d3dd11620001e15780636fe2ae0e11620001ac5780637303e913116200018f5780637303e91314620003db57806385226c8114620003fc5780638e3b558a146200041557600080fd5b80636fe2ae0e14620003c75780637083accc14620003d157600080fd5b80634a09d3dd146200033c57806353486e2f146200036257806366d9a9a0146200037957806367e368fc146200039257600080fd5b80631ed7831c11620002225780631ed7831c14620002ee5780632b3297f914620003075780633e5e3c2314620003285780633f7286f4146200033257600080fd5b80630a9254e414620002585780630dfe1681146200026457806316f0115b146200029d5780631bf6c21b14620002cd575b600080fd5b62000262620005c4565b005b600554620002859073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003ae9565b60405180910390f35b600254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003b3d565b600454620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f862000982565b60405162000294919062003baa565b600154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f8620009f3565b620002f862000a62565b620003536200034d36600462003c38565b62000ad1565b60405162000294919062003ca4565b620002626200037336600462003ccd565b62000c7c565b6200038362000cdc565b60405162000294919062003e33565b600654620003b89074010000000000000000000000000000000000000000900460ff1681565b60405162000294919062003e51565b6200026262000df1565b6200026262001229565b600054620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b6200040662001a36565b60405162000294919062003f42565b6200026262001b10565b620003836200204c565b6200026262002158565b6200043d6200248c565b60405162000294919062003f74565b600354620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620004066200252f565b620003b862002609565b602154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b62000262620004b336600462003f84565b620027c3565b600654620002859073ffffffffffffffffffffffffffffffffffffffff1681565b620004f1620004eb36600462003fa7565b62002a15565b6040516200029494939291906200401a565b6002546200052b9074010000000000000000000000000000000000000000900462ffffff1681565b6040516200029491906200406c565b620003536200054b3660046200407c565b62002a3b565b6200026262002b59565b620002f862003109565b6200026262000576366004620040c4565b62003178565b600654620003b8907501000000000000000000000000000000000000000000900460ff1681565b602254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620005ce62002b59565b604051620005dc9062003a9c565b604051809103906000f080158015620005f9573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556040517f5eb512e7000000000000000000000000000000000000000000000000000000008152635eb512e7906200067a90309060040162003ae9565b6020604051808303816000875af11580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c091906200411b565b602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600354604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051600093929092169163313ce567916004808201926020929091908290030181865afa15801562000761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000787919062004156565b6200079490600a620042d8565b620007a390620186a06200430b565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262000803921690859060040162004336565b600060405180830381600087803b1580156200081e57600080fd5b505af115801562000833573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008cd919062004156565b620008da90600a620042d8565b620008e990620186a06200430b565b600480546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff918216936340c10f19936200094a939092169186910162004336565b600060405180830381600087803b1580156200096557600080fd5b505af11580156200097a573d6000803e3d6000fd5b505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620009e957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b39262000b2e921690879060040162004336565b6020604051808303816000875af115801562000b4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b7491906200436c565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf3899062000c2a9084906004016200442e565b6020604051808303816000875af115801562000c4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7091906200444d565b9150505b949350505050565b6000600262000c9485670de0b6b3a76400006200430b565b62000ca091906200449f565b90506000600262000cb586620f42406200430b565b62000cc191906200449f565b905062000cd18282868662002a15565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000dcf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d7b5790505b5050505050815250508152602001906001019062000d00565b50505050905090565b60408051600380825260808201909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000e0957505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162000e4c579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062000ebd5762000ebd620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000edf579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b3c9608091398152508160008151811062000f505762000f50620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000f72579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b449608091398152508160008151811062000fe35762000fe3620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200184815250846000815181106200101f576200101f620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200183815250846001815181106200105b576200105b620044ec565b6020026020010181905250604051806040016040528061555561ffff1681526020018281525084600281518110620010975762001097620044ec565b6020026020010181905250600060405180610100016040528073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff1681526020017382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600180811115620011305762001130620044bd565b81526101f460209182015290825268056bc75e2d631000008282015260016040808401919091526000606084015267ffffffffffffffff608084015260a09092018890529051919250620011a1916200118c9184910162004799565b6040516020818303038152906040526200324c565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f1c6d05190620011f990849060040162004799565b600060405180830381600087803b1580156200121457600080fd5b505af115801562000cd1573d6000803e3d6000fd5b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200124057505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620012835790505090506000612710620012bd6200248c565b620012cb90612711620047ae565b620012d79190620047fd565b6040805160a081018252600181526000602080830182905282840182905273ffffffffffffffffffffffffffffffffffffffff85166060840152608083018290529251939450926200132a9201620048ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091529150806001815260200182815250836000815181106200137f576200137f620044ec565b6020026020010181905250604051806040016040528061ffff801681526020018481525084600081518110620013b957620013b9620044ec565b60200260200101819052506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600a8273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001461919062004156565b6200146e90600a620042d8565b6200147b9060036200430b565b6200148791906200449f565b6022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff808516926340c10f1992620014e4921690859060040162004336565b600060405180830381600087803b158015620014ff57600080fd5b505af115801562001514573d6000803e3d6000fd5b5050604080516101008101825260055473ffffffffffffffffffffffffffffffffffffffff9081168252600654811660208084019190915283518085018552600180825260025474010000000000000000000000000000000000000000900462ffffff168284015284860191909152606084018890526080840152600060a0840181905267ffffffffffffffff60c085015260e084018d905260225485517fe78f84e700000000000000000000000000000000000000000000000000000000815295519497509095509091169263e78f84e792600480830193928290030181865afa15801562001608573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162e9190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d051906200168790859060040162004799565b600060405180830381600087803b158015620016a257600080fd5b505af1158015620016b7573d6000803e3d6000fd5b50505050620016fb6040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b620017108167ffffffffffffffff1662003372565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620017939190600401620048fd565b600060405180830381600087803b158015620017ae57600080fd5b505af1158015620017c3573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d93506200182f92869291906004016200493a565b600060405180830381600087803b1580156200184a57600080fd5b505af11580156200185f573d6000803e3d6000fd5b50505050620018876040518060600160405280603081526020016200b37560309139620032df565b6200189286620027c3565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620019159190600401620048fd565b600060405180830381600087803b1580156200193057600080fd5b505af115801562001945573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d9350620019b192869291906004016200493a565b600060405180830381600087803b158015620019cc57600080fd5b505af1158015620019e1573d6000803e3d6000fd5b5050505062001a0861271087612711620019fc9190620047ae565b620004b39190620047fd565b62001a2c6040518060600160405280602481526020016200b3a560249139620032df565b5050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000de857838290600052602060002001805462001a7c9062004997565b80601f016020809104026020016040519081016040528092919081815260200182805462001aaa9062004997565b801562001afb5780601f1062001acf5761010080835404028352916020019162001afb565b820191906000526020600020905b81548152906001019060200180831162001add57829003601f168201915b50505050508152602001906001019062001a5a565b604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162001b2757505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162001b6a579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062001bdb5762001bdb620044ec565b6020026020010181905250604051806040016040528061ffff80168152602001828152508260008151811062001c155762001c15620044ec565b60200260200101819052506000600a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb8919062004156565b62001cc590600a620042d8565b62001cd29060036200430b565b62001cde91906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262001d3e921690859060040162004336565b600060405180830381600087803b15801562001d5957600080fd5b505af115801562001d6e573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600180825260025474010000000000000000000000000000000000000000900462ffffff168284015285870191909152606085018990526080850152600060a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e899190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d0519062001ee290859060040162004799565b600060405180830381600087803b15801562001efd57600080fd5b505af115801562001f12573d6000803e3d6000fd5b5050505062001f566040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b62001f6b8167ffffffffffffffff1662003372565b60225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692636e98833d9262001fd19286926004016200493a565b600060405180830381600087803b15801562001fec57600080fd5b505af115801562002001573d6000803e3d6000fd5b50505050620020456040518060400160405280600881526020017f6578656375746564000000000000000000000000000000000000000000000000815250620032df565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200213f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020eb5790505b5050505050815250508152602001906001019062002070565b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200216f57505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620021b2579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c96080913981525081600081518110620022235762002223620044ec565b6020026020010181905250604051806040016040528061ffff8016815260200182815250826000815181106200225d576200225d620044ec565b60200260200101819052506000600a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002300919062004156565b6200230d90600a620042d8565b6200231a9060036200430b565b6200232691906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262002386921690859060040162004336565b600060405180830381600087803b158015620023a157600080fd5b505af1158015620023b6573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600181526101f481830152848601526060840188905260006080850181905260a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620024fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025239190620049ff565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b8282101562000de8578382906000526020600020018054620025759062004997565b80601f0160208091040260200160405190810160405280929190818152602001828054620025a39062004997565b8015620025f45780601f10620025c857610100808354040283529160200191620025f4565b820191906000526020600020905b815481529060010190602001808311620025d657829003601f168201915b50505050508152602001906001019062002553565b600654600090760100000000000000000000000000000000000000000000900460ff1615620026565750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620027be57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490620026e49083907f6661696c656400000000000000000000000000000000000000000000000000009060200162004336565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262002722929160200162004ac3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200275c9162004ae0565b6000604051808303816000865af19150503d80600081146200279b576040519150601f19603f3d011682016040523d82523d6000602084013e620027a0565b606091505b5091505080806020019051810190620027ba91906200436c565b9150505b919050565b620028036040518060400160405280600b81526020017f73776170546f5072696365000000000000000000000000000000000000000000815250620032df565b620028248173ffffffffffffffffffffffffffffffffffffffff1662003372565b6000620028306200248c565b9050620028538173ffffffffffffffffffffffffffffffffffffffff1662003372565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200288b575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620028e05760065473ffffffffffffffffffffffffffffffffffffffff16620028fa565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620029515760065473ffffffffffffffffffffffffffffffffffffffff166200296b565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f1990620029d3903090859060040162004336565b600060405180830381600087803b158015620029ee57600080fd5b505af115801562002a03573d6000803e3d6000fd5b505050506200097a8383838862000ad1565b60008060008062002a298888888862003405565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002aac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ad291906200411b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161462002b2c5762002b26600173fffd8963efd1fc6a506488495d951d5263988d2662004aee565b62002b3e565b62002b3e6401000276a3600162004b1f565b905062002b4e8585858462000ad1565b9150505b9392505050565b601260405162002b699062003aaa565b62002b75919062004bba565b604051809103906000f08015801562002b92573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262002c1690620032df565b60035462002c3a9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600660405162002c4a9062003aaa565b62002c56919062004c59565b604051809103906000f08015801562002c73573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262002cf790620032df565b60045462002d1b9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662002df05760035473ffffffffffffffffffffffffffffffffffffffff1662002e0a565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662002e915760045473ffffffffffffffffffffffffffffffffffffffff1662002eab565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662002f26576910c6f7a0b5ed8d36b4c762002f37565b6e0f42400000000000000000000000005b905062002f5d6040518060800160405280605381526020016200b32260539139620032df565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462002fe494908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162004c80565b6020604051808303816000875af115801562003004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200302a91906200411b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c000000000000000000000000000000000000000000000000006020820152620030ae90620032df565b600254620030d29073ffffffffffffffffffffffffffffffffffffffff16620039e8565b62003106629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003738162004cbd565b50565b60606012805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60008160020b136200318957600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620031fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032209190620049ff565b5050505050915050620032478383836200323b919062004d05565b62000373858562004d5c565b505050565b6200310681604051602401620032639190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905262003a76565b6200310681604051602401620032f69190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262003a76565b620031068160405160240162003389919062003ca4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f10000000000000000000000000000000000000000000000000000000017905262003a76565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620034689030908c9060040162004336565b600060405180830381600087803b1580156200348357600080fd5b505af115801562003498573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b39350620034fb92909116908c9060040162004336565b6020604051808303816000875af11580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354191906200436c565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200359b9130918c910162004336565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200362e9391909216918c910162004336565b6020604051808303816000875af11580156200364e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367491906200436c565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa158015620036e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370c919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062003763908a90859060040162004de0565b602060405180830381865af415801562003781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a7919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620037fe908990859060040162004de0565b602060405180830381865af41580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062004db2565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620039199185910162004ee3565b6080604051808303816000875af115801562003939573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200395f919062004f1b565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620039a890620032df565b620039c5856fffffffffffffffffffffffffffffffff1662003372565b620039d08462003372565b620039db8362003372565b5050945094509450949050565b6200310681604051602401620039ff919062003ae9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b620031068180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8062004f7683390190565b6111fd806200a12583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62003ae38162003ab8565b82525050565b6020810162003ad2828462003ad8565b600073ffffffffffffffffffffffffffffffffffffffff821662003ad2565b600062003ad28262003af9565b600062003ad28262003b18565b62003ae38162003b25565b6020810162003ad2828462003b32565b62003b59828262003ad8565b5060200190565b600062003b6b825190565b808452602093840193830160005b8281101562003ba05762003b8f86835162003b4d565b955060208201915060010162003b79565b5093949350505050565b60208152600062002b52602083018462003b60565b600062003ad28262003ab8565b62003bd78162003bbf565b81146200310657600080fd5b80358062003bf18162003bcc565b5092915050565b8062003bd7565b80358062003bf18162003bf8565b73ffffffffffffffffffffffffffffffffffffffff811662003bd7565b80358062003bf18162003c0d565b6000806000806080858703121562003c535762003c53600080fd5b62003c5f868662003be3565b935062003c70866020870162003be3565b925062003c81866040870162003bff565b915062003c92866060870162003c2a565b905092959194509250565b8062003ae3565b6020810162003ad2828462003c9d565b62003bd78160020b90565b80358062003bf18162003cb4565b60008060006060848603121562003ce75762003ce7600080fd5b62003cf3858562003bff565b925062003d04856020860162003cbf565b915062003d15856040860162003cbf565b90509250925092565b7fffffffff00000000000000000000000000000000000000000000000000000000811662003ae3565b62003b59828262003d1e565b600062003d5e825190565b808452602093840193830160005b8281101562003ba05762003d8286835162003d47565b955060208201915060010162003d6c565b62003da082825162003ad8565b600060208201516040602085015262000c74604085018262003d53565b600062002b52838362003d93565b600062003dd6825190565b808452602084018094508160051b810162003df18560200190565b60005b8481101562003e2757838303885262003e0f83835162003dbd565b92506020820160209890980197915060010162003df4565b50909695505050505050565b60208152600062002b52602083018462003dcb565b80151562003ae3565b6020810162003ad2828462003e48565b60005b8381101562003e7e57818101518382015260200162003e64565b50506000910152565b600062003e92825190565b8084526020840162003ea982826020870162003e61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b600062002b52838362003e87565b600062003ef1825190565b808452602084018094508160051b810162003f0c8560200190565b60005b8481101562003e2757838303885262003f2a83835162003ed8565b92506020820160209890980197915060010162003f0f565b60208152600062002b52602083018462003ee6565b73ffffffffffffffffffffffffffffffffffffffff811662003ae3565b6020810162003ad2828462003f57565b60006020828403121562003f9b5762003f9b600080fd5b62002b52838362003c2a565b6000806000806080858703121562003fc25762003fc2600080fd5b62003fce868662003bff565b935062003fdf866020870162003bff565b925062003ff0866040870162003cbf565b915062003c92866060870162003cbf565b6fffffffffffffffffffffffffffffffff811662003ae3565b608081016200402a828762003c9d565b62004039602083018662004001565b62004048604083018562003c9d565b62004057606083018462003c9d565b95945050505050565b62ffffff811662003ae3565b6020810162003ad2828462004060565b600080600060608486031215620040965762004096600080fd5b620040a2858562003be3565b9250620040b3856020860162003be3565b915062003d15856040860162003bff565b60008060408385031215620040dc57620040dc600080fd5b620040e8848462003bff565b9150620040f9846020850162003cbf565b90509250929050565b62003bd78162003ab8565b80518062003bf18162004102565b600060208284031215620041325762004132600080fd5b62002b5283836200410d565b60ff811662003bd7565b80518062003bf1816200413e565b6000602082840312156200416d576200416d600080fd5b62002b52838362004148565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80825b6001851115620041ee57808604811115620041ca57620041ca62004179565b6001851615620041d957908102905b8002620041e68560011c90565b9450620041ab565b94509492505050565b600082620042085750600162002b52565b81620042175750600062002b52565b81600181146200423057600281146200423b5762004271565b600191505062002b52565b60ff8411156200424f576200424f62004179565b6001841b8092508581111562004269576200426962004179565b505062002b52565b5060208310610133831016604e8410600b8410161715620042ab575081810a8084811115620042a457620042a462004179565b5062002b52565b620042ba8484846001620041a8565b808604821115620042cf57620042cf62004179565b02949350505050565b60008162000c747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861683620041f7565b600081838181025b80935082810482148315176200432d576200432d62004179565b50505092915050565b6040810162004346828562003ad8565b62002b52602083018462003c9d565b80151562003bd7565b80518062003bf18162004355565b600060208284031215620043835762004383600080fd5b62002b5283836200435e565b6200439c82825162003ad8565b6020810151620043b0602084018262003ad8565b506040810151620043c5604084018262004060565b506060810151620043da606084018262003ad8565b506080810151620043ef608084018262003c9d565b5060a08101516200440460a084018262003c9d565b5060c08101516200441960c084018262003c9d565b5060e08101516200324760e084018262003f57565b610100810162003ad282846200438f565b80518062003bf18162003bf8565b600060208284031215620044645762004464600080fd5b62002b5283836200443f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081835b80620044b457620044b462004470565b90049392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60028110620031065762003106620044bd565b80620027be816200451b565b600062003ad2826200452e565b62003ae3816200453a565b6200455f82825162004547565b602081015162003247602084018262004060565b67ffffffffffffffff811662003ae3565b61ffff811662003ae3565b60038110620031065762003106620044bd565b80620027be816200458f565b600062003ad282620045a2565b62003ae381620045ae565b620045d3828251620045bb565b600060208201516040602085015262000c74604085018262003e87565b600062002b528383620045c6565b600062004609825190565b808452602084018094508160051b8101620046248560200190565b60005b8481101562003e2757838303885262004642838351620045f0565b92506020820160209890980197915060010162004627565b6200466782825162004584565b600060208201516040602085015262000c746040850182620045fe565b600062002b5283836200465a565b60006200469d825190565b808452602084018094508160051b8101620046b88560200190565b60005b8481101562003e27578383038852620046d683835162004684565b925060208201602098909801979150600101620046bb565b620046fb82825162003ad8565b6000602082015162004711602085018262003ad8565b50604082015162004726604085018262004552565b5060608201516200473b608085018262003c9d565b5060808201516200475060a085018262003e48565b5060a08201516200476560c085018262003e48565b5060c08201516200477a60e085018262004573565b5060e082015161012061010085015262000c7461012085018262004692565b60208152600062002b526020830184620046ee565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8282021662004313565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8416620044a4565b63ffffffff811662003ae3565b62003ae38160130b90565b6200485882825162003e48565b60208101516200486c602084018262003e48565b50604081015162004881604084018262004833565b50606081015162004896606084018262003f57565b50608081015162003247608084018262004840565b60a0810162003ad282846200484b565b67ffffffffffffffff811662003bd7565b80518062003bf181620048bb565b600060208284031215620048f157620048f1600080fd5b62002b528383620048cc565b60208152600062002b52602083018462003e87565b600060ff821662003ad2565b62003ae38162004912565b6200493682825162003c9d565b5050565b606081016200494a828662004573565b6200495960208301856200491e565b62000c74604083018462004929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680620049ae57607f821692505b602083108103620049c357620049c362004968565b5050919050565b80518062003bf18162003c0d565b80518062003bf18162003cb4565b61ffff811662003bd7565b80518062003bf181620049e6565b600080600080600080600060e0888a03121562004a1f5762004a1f600080fd5b62004a2b8989620049ca565b965062004a3c8960208a01620049d8565b955062004a4d8960408a01620049f1565b945062004a5e8960608a01620049f1565b935062004a6f8960808a01620049f1565b925062004a808960a08a0162004148565b915062004a918960c08a016200435e565b905092959891949750929550565b600062004aaa825190565b8362004abb82826020870162003e61565b019392505050565b62004acf818462003d1e565b600062000c74600483018462004a9f565b600062002b52828462004a9f565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390819081111562003bf15762003bf162004179565b73ffffffffffffffffffffffffffffffffffffffff8281168282160190819081111562003bf15762003bf162004179565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004bce6060830162004b50565b828103602084015262004be18162004b87565b91505062003ad260408301846200491e565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262004b7e565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004c6d6060830162004bf3565b828103602084015262004be18162004c26565b6080810162004c90828762003ad8565b62004c9f602083018662003ad8565b62004cae604083018562004060565b62004057606083018462003f57565b600062004cca8260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362004cfc5762004cfc62004179565b60000392915050565b600062004d128260020b90565b62004d1d8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171562003bf15762003bf162004179565b600062004d698260020b90565b62004d748460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212171562003bf15762003bf162004179565b60006020828403121562004dc95762004dc9600080fd5b62002b528383620049d8565b62003ae38160020b90565b6040810162004df0828562004dd5565b62002b52602083018462004dd5565b62004e0c82825162003ad8565b602081015162004e20602084018262003ad8565b50604081015162004e35604084018262004060565b50606081015162004e4a606084018262004dd5565b50608081015162004e5f608084018262004dd5565b5060a081015162004e7460a084018262003c9d565b5060c081015162004e8960c084018262003c9d565b5060e081015162004e9e60e084018262003c9d565b5061010081015162004eb561010084018262003c9d565b5061012081015162004ecc61012084018262003ad8565b506101408101516200324761014084018262003c9d565b610160810162003ad2828462004dff565b6fffffffffffffffffffffffffffffffff811662003bd7565b80518062003bf18162004ef4565b6000806000806080858703121562004f365762004f36600080fd5b62004f4286866200443f565b935062004f53866020870162004f0d565b925062004f6486604087016200443f565b915062003c9286606087016200443f56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c6343000816003360806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726c7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d69742070726963657375636365737366756c6c79206578656375746564206174206c696d6974207072696365000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500a2646970667358221220fdb3a27b7ae253af6f6436a5c12067064dbb07ff9ca425bda2a118c17702803264736f6c63430008160033", "sourceMap": "257:6879:66:-:0;;;612:87:63;;;-1:-1:-1;;;;;;612:87:63;;;644:42:50;612:87:63;;;;;705:58;;;;;765:42:50;705:58:63;;;1572:26:0;;;-1:-1:-1;;;;1572:26:0;-1:-1:-1;;;1572:26:0;;;3126:44:4;;;-1:-1:-1;;3126:44:4;;;;;;257:6879:66;;;;;;;;;;;;;;;;", "linkReferences": { "src/Util.sol": { @@ -902,7 +902,7 @@ } }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620002535760003560e01c8063916a17c61162000142578063d21220a711620000cc578063e1c7392a1162000097578063e3baf41a116200007a578063e3baf41a1462000565578063fa7626d4146200057c578063fbfa77cf14620005a357600080fd5b8063e1c7392a1462000551578063e20c9f71146200055b57600080fd5b8063d21220a714620004b9578063d6f1300214620004da578063ddca3f431462000503578063df791e50146200053a57600080fd5b8063b5508aa9116200010d578063b5508aa9146200046d578063ba414fa61462000477578063c45a01551462000481578063c578d91d14620004a257600080fd5b8063916a17c6146200041f5780639febdbf71462000429578063a035b1fe1462000433578063a54a72b7146200044c57600080fd5b80634a09d3dd11620001e15780636fe2ae0e11620001ac5780637303e913116200018f5780637303e91314620003db57806385226c8114620003fc5780638e3b558a146200041557600080fd5b80636fe2ae0e14620003c75780637083accc14620003d157600080fd5b80634a09d3dd146200033c57806353486e2f146200036257806366d9a9a0146200037957806367e368fc146200039257600080fd5b80631ed7831c11620002225780631ed7831c14620002ee5780632b3297f914620003075780633e5e3c2314620003285780633f7286f4146200033257600080fd5b80630a9254e414620002585780630dfe1681146200026457806316f0115b146200029d5780631bf6c21b14620002cd575b600080fd5b62000262620005c4565b005b600554620002859073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003ae9565b60405180910390f35b600254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003b3d565b600454620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f862000982565b60405162000294919062003baa565b600154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f8620009f3565b620002f862000a62565b620003536200034d36600462003c38565b62000ad1565b60405162000294919062003ca4565b620002626200037336600462003ccd565b62000c7c565b6200038362000cdc565b60405162000294919062003e33565b600654620003b89074010000000000000000000000000000000000000000900460ff1681565b60405162000294919062003e51565b6200026262000df1565b6200026262001229565b600054620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b6200040662001a36565b60405162000294919062003f42565b6200026262001b10565b620003836200204c565b6200026262002158565b6200043d6200248c565b60405162000294919062003f74565b600354620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620004066200252f565b620003b862002609565b602154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b62000262620004b336600462003f84565b620027c3565b600654620002859073ffffffffffffffffffffffffffffffffffffffff1681565b620004f1620004eb36600462003fa7565b62002a15565b6040516200029494939291906200401a565b6002546200052b9074010000000000000000000000000000000000000000900462ffffff1681565b6040516200029491906200406c565b620003536200054b3660046200407c565b62002a3b565b6200026262002b59565b620002f862003109565b6200026262000576366004620040c4565b62003178565b600654620003b8907501000000000000000000000000000000000000000000900460ff1681565b602254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620005ce62002b59565b604051620005dc9062003a9c565b604051809103906000f080158015620005f9573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556040517f5eb512e7000000000000000000000000000000000000000000000000000000008152635eb512e7906200067a90309060040162003ae9565b6020604051808303816000875af11580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c091906200411b565b602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600354604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051600093929092169163313ce567916004808201926020929091908290030181865afa15801562000761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000787919062004156565b6200079490600a620042d8565b620007a390620186a06200430b565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262000803921690859060040162004336565b600060405180830381600087803b1580156200081e57600080fd5b505af115801562000833573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008cd919062004156565b620008da90600a620042d8565b620008e990620186a06200430b565b600480546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff918216936340c10f19936200094a939092169186910162004336565b600060405180830381600087803b1580156200096557600080fd5b505af11580156200097a573d6000803e3d6000fd5b505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620009e957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b39262000b2e921690879060040162004336565b6020604051808303816000875af115801562000b4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b7491906200436c565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf3899062000c2a9084906004016200442e565b6020604051808303816000875af115801562000c4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7091906200444d565b9150505b949350505050565b6000600262000c9485670de0b6b3a76400006200430b565b62000ca091906200449f565b90506000600262000cb586620f42406200430b565b62000cc191906200449f565b905062000cd18282868662002a15565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000dcf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d7b5790505b5050505050815250508152602001906001019062000d00565b50505050905090565b60408051600380825260808201909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000e0957505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162000e4c579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062000ebd5762000ebd620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000edf579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b3c9608091398152508160008151811062000f505762000f50620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000f72579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b449608091398152508160008151811062000fe35762000fe3620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200184815250846000815181106200101f576200101f620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200183815250846001815181106200105b576200105b620044ec565b6020026020010181905250604051806040016040528061555561ffff1681526020018281525084600281518110620010975762001097620044ec565b6020026020010181905250600060405180610100016040528073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff1681526020017382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600180811115620011305762001130620044bd565b81526101f460209182015290825268056bc75e2d631000008282015260016040808401919091526000606084015267ffffffffffffffff608084015260a09092018890529051919250620011a1916200118c9184910162004799565b6040516020818303038152906040526200324c565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f1c6d05190620011f990849060040162004799565b600060405180830381600087803b1580156200121457600080fd5b505af115801562000cd1573d6000803e3d6000fd5b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200124057505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620012835790505090506000612710620012bd6200248c565b620012cb90612711620047ae565b620012d79190620047fd565b6040805160a081018252600181526000602080830182905282840182905273ffffffffffffffffffffffffffffffffffffffff85166060840152608083018290529251939450926200132a9201620048ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091529150806001815260200182815250836000815181106200137f576200137f620044ec565b6020026020010181905250604051806040016040528061ffff801681526020018481525084600081518110620013b957620013b9620044ec565b60200260200101819052506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600a8273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001461919062004156565b6200146e90600a620042d8565b6200147b9060036200430b565b6200148791906200449f565b6022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff808516926340c10f1992620014e4921690859060040162004336565b600060405180830381600087803b158015620014ff57600080fd5b505af115801562001514573d6000803e3d6000fd5b5050604080516101008101825260055473ffffffffffffffffffffffffffffffffffffffff9081168252600654811660208084019190915283518085018552600180825260025474010000000000000000000000000000000000000000900462ffffff168284015284860191909152606084018890526080840152600060a0840181905267ffffffffffffffff60c085015260e084018d905260225485517fe78f84e700000000000000000000000000000000000000000000000000000000815295519497509095509091169263e78f84e792600480830193928290030181865afa15801562001608573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162e9190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d051906200168790859060040162004799565b600060405180830381600087803b158015620016a257600080fd5b505af1158015620016b7573d6000803e3d6000fd5b50505050620016fb6040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b620017108167ffffffffffffffff1662003372565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620017939190600401620048fd565b600060405180830381600087803b158015620017ae57600080fd5b505af1158015620017c3573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d93506200182f92869291906004016200493a565b600060405180830381600087803b1580156200184a57600080fd5b505af11580156200185f573d6000803e3d6000fd5b50505050620018876040518060600160405280603081526020016200b37560309139620032df565b6200189286620027c3565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620019159190600401620048fd565b600060405180830381600087803b1580156200193057600080fd5b505af115801562001945573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d9350620019b192869291906004016200493a565b600060405180830381600087803b158015620019cc57600080fd5b505af1158015620019e1573d6000803e3d6000fd5b5050505062001a0861271087612711620019fc9190620047ae565b620004b39190620047fd565b62001a2c6040518060600160405280602481526020016200b3a560249139620032df565b5050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000de857838290600052602060002001805462001a7c9062004997565b80601f016020809104026020016040519081016040528092919081815260200182805462001aaa9062004997565b801562001afb5780601f1062001acf5761010080835404028352916020019162001afb565b820191906000526020600020905b81548152906001019060200180831162001add57829003601f168201915b50505050508152602001906001019062001a5a565b604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162001b2757505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162001b6a579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062001bdb5762001bdb620044ec565b6020026020010181905250604051806040016040528061ffff80168152602001828152508260008151811062001c155762001c15620044ec565b60200260200101819052506000600a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb8919062004156565b62001cc590600a620042d8565b62001cd29060036200430b565b62001cde91906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262001d3e921690859060040162004336565b600060405180830381600087803b15801562001d5957600080fd5b505af115801562001d6e573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600180825260025474010000000000000000000000000000000000000000900462ffffff168284015285870191909152606085018990526080850152600060a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e899190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d0519062001ee290859060040162004799565b600060405180830381600087803b15801562001efd57600080fd5b505af115801562001f12573d6000803e3d6000fd5b5050505062001f566040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b62001f6b8167ffffffffffffffff1662003372565b60225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692636e98833d9262001fd19286926004016200493a565b600060405180830381600087803b15801562001fec57600080fd5b505af115801562002001573d6000803e3d6000fd5b50505050620020456040518060400160405280600881526020017f6578656375746564000000000000000000000000000000000000000000000000815250620032df565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200213f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020eb5790505b5050505050815250508152602001906001019062002070565b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200216f57505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620021b2579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c96080913981525081600081518110620022235762002223620044ec565b6020026020010181905250604051806040016040528061ffff8016815260200182815250826000815181106200225d576200225d620044ec565b60200260200101819052506000600a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002300919062004156565b6200230d90600a620042d8565b6200231a9060036200430b565b6200232691906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262002386921690859060040162004336565b600060405180830381600087803b158015620023a157600080fd5b505af1158015620023b6573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600181526101f481830152848601526060840188905260006080850181905260a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620024fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025239190620049ff565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b8282101562000de8578382906000526020600020018054620025759062004997565b80601f0160208091040260200160405190810160405280929190818152602001828054620025a39062004997565b8015620025f45780601f10620025c857610100808354040283529160200191620025f4565b820191906000526020600020905b815481529060010190602001808311620025d657829003601f168201915b50505050508152602001906001019062002553565b600654600090760100000000000000000000000000000000000000000000900460ff1615620026565750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620027be57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490620026e49083907f6661696c656400000000000000000000000000000000000000000000000000009060200162004336565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262002722929160200162004ac3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200275c9162004ae0565b6000604051808303816000865af19150503d80600081146200279b576040519150601f19603f3d011682016040523d82523d6000602084013e620027a0565b606091505b5091505080806020019051810190620027ba91906200436c565b9150505b919050565b620028036040518060400160405280600b81526020017f73776170546f5072696365000000000000000000000000000000000000000000815250620032df565b620028248173ffffffffffffffffffffffffffffffffffffffff1662003372565b6000620028306200248c565b9050620028538173ffffffffffffffffffffffffffffffffffffffff1662003372565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200288b575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620028e05760065473ffffffffffffffffffffffffffffffffffffffff16620028fa565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620029515760065473ffffffffffffffffffffffffffffffffffffffff166200296b565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f1990620029d3903090859060040162004336565b600060405180830381600087803b158015620029ee57600080fd5b505af115801562002a03573d6000803e3d6000fd5b505050506200097a8383838862000ad1565b60008060008062002a298888888862003405565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002aac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ad291906200411b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161462002b2c5762002b26600173fffd8963efd1fc6a506488495d951d5263988d2662004aee565b62002b3e565b62002b3e6401000276a3600162004b1f565b905062002b4e8585858462000ad1565b9150505b9392505050565b601260405162002b699062003aaa565b62002b75919062004bba565b604051809103906000f08015801562002b92573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262002c1690620032df565b60035462002c3a9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600660405162002c4a9062003aaa565b62002c56919062004c59565b604051809103906000f08015801562002c73573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262002cf790620032df565b60045462002d1b9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662002df05760035473ffffffffffffffffffffffffffffffffffffffff1662002e0a565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662002e915760045473ffffffffffffffffffffffffffffffffffffffff1662002eab565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662002f26576910c6f7a0b5ed8d36b4c762002f37565b6e0f42400000000000000000000000005b905062002f5d6040518060800160405280605381526020016200b32260539139620032df565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462002fe494908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162004c80565b6020604051808303816000875af115801562003004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200302a91906200411b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c000000000000000000000000000000000000000000000000006020820152620030ae90620032df565b600254620030d29073ffffffffffffffffffffffffffffffffffffffff16620039e8565b62003106629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003738162004cbd565b50565b60606012805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60008160020b136200318957600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620031fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032209190620049ff565b5050505050915050620032478383836200323b919062004d05565b62000373858562004d5c565b505050565b6200310681604051602401620032639190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905262003a76565b6200310681604051602401620032f69190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262003a76565b620031068160405160240162003389919062003ca4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f10000000000000000000000000000000000000000000000000000000017905262003a76565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620034689030908c9060040162004336565b600060405180830381600087803b1580156200348357600080fd5b505af115801562003498573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b39350620034fb92909116908c9060040162004336565b6020604051808303816000875af11580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354191906200436c565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200359b9130918c910162004336565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200362e9391909216918c910162004336565b6020604051808303816000875af11580156200364e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367491906200436c565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa158015620036e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370c919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062003763908a90859060040162004de0565b602060405180830381865af415801562003781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a7919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620037fe908990859060040162004de0565b602060405180830381865af41580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062004db2565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620039199185910162004ee3565b6080604051808303816000875af115801562003939573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200395f919062004f1b565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620039a890620032df565b620039c5856fffffffffffffffffffffffffffffffff1662003372565b620039d08462003372565b620039db8362003372565b5050945094509450949050565b6200310681604051602401620039ff919062003ae9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b620031068180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8062004f7683390190565b6111fd806200a12583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62003ae38162003ab8565b82525050565b6020810162003ad2828462003ad8565b600073ffffffffffffffffffffffffffffffffffffffff821662003ad2565b600062003ad28262003af9565b600062003ad28262003b18565b62003ae38162003b25565b6020810162003ad2828462003b32565b62003b59828262003ad8565b5060200190565b600062003b6b825190565b808452602093840193830160005b8281101562003ba05762003b8f86835162003b4d565b955060208201915060010162003b79565b5093949350505050565b60208152600062002b52602083018462003b60565b600062003ad28262003ab8565b62003bd78162003bbf565b81146200310657600080fd5b80358062003bf18162003bcc565b5092915050565b8062003bd7565b80358062003bf18162003bf8565b73ffffffffffffffffffffffffffffffffffffffff811662003bd7565b80358062003bf18162003c0d565b6000806000806080858703121562003c535762003c53600080fd5b62003c5f868662003be3565b935062003c70866020870162003be3565b925062003c81866040870162003bff565b915062003c92866060870162003c2a565b905092959194509250565b8062003ae3565b6020810162003ad2828462003c9d565b62003bd78160020b90565b80358062003bf18162003cb4565b60008060006060848603121562003ce75762003ce7600080fd5b62003cf3858562003bff565b925062003d04856020860162003cbf565b915062003d15856040860162003cbf565b90509250925092565b7fffffffff00000000000000000000000000000000000000000000000000000000811662003ae3565b62003b59828262003d1e565b600062003d5e825190565b808452602093840193830160005b8281101562003ba05762003d8286835162003d47565b955060208201915060010162003d6c565b62003da082825162003ad8565b600060208201516040602085015262000c74604085018262003d53565b600062002b52838362003d93565b600062003dd6825190565b808452602084018094508160051b810162003df18560200190565b60005b8481101562003e2757838303885262003e0f83835162003dbd565b92506020820160209890980197915060010162003df4565b50909695505050505050565b60208152600062002b52602083018462003dcb565b80151562003ae3565b6020810162003ad2828462003e48565b60005b8381101562003e7e57818101518382015260200162003e64565b50506000910152565b600062003e92825190565b8084526020840162003ea982826020870162003e61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b600062002b52838362003e87565b600062003ef1825190565b808452602084018094508160051b810162003f0c8560200190565b60005b8481101562003e2757838303885262003f2a83835162003ed8565b92506020820160209890980197915060010162003f0f565b60208152600062002b52602083018462003ee6565b73ffffffffffffffffffffffffffffffffffffffff811662003ae3565b6020810162003ad2828462003f57565b60006020828403121562003f9b5762003f9b600080fd5b62002b52838362003c2a565b6000806000806080858703121562003fc25762003fc2600080fd5b62003fce868662003bff565b935062003fdf866020870162003bff565b925062003ff0866040870162003cbf565b915062003c92866060870162003cbf565b6fffffffffffffffffffffffffffffffff811662003ae3565b608081016200402a828762003c9d565b62004039602083018662004001565b62004048604083018562003c9d565b62004057606083018462003c9d565b95945050505050565b62ffffff811662003ae3565b6020810162003ad2828462004060565b600080600060608486031215620040965762004096600080fd5b620040a2858562003be3565b9250620040b3856020860162003be3565b915062003d15856040860162003bff565b60008060408385031215620040dc57620040dc600080fd5b620040e8848462003bff565b9150620040f9846020850162003cbf565b90509250929050565b62003bd78162003ab8565b80518062003bf18162004102565b600060208284031215620041325762004132600080fd5b62002b5283836200410d565b60ff811662003bd7565b80518062003bf1816200413e565b6000602082840312156200416d576200416d600080fd5b62002b52838362004148565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80825b6001851115620041ee57808604811115620041ca57620041ca62004179565b6001851615620041d957908102905b8002620041e68560011c90565b9450620041ab565b94509492505050565b600082620042085750600162002b52565b81620042175750600062002b52565b81600181146200423057600281146200423b5762004271565b600191505062002b52565b60ff8411156200424f576200424f62004179565b6001841b8092508581111562004269576200426962004179565b505062002b52565b5060208310610133831016604e8410600b8410161715620042ab575081810a8084811115620042a457620042a462004179565b5062002b52565b620042ba8484846001620041a8565b808604821115620042cf57620042cf62004179565b02949350505050565b60008162000c747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861683620041f7565b600081838181025b80935082810482148315176200432d576200432d62004179565b50505092915050565b6040810162004346828562003ad8565b62002b52602083018462003c9d565b80151562003bd7565b80518062003bf18162004355565b600060208284031215620043835762004383600080fd5b62002b5283836200435e565b6200439c82825162003ad8565b6020810151620043b0602084018262003ad8565b506040810151620043c5604084018262004060565b506060810151620043da606084018262003ad8565b506080810151620043ef608084018262003c9d565b5060a08101516200440460a084018262003c9d565b5060c08101516200441960c084018262003c9d565b5060e08101516200324760e084018262003f57565b610100810162003ad282846200438f565b80518062003bf18162003bf8565b600060208284031215620044645762004464600080fd5b62002b5283836200443f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081835b80620044b457620044b462004470565b90049392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60028110620031065762003106620044bd565b80620027be816200451b565b600062003ad2826200452e565b62003ae3816200453a565b6200455f82825162004547565b602081015162003247602084018262004060565b67ffffffffffffffff811662003ae3565b61ffff811662003ae3565b60038110620031065762003106620044bd565b80620027be816200458f565b600062003ad282620045a2565b62003ae381620045ae565b620045d3828251620045bb565b600060208201516040602085015262000c74604085018262003e87565b600062002b528383620045c6565b600062004609825190565b808452602084018094508160051b8101620046248560200190565b60005b8481101562003e2757838303885262004642838351620045f0565b92506020820160209890980197915060010162004627565b6200466782825162004584565b600060208201516040602085015262000c746040850182620045fe565b600062002b5283836200465a565b60006200469d825190565b808452602084018094508160051b8101620046b88560200190565b60005b8481101562003e27578383038852620046d683835162004684565b925060208201602098909801979150600101620046bb565b620046fb82825162003ad8565b6000602082015162004711602085018262003ad8565b50604082015162004726604085018262004552565b5060608201516200473b608085018262003c9d565b5060808201516200475060a085018262003e48565b5060a08201516200476560c085018262003e48565b5060c08201516200477a60e085018262004573565b5060e082015161012061010085015262000c7461012085018262004692565b60208152600062002b526020830184620046ee565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8282021662004313565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8416620044a4565b63ffffffff811662003ae3565b62003ae38160130b90565b6200485882825162003e48565b60208101516200486c602084018262003e48565b50604081015162004881604084018262004833565b50606081015162004896606084018262003f57565b50608081015162003247608084018262004840565b60a0810162003ad282846200484b565b67ffffffffffffffff811662003bd7565b80518062003bf181620048bb565b600060208284031215620048f157620048f1600080fd5b62002b528383620048cc565b60208152600062002b52602083018462003e87565b600060ff821662003ad2565b62003ae38162004912565b6200493682825162003c9d565b5050565b606081016200494a828662004573565b6200495960208301856200491e565b62000c74604083018462004929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680620049ae57607f821692505b602083108103620049c357620049c362004968565b5050919050565b80518062003bf18162003c0d565b80518062003bf18162003cb4565b61ffff811662003bd7565b80518062003bf181620049e6565b600080600080600080600060e0888a03121562004a1f5762004a1f600080fd5b62004a2b8989620049ca565b965062004a3c8960208a01620049d8565b955062004a4d8960408a01620049f1565b945062004a5e8960608a01620049f1565b935062004a6f8960808a01620049f1565b925062004a808960a08a0162004148565b915062004a918960c08a016200435e565b905092959891949750929550565b600062004aaa825190565b8362004abb82826020870162003e61565b019392505050565b62004acf818462003d1e565b600062000c74600483018462004a9f565b600062002b52828462004a9f565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390819081111562003bf15762003bf162004179565b73ffffffffffffffffffffffffffffffffffffffff8281168282160190819081111562003bf15762003bf162004179565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004bce6060830162004b50565b828103602084015262004be18162004b87565b91505062003ad260408301846200491e565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262004b7e565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004c6d6060830162004bf3565b828103602084015262004be18162004c26565b6080810162004c90828762003ad8565b62004c9f602083018662003ad8565b62004cae604083018562004060565b62004057606083018462003f57565b600062004cca8260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362004cfc5762004cfc62004179565b60000392915050565b600062004d128260020b90565b62004d1d8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171562003bf15762003bf162004179565b600062004d698260020b90565b62004d748460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212171562003bf15762003bf162004179565b60006020828403121562004dc95762004dc9600080fd5b62002b528383620049d8565b62003ae38160020b90565b6040810162004df0828562004dd5565b62002b52602083018462004dd5565b62004e0c82825162003ad8565b602081015162004e20602084018262003ad8565b50604081015162004e35604084018262004060565b50606081015162004e4a606084018262004dd5565b50608081015162004e5f608084018262004dd5565b5060a081015162004e7460a084018262003c9d565b5060c081015162004e8960c084018262003c9d565b5060e081015162004e9e60e084018262003c9d565b5061010081015162004eb561010084018262003c9d565b5061012081015162004ecc61012084018262003ad8565b506101408101516200324761014084018262003c9d565b610160810162003ad2828462004dff565b6fffffffffffffffffffffffffffffffff811662003bd7565b80518062003bf18162004ef4565b6000806000806080858703121562004f365762004f36600080fd5b62004f4286866200443f565b935062004f53866020870162004f0d565b925062004f6486604087016200443f565b915062003c9286606087016200443f56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c6343000816003360806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726c7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d69742070726963657375636365737366756c6c79206578656375746564206174206c696d6974207072696365000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500a2646970667358221220ec235c3410207ac4a1e58d5ffcb4e1cdc084b9d866ed44ff47754a4db02013ef64736f6c63430008160033", + "object": "0x60806040523480156200001157600080fd5b5060043610620002535760003560e01c8063916a17c61162000142578063d21220a711620000cc578063e1c7392a1162000097578063e3baf41a116200007a578063e3baf41a1462000565578063fa7626d4146200057c578063fbfa77cf14620005a357600080fd5b8063e1c7392a1462000551578063e20c9f71146200055b57600080fd5b8063d21220a714620004b9578063d6f1300214620004da578063ddca3f431462000503578063df791e50146200053a57600080fd5b8063b5508aa9116200010d578063b5508aa9146200046d578063ba414fa61462000477578063c45a01551462000481578063c578d91d14620004a257600080fd5b8063916a17c6146200041f5780639febdbf71462000429578063a035b1fe1462000433578063a54a72b7146200044c57600080fd5b80634a09d3dd11620001e15780636fe2ae0e11620001ac5780637303e913116200018f5780637303e91314620003db57806385226c8114620003fc5780638e3b558a146200041557600080fd5b80636fe2ae0e14620003c75780637083accc14620003d157600080fd5b80634a09d3dd146200033c57806353486e2f146200036257806366d9a9a0146200037957806367e368fc146200039257600080fd5b80631ed7831c11620002225780631ed7831c14620002ee5780632b3297f914620003075780633e5e3c2314620003285780633f7286f4146200033257600080fd5b80630a9254e414620002585780630dfe1681146200026457806316f0115b146200029d5780631bf6c21b14620002cd575b600080fd5b62000262620005c4565b005b600554620002859073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003ae9565b60405180910390f35b600254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003b3d565b600454620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f862000982565b60405162000294919062003baa565b600154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f8620009f3565b620002f862000a62565b620003536200034d36600462003c38565b62000ad1565b60405162000294919062003ca4565b620002626200037336600462003ccd565b62000c7c565b6200038362000cdc565b60405162000294919062003e33565b600654620003b89074010000000000000000000000000000000000000000900460ff1681565b60405162000294919062003e51565b6200026262000df1565b6200026262001229565b600054620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b6200040662001a36565b60405162000294919062003f42565b6200026262001b10565b620003836200204c565b6200026262002158565b6200043d6200248c565b60405162000294919062003f74565b600354620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620004066200252f565b620003b862002609565b602154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b62000262620004b336600462003f84565b620027c3565b600654620002859073ffffffffffffffffffffffffffffffffffffffff1681565b620004f1620004eb36600462003fa7565b62002a15565b6040516200029494939291906200401a565b6002546200052b9074010000000000000000000000000000000000000000900462ffffff1681565b6040516200029491906200406c565b620003536200054b3660046200407c565b62002a3b565b6200026262002b59565b620002f862003109565b6200026262000576366004620040c4565b62003178565b600654620003b8907501000000000000000000000000000000000000000000900460ff1681565b602254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620005ce62002b59565b604051620005dc9062003a9c565b604051809103906000f080158015620005f9573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556040517f5eb512e7000000000000000000000000000000000000000000000000000000008152635eb512e7906200067a90309060040162003ae9565b6020604051808303816000875af11580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c091906200411b565b602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600354604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051600093929092169163313ce567916004808201926020929091908290030181865afa15801562000761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000787919062004156565b6200079490600a620042d8565b620007a390620186a06200430b565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262000803921690859060040162004336565b600060405180830381600087803b1580156200081e57600080fd5b505af115801562000833573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008cd919062004156565b620008da90600a620042d8565b620008e990620186a06200430b565b600480546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff918216936340c10f19936200094a939092169186910162004336565b600060405180830381600087803b1580156200096557600080fd5b505af11580156200097a573d6000803e3d6000fd5b505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620009e957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b39262000b2e921690879060040162004336565b6020604051808303816000875af115801562000b4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b7491906200436c565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf3899062000c2a9084906004016200442e565b6020604051808303816000875af115801562000c4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7091906200444d565b9150505b949350505050565b6000600262000c9485670de0b6b3a76400006200430b565b62000ca091906200449f565b90506000600262000cb586620f42406200430b565b62000cc191906200449f565b905062000cd18282868662002a15565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000dcf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d7b5790505b5050505050815250508152602001906001019062000d00565b50505050905090565b60408051600380825260808201909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000e0957505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162000e4c579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062000ebd5762000ebd620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000edf579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b3c9608091398152508160008151811062000f505762000f50620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000f72579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b449608091398152508160008151811062000fe35762000fe3620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200184815250846000815181106200101f576200101f620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200183815250846001815181106200105b576200105b620044ec565b6020026020010181905250604051806040016040528061555561ffff1681526020018281525084600281518110620010975762001097620044ec565b6020026020010181905250600060405180610100016040528073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff1681526020017382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600180811115620011305762001130620044bd565b81526101f460209182015290825268056bc75e2d631000008282015260016040808401919091526000606084015267ffffffffffffffff608084015260a09092018890529051919250620011a1916200118c9184910162004799565b6040516020818303038152906040526200324c565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f1c6d05190620011f990849060040162004799565b600060405180830381600087803b1580156200121457600080fd5b505af115801562000cd1573d6000803e3d6000fd5b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200124057505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620012835790505090506000612710620012bd6200248c565b620012cb90612711620047ae565b620012d79190620047fd565b6040805160a081018252600181526000602080830182905282840182905273ffffffffffffffffffffffffffffffffffffffff85166060840152608083018290529251939450926200132a9201620048ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091529150806001815260200182815250836000815181106200137f576200137f620044ec565b6020026020010181905250604051806040016040528061ffff801681526020018481525084600081518110620013b957620013b9620044ec565b60200260200101819052506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600a8273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001461919062004156565b6200146e90600a620042d8565b6200147b9060036200430b565b6200148791906200449f565b6022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff808516926340c10f1992620014e4921690859060040162004336565b600060405180830381600087803b158015620014ff57600080fd5b505af115801562001514573d6000803e3d6000fd5b5050604080516101008101825260055473ffffffffffffffffffffffffffffffffffffffff9081168252600654811660208084019190915283518085018552600180825260025474010000000000000000000000000000000000000000900462ffffff168284015284860191909152606084018890526080840152600060a0840181905267ffffffffffffffff60c085015260e084018d905260225485517fe78f84e700000000000000000000000000000000000000000000000000000000815295519497509095509091169263e78f84e792600480830193928290030181865afa15801562001608573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162e9190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d051906200168790859060040162004799565b600060405180830381600087803b158015620016a257600080fd5b505af1158015620016b7573d6000803e3d6000fd5b50505050620016fb6040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b620017108167ffffffffffffffff1662003372565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620017939190600401620048fd565b600060405180830381600087803b158015620017ae57600080fd5b505af1158015620017c3573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d93506200182f92869291906004016200493a565b600060405180830381600087803b1580156200184a57600080fd5b505af11580156200185f573d6000803e3d6000fd5b50505050620018876040518060600160405280603081526020016200b37560309139620032df565b6200189286620027c3565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620019159190600401620048fd565b600060405180830381600087803b1580156200193057600080fd5b505af115801562001945573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d9350620019b192869291906004016200493a565b600060405180830381600087803b158015620019cc57600080fd5b505af1158015620019e1573d6000803e3d6000fd5b5050505062001a0861271087612711620019fc9190620047ae565b620004b39190620047fd565b62001a2c6040518060600160405280602481526020016200b3a560249139620032df565b5050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000de857838290600052602060002001805462001a7c9062004997565b80601f016020809104026020016040519081016040528092919081815260200182805462001aaa9062004997565b801562001afb5780601f1062001acf5761010080835404028352916020019162001afb565b820191906000526020600020905b81548152906001019060200180831162001add57829003601f168201915b50505050508152602001906001019062001a5a565b604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162001b2757505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162001b6a579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062001bdb5762001bdb620044ec565b6020026020010181905250604051806040016040528061ffff80168152602001828152508260008151811062001c155762001c15620044ec565b60200260200101819052506000600a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb8919062004156565b62001cc590600a620042d8565b62001cd29060036200430b565b62001cde91906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262001d3e921690859060040162004336565b600060405180830381600087803b15801562001d5957600080fd5b505af115801562001d6e573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600180825260025474010000000000000000000000000000000000000000900462ffffff168284015285870191909152606085018990526080850152600060a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e899190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d0519062001ee290859060040162004799565b600060405180830381600087803b15801562001efd57600080fd5b505af115801562001f12573d6000803e3d6000fd5b5050505062001f566040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b62001f6b8167ffffffffffffffff1662003372565b60225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692636e98833d9262001fd19286926004016200493a565b600060405180830381600087803b15801562001fec57600080fd5b505af115801562002001573d6000803e3d6000fd5b50505050620020456040518060400160405280600881526020017f6578656375746564000000000000000000000000000000000000000000000000815250620032df565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200213f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020eb5790505b5050505050815250508152602001906001019062002070565b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200216f57505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620021b2579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c96080913981525081600081518110620022235762002223620044ec565b6020026020010181905250604051806040016040528061ffff8016815260200182815250826000815181106200225d576200225d620044ec565b60200260200101819052506000600a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002300919062004156565b6200230d90600a620042d8565b6200231a9060036200430b565b6200232691906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262002386921690859060040162004336565b600060405180830381600087803b158015620023a157600080fd5b505af1158015620023b6573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600181526101f481830152848601526060840188905260006080850181905260a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620024fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025239190620049ff565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b8282101562000de8578382906000526020600020018054620025759062004997565b80601f0160208091040260200160405190810160405280929190818152602001828054620025a39062004997565b8015620025f45780601f10620025c857610100808354040283529160200191620025f4565b820191906000526020600020905b815481529060010190602001808311620025d657829003601f168201915b50505050508152602001906001019062002553565b600654600090760100000000000000000000000000000000000000000000900460ff1615620026565750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620027be57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490620026e49083907f6661696c656400000000000000000000000000000000000000000000000000009060200162004336565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262002722929160200162004ac3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200275c9162004ae0565b6000604051808303816000865af19150503d80600081146200279b576040519150601f19603f3d011682016040523d82523d6000602084013e620027a0565b606091505b5091505080806020019051810190620027ba91906200436c565b9150505b919050565b620028036040518060400160405280600b81526020017f73776170546f5072696365000000000000000000000000000000000000000000815250620032df565b620028248173ffffffffffffffffffffffffffffffffffffffff1662003372565b6000620028306200248c565b9050620028538173ffffffffffffffffffffffffffffffffffffffff1662003372565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200288b575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620028e05760065473ffffffffffffffffffffffffffffffffffffffff16620028fa565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620029515760065473ffffffffffffffffffffffffffffffffffffffff166200296b565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f1990620029d3903090859060040162004336565b600060405180830381600087803b158015620029ee57600080fd5b505af115801562002a03573d6000803e3d6000fd5b505050506200097a8383838862000ad1565b60008060008062002a298888888862003405565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002aac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ad291906200411b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161462002b2c5762002b26600173fffd8963efd1fc6a506488495d951d5263988d2662004aee565b62002b3e565b62002b3e6401000276a3600162004b1f565b905062002b4e8585858462000ad1565b9150505b9392505050565b601260405162002b699062003aaa565b62002b75919062004bba565b604051809103906000f08015801562002b92573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262002c1690620032df565b60035462002c3a9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600660405162002c4a9062003aaa565b62002c56919062004c59565b604051809103906000f08015801562002c73573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262002cf790620032df565b60045462002d1b9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662002df05760035473ffffffffffffffffffffffffffffffffffffffff1662002e0a565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662002e915760045473ffffffffffffffffffffffffffffffffffffffff1662002eab565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662002f26576910c6f7a0b5ed8d36b4c762002f37565b6e0f42400000000000000000000000005b905062002f5d6040518060800160405280605381526020016200b32260539139620032df565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462002fe494908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162004c80565b6020604051808303816000875af115801562003004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200302a91906200411b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c000000000000000000000000000000000000000000000000006020820152620030ae90620032df565b600254620030d29073ffffffffffffffffffffffffffffffffffffffff16620039e8565b62003106629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003738162004cbd565b50565b60606012805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60008160020b136200318957600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620031fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032209190620049ff565b5050505050915050620032478383836200323b919062004d05565b62000373858562004d5c565b505050565b6200310681604051602401620032639190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905262003a76565b6200310681604051602401620032f69190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262003a76565b620031068160405160240162003389919062003ca4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f10000000000000000000000000000000000000000000000000000000017905262003a76565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620034689030908c9060040162004336565b600060405180830381600087803b1580156200348357600080fd5b505af115801562003498573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b39350620034fb92909116908c9060040162004336565b6020604051808303816000875af11580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354191906200436c565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200359b9130918c910162004336565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200362e9391909216918c910162004336565b6020604051808303816000875af11580156200364e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367491906200436c565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa158015620036e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370c919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062003763908a90859060040162004de0565b602060405180830381865af415801562003781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a7919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620037fe908990859060040162004de0565b602060405180830381865af41580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062004db2565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620039199185910162004ee3565b6080604051808303816000875af115801562003939573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200395f919062004f1b565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620039a890620032df565b620039c5856fffffffffffffffffffffffffffffffff1662003372565b620039d08462003372565b620039db8362003372565b5050945094509450949050565b6200310681604051602401620039ff919062003ae9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b620031068180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8062004f7683390190565b6111fd806200a12583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62003ae38162003ab8565b82525050565b6020810162003ad2828462003ad8565b600073ffffffffffffffffffffffffffffffffffffffff821662003ad2565b600062003ad28262003af9565b600062003ad28262003b18565b62003ae38162003b25565b6020810162003ad2828462003b32565b62003b59828262003ad8565b5060200190565b600062003b6b825190565b808452602093840193830160005b8281101562003ba05762003b8f86835162003b4d565b955060208201915060010162003b79565b5093949350505050565b60208152600062002b52602083018462003b60565b600062003ad28262003ab8565b62003bd78162003bbf565b81146200310657600080fd5b80358062003bf18162003bcc565b5092915050565b8062003bd7565b80358062003bf18162003bf8565b73ffffffffffffffffffffffffffffffffffffffff811662003bd7565b80358062003bf18162003c0d565b6000806000806080858703121562003c535762003c53600080fd5b62003c5f868662003be3565b935062003c70866020870162003be3565b925062003c81866040870162003bff565b915062003c92866060870162003c2a565b905092959194509250565b8062003ae3565b6020810162003ad2828462003c9d565b62003bd78160020b90565b80358062003bf18162003cb4565b60008060006060848603121562003ce75762003ce7600080fd5b62003cf3858562003bff565b925062003d04856020860162003cbf565b915062003d15856040860162003cbf565b90509250925092565b7fffffffff00000000000000000000000000000000000000000000000000000000811662003ae3565b62003b59828262003d1e565b600062003d5e825190565b808452602093840193830160005b8281101562003ba05762003d8286835162003d47565b955060208201915060010162003d6c565b62003da082825162003ad8565b600060208201516040602085015262000c74604085018262003d53565b600062002b52838362003d93565b600062003dd6825190565b808452602084018094508160051b810162003df18560200190565b60005b8481101562003e2757838303885262003e0f83835162003dbd565b92506020820160209890980197915060010162003df4565b50909695505050505050565b60208152600062002b52602083018462003dcb565b80151562003ae3565b6020810162003ad2828462003e48565b60005b8381101562003e7e57818101518382015260200162003e64565b50506000910152565b600062003e92825190565b8084526020840162003ea982826020870162003e61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b600062002b52838362003e87565b600062003ef1825190565b808452602084018094508160051b810162003f0c8560200190565b60005b8481101562003e2757838303885262003f2a83835162003ed8565b92506020820160209890980197915060010162003f0f565b60208152600062002b52602083018462003ee6565b73ffffffffffffffffffffffffffffffffffffffff811662003ae3565b6020810162003ad2828462003f57565b60006020828403121562003f9b5762003f9b600080fd5b62002b52838362003c2a565b6000806000806080858703121562003fc25762003fc2600080fd5b62003fce868662003bff565b935062003fdf866020870162003bff565b925062003ff0866040870162003cbf565b915062003c92866060870162003cbf565b6fffffffffffffffffffffffffffffffff811662003ae3565b608081016200402a828762003c9d565b62004039602083018662004001565b62004048604083018562003c9d565b62004057606083018462003c9d565b95945050505050565b62ffffff811662003ae3565b6020810162003ad2828462004060565b600080600060608486031215620040965762004096600080fd5b620040a2858562003be3565b9250620040b3856020860162003be3565b915062003d15856040860162003bff565b60008060408385031215620040dc57620040dc600080fd5b620040e8848462003bff565b9150620040f9846020850162003cbf565b90509250929050565b62003bd78162003ab8565b80518062003bf18162004102565b600060208284031215620041325762004132600080fd5b62002b5283836200410d565b60ff811662003bd7565b80518062003bf1816200413e565b6000602082840312156200416d576200416d600080fd5b62002b52838362004148565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80825b6001851115620041ee57808604811115620041ca57620041ca62004179565b6001851615620041d957908102905b8002620041e68560011c90565b9450620041ab565b94509492505050565b600082620042085750600162002b52565b81620042175750600062002b52565b81600181146200423057600281146200423b5762004271565b600191505062002b52565b60ff8411156200424f576200424f62004179565b6001841b8092508581111562004269576200426962004179565b505062002b52565b5060208310610133831016604e8410600b8410161715620042ab575081810a8084811115620042a457620042a462004179565b5062002b52565b620042ba8484846001620041a8565b808604821115620042cf57620042cf62004179565b02949350505050565b60008162000c747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861683620041f7565b600081838181025b80935082810482148315176200432d576200432d62004179565b50505092915050565b6040810162004346828562003ad8565b62002b52602083018462003c9d565b80151562003bd7565b80518062003bf18162004355565b600060208284031215620043835762004383600080fd5b62002b5283836200435e565b6200439c82825162003ad8565b6020810151620043b0602084018262003ad8565b506040810151620043c5604084018262004060565b506060810151620043da606084018262003ad8565b506080810151620043ef608084018262003c9d565b5060a08101516200440460a084018262003c9d565b5060c08101516200441960c084018262003c9d565b5060e08101516200324760e084018262003f57565b610100810162003ad282846200438f565b80518062003bf18162003bf8565b600060208284031215620044645762004464600080fd5b62002b5283836200443f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081835b80620044b457620044b462004470565b90049392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60028110620031065762003106620044bd565b80620027be816200451b565b600062003ad2826200452e565b62003ae3816200453a565b6200455f82825162004547565b602081015162003247602084018262004060565b67ffffffffffffffff811662003ae3565b61ffff811662003ae3565b60038110620031065762003106620044bd565b80620027be816200458f565b600062003ad282620045a2565b62003ae381620045ae565b620045d3828251620045bb565b600060208201516040602085015262000c74604085018262003e87565b600062002b528383620045c6565b600062004609825190565b808452602084018094508160051b8101620046248560200190565b60005b8481101562003e2757838303885262004642838351620045f0565b92506020820160209890980197915060010162004627565b6200466782825162004584565b600060208201516040602085015262000c746040850182620045fe565b600062002b5283836200465a565b60006200469d825190565b808452602084018094508160051b8101620046b88560200190565b60005b8481101562003e27578383038852620046d683835162004684565b925060208201602098909801979150600101620046bb565b620046fb82825162003ad8565b6000602082015162004711602085018262003ad8565b50604082015162004726604085018262004552565b5060608201516200473b608085018262003c9d565b5060808201516200475060a085018262003e48565b5060a08201516200476560c085018262003e48565b5060c08201516200477a60e085018262004573565b5060e082015161012061010085015262000c7461012085018262004692565b60208152600062002b526020830184620046ee565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8282021662004313565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8416620044a4565b63ffffffff811662003ae3565b62003ae38160130b90565b6200485882825162003e48565b60208101516200486c602084018262003e48565b50604081015162004881604084018262004833565b50606081015162004896606084018262003f57565b50608081015162003247608084018262004840565b60a0810162003ad282846200484b565b67ffffffffffffffff811662003bd7565b80518062003bf181620048bb565b600060208284031215620048f157620048f1600080fd5b62002b528383620048cc565b60208152600062002b52602083018462003e87565b600060ff821662003ad2565b62003ae38162004912565b6200493682825162003c9d565b5050565b606081016200494a828662004573565b6200495960208301856200491e565b62000c74604083018462004929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680620049ae57607f821692505b602083108103620049c357620049c362004968565b5050919050565b80518062003bf18162003c0d565b80518062003bf18162003cb4565b61ffff811662003bd7565b80518062003bf181620049e6565b600080600080600080600060e0888a03121562004a1f5762004a1f600080fd5b62004a2b8989620049ca565b965062004a3c8960208a01620049d8565b955062004a4d8960408a01620049f1565b945062004a5e8960608a01620049f1565b935062004a6f8960808a01620049f1565b925062004a808960a08a0162004148565b915062004a918960c08a016200435e565b905092959891949750929550565b600062004aaa825190565b8362004abb82826020870162003e61565b019392505050565b62004acf818462003d1e565b600062000c74600483018462004a9f565b600062002b52828462004a9f565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390819081111562003bf15762003bf162004179565b73ffffffffffffffffffffffffffffffffffffffff8281168282160190819081111562003bf15762003bf162004179565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004bce6060830162004b50565b828103602084015262004be18162004b87565b91505062003ad260408301846200491e565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262004b7e565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004c6d6060830162004bf3565b828103602084015262004be18162004c26565b6080810162004c90828762003ad8565b62004c9f602083018662003ad8565b62004cae604083018562004060565b62004057606083018462003f57565b600062004cca8260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362004cfc5762004cfc62004179565b60000392915050565b600062004d128260020b90565b62004d1d8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171562003bf15762003bf162004179565b600062004d698260020b90565b62004d748460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212171562003bf15762003bf162004179565b60006020828403121562004dc95762004dc9600080fd5b62002b528383620049d8565b62003ae38160020b90565b6040810162004df0828562004dd5565b62002b52602083018462004dd5565b62004e0c82825162003ad8565b602081015162004e20602084018262003ad8565b50604081015162004e35604084018262004060565b50606081015162004e4a606084018262004dd5565b50608081015162004e5f608084018262004dd5565b5060a081015162004e7460a084018262003c9d565b5060c081015162004e8960c084018262003c9d565b5060e081015162004e9e60e084018262003c9d565b5061010081015162004eb561010084018262003c9d565b5061012081015162004ecc61012084018262003ad8565b506101408101516200324761014084018262003c9d565b610160810162003ad2828462004dff565b6fffffffffffffffffffffffffffffffff811662003bd7565b80518062003bf18162004ef4565b6000806000806080858703121562004f365762004f36600080fd5b62004f4286866200443f565b935062004f53866020870162004f0d565b925062004f6486604087016200443f565b915062003c9286606087016200443f56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c6343000816003360806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726c7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d69742070726963657375636365737366756c6c79206578656375746564206174206c696d6974207072696365000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500a2646970667358221220fdb3a27b7ae253af6f6436a5c12067064dbb07ff9ca425bda2a118c17702803264736f6c63430008160033", "sourceMap": "257:6879:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;444:353;;;:::i;:::-;;877:21:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;769:26;;;;;;;;;;;;;;;;:::i;851:20::-;;;;;;;;;2170:134:7;;;:::i;:::-;;;;;;;:::i;705:58:63:-;;;;;;;;;2939:133:7;;;:::i;2640:141::-;;;:::i;5079:824:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2667:221::-;;;;;;:::i;:::-;;:::i;2456:178:7:-;;;:::i;:::-;;;;;;;:::i;988:20:63:-;;;;;;;;;;;;;;;;;;;:::i;804:1973:66:-;;;:::i;5341:1792::-;;;:::i;612:87:63:-;;;;;;;;;2310:140:7;;;:::i;:::-;;;;;;;:::i;4062:1272:66:-;;;:::i;2787:146:7:-;;;:::i;2783:1272:66:-;;;:::i;5909:112:63:-;;;:::i;:::-;;;;;;;:::i;824:21::-;;;;;;;;;1875:141:7;;;:::i;1819:584:0:-;;;:::i;344:22:66:-;;;;;;;;;6027:683:63;;;;;;:::i;:::-;;:::i;961:21::-;;;;;;;;;2895:279;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;801:17::-;;;;;;;;;;;;;;;;;;;:::i;4784:289::-;;;;;;:::i;:::-;;:::i;1349:1125::-;;;:::i;2022:142:7:-;;;:::i;2481:179:63:-;;;;;;:::i;:::-;;:::i;1572:26:0:-;;;;;;;;;;;;372:18:66;;;;;;;;;444:353;478:6;:4;:6::i;:::-;504:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;494:7:66;:23;;;;;;;;;;;;;;541:34;;;;;:19;;:34;;569:4;;541:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;527:5;:49;;;;;;;;;;;623:4;;:15;;;;;;;;-1:-1:-1;;623:4:66;;;;;:13;;:15;;;;;;;;;;;;;;;:4;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;617:21;;:2;:21;:::i;:::-;607:31;;:7;:31;:::i;:::-;648:4;;666:5;;648:37;;;;;586:52;;-1:-1:-1;648:4:66;;;;;:9;;:37;;666:5;;586:52;;648:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:17;731:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;725:20;;:2;:20;:::i;:::-;715:30;;:7;:30;:::i;:::-;755:3;;;772:5;;755:35;;;;;695:50;;-1:-1:-1;755:3:66;;;;;:8;;:35;;772:5;;;;695:50;;755:35;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;468:329;;444:353::o;2170:134:7:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;5079:824:63:-;5246:7;;5222:43;;;;;5193:17;;5222:15;;;;;;;:43;;5246:7;;5256:8;;5222:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5688:159:63;;;;;;;;;;;;;;;;;;;;;5773:3;;;;;;;5688:159;;;;5778:10;5688:159;;;;5790:15;5688:159;;;;;;;;;;-1:-1:-1;5688:159:63;;;;;;;;;;;5864:7;;:32;;;;;5688:159;;5864:7;;:24;;:32;;5688:159;;5864:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5857:39;;;5079:824;;;;;;;:::o;2667:221::-;2741:18;2780:1;2762:15;:6;2771;2762:15;:::i;:::-;:19;;;;:::i;:::-;2741:40;-1:-1:-1;2791:17:63;2828:1;2811:14;:6;2820:5;2811:14;:::i;:::-;:18;;;;:::i;:::-;2791:38;;2839:42;2845:10;2857:9;2868:5;2875;2839;:42::i;:::-;;;;;2731:157;;2667:221;;;:::o;2456:178:7:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;804:1973:66:-;884:25;;;907:1;884:25;;;;;;;;;847:34;;884:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;884:25:66;;;;;;;;;;;;-1:-1:-1;;963:28:66;;;989:1;963:28;;;;;;;;;847:62;;-1:-1:-1;919:41:66;;963:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;963:28:66;;;;;;;;;;;;;;-1:-1:-1;1019:319:66;;;;;;;;;919:72;;-1:-1:-1;1019:319:66;-1:-1:-1;1019:319:66;;;;1069:268;;;;;;;;;;;;;;;;;1019:319;;;1001:12;1014:1;1001:15;;;;;;;;:::i;:::-;;;;;;;;;;:337;1392:28;;;1418:1;1392:28;;;;;;;;;1348:41;;1392:28;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1392:28:66;;;;;;;;;;;;;;-1:-1:-1;1448:319:66;;;;;;;;;1348:72;;-1:-1:-1;1448:319:66;-1:-1:-1;1448:319:66;;;;1498:268;;;;;;;;;;;;;;;;;1448:319;;;1430:12;1443:1;1430:15;;;;;;;;:::i;:::-;;;;;;;;;;:337;1821:28;;;1847:1;1821:28;;;;;;;;;1777:41;;1821:28;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1821:28:66;;;;;;;;;;;;;;-1:-1:-1;1877:319:66;;;;;;;;;1777:72;;-1:-1:-1;1877:319:66;-1:-1:-1;1877:319:66;;;;1927:268;;;;;;;;;;;;;;;;;1877:319;;;1859:12;1872:1;1859:15;;;;;;;;:::i;:::-;;;;;;:337;;;;2220:36;;;;;;;;2237:5;2220:36;;;;;;2243:12;2220:36;;;2206:8;2215:1;2206:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2280:36;;;;;;;;2297:5;2280:36;;;;;;2303:12;2280:36;;;2266:8;2275:1;2266:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2340:36;;;;;;;;2357:5;2340:36;;;;;;2363:12;2340:36;;;2326:8;2335:1;2326:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2386:31;2421:270;;;;;;;;2453:42;2421:270;;;;;;2497:42;2421:270;;;;;;2553:48;;;;;;;;2568:27;2553:48;;;;;;;;:::i;:::-;;;2597:3;2553:48;;;;;2421:270;;;2603:21;2421:270;;;;2626:4;2421:270;;;;;;;;-1:-1:-1;2421:270:66;;;;2651:20;2421:270;;;;;;;;;;;2719:17;;2386:305;;-1:-1:-1;2701:36:66;;2719:17;;2386:305;;2719:17;;:::i;:::-;;;;;;;;;;;;;2701;:36::i;:::-;2747:5;;:23;;;;;:5;;;;;:16;;:23;;2764:5;;2747:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5341:1792;5481:25;;;5504:1;5481:25;;;;;;;;;5444:34;;5481:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5481:25:66;;;;;;;;;;;;-1:-1:-1;;5560:28:66;;;5586:1;5560:28;;;;;;;;;5444:62;;-1:-1:-1;5516:41:66;;5560:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5560:28:66;;;;;;;;;;;;;;;5516:72;;5598:13;5632:5;5614:7;:5;:7::i;:::-;:15;;5624:5;5614:15;:::i;:::-;:23;;;;:::i;:::-;5716:49;;;;;;;;5740:4;5716:49;;5678:23;5716:49;;;;;;;;;;;;;;;;;;;;;;;;;;5704:63;;5598:39;;-1:-1:-1;5678:23:66;5704:63;;;;:::i;:::-;;;;;;;;;;;5795:61;;;;;;5704:63;-1:-1:-1;5704:63:66;5815:28;5795:61;;;;5845:10;5795:61;;;5777:12;5790:1;5777:15;;;;;;;;:::i;:::-;;;;;;:79;;;;5880:47;;;;;;;;5897:16;5880:47;;;;;;5914:12;5880:47;;;5866:8;5875:1;5866:11;;;;;;;;:::i;:::-;;;;;;:61;;;;5937:15;5965:6;;;;;;;;;;;5937:35;;5982:14;6024:2;6005:5;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6001:20;;:2;:20;:::i;:::-;5999:22;;:1;:22;:::i;:::-;:27;;;;:::i;:::-;6077:5;;6058:34;;;;;5982:44;;-1:-1:-1;6058:10:66;;;;;;;:34;;6077:5;;5982:44;;6058:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6137:188:66;;;;;;;;6169:6;;;;;;6137:188;;6177:6;;;;6137:188;;;;;;;;6205:48;;;;;;;6169:6;6205:48;;;6249:3;;;;;;;6205:48;;;;6137:188;;;;;;;;;;;;;;;;;-1:-1:-1;6137:188:66;;;;;;350:16:54;6137:188:66;;;;;;;;;;6355:5;;:21;;;;;;;6137:188;;-1:-1:-1;;;;6355:5:66;;;;:19;;:21;;;;;6137:188;6355:21;;;;;:5;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6386:5;;:23;;;;;6335:41;;-1:-1:-1;6386:5:66;;;:16;;:23;;6403:5;;6386:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6419:28;;;;;;;;;;;;;;;;;;:12;:28::i;:::-;6457:30;6475:10;6470:16;;6457:12;:30::i;:::-;6514:10;;;;;;;;;;;;;;;;6498:27;;;;;:15;;;;:27;;6514:10;6498:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6535:5:66;;6564:22;;;;;;;;6535:5;6564:22;;;6535:52;;;;;:5;;;;;-1:-1:-1;6535:13:66;;-1:-1:-1;6535:52:66;;6549:10;;6535:5;6564:22;6535:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6628:64;;;;;;;;;;;;;;;;;;:12;:64::i;:::-;6703:18;6715:5;6703:11;:18::i;:::-;6782:10;;;;;;;;;;;;;;;;6766:27;;;;;:15;;;;:27;;6782:10;6766:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6881:5:66;;6910:22;;;;;;;;6881:5;6910:22;;;6881:52;;;;;:5;;;;;-1:-1:-1;6881:13:66;;-1:-1:-1;6881:52:66;;6895:10;;6881:5;6910:22;6881:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6993:30;7017:5;7005;7011;7005:11;;;;:::i;:::-;:17;;;;:::i;6993:30::-;7074:52;;;;;;;;;;;;;;;;;;:12;:52::i;:::-;5381:1752;;;;;;;;5341:1792::o;2310:140:7:-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4062:1272:66;4154:25;;;4177:1;4154:25;;;;;;;;;4117:34;;4154:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;4154:25:66;;;;;;;;;;;;-1:-1:-1;;4233:28:66;;;4259:1;4233:28;;;;;;;;;4117:62;;-1:-1:-1;4189:41:66;;4233:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;4233:28:66;;;;;;;;;;;;;;-1:-1:-1;4289:319:66;;;;;;;;;4189:72;;-1:-1:-1;4289:319:66;-1:-1:-1;4289:319:66;;;;4339:268;;;;;;;;;;;;;;;;;4289:319;;;4271:12;4284:1;4271:15;;;;;;;;:::i;:::-;;;;;;:337;;;;4632:47;;;;;;;;4649:16;4632:47;;;;;;4666:12;4632:47;;;4618:8;4627:1;4618:11;;;;;;;;:::i;:::-;;;;;;:61;;;;4689:14;4730:2;4712:4;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4708:19;;:2;:19;:::i;:::-;4706:21;;:1;:21;:::i;:::-;:26;;;;:::i;:::-;4754:4;;4772:5;;4754:33;;;;;4689:43;;-1:-1:-1;4754:4:66;;;;;:9;;:33;;4772:5;;4689:43;;4754:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4855:214:66;;;;;;;;4895:4;;;;;;4855:214;;4910:3;;;;;4855:214;;;;;;;;4949:48;;;;;;;4895:4;4949:48;;;4993:3;;;;;;;4949:48;;;;4855:214;;;;;;;;;;;;;;;;;-1:-1:-1;4855:214:66;;;;;;350:16:54;4855:214:66;;;;;;;;;;5099:5;;:21;;;;;;;4855:214;;-1:-1:-1;;;;5099:5:66;;;;:19;;:21;;;;4855:214;5099:21;;;;;;;:5;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5130:5;;:23;;;;;5079:41;;-1:-1:-1;5130:5:66;;;:16;;:23;;5147:5;;5130:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5163:28;;;;;;;;;;;;;;;;;;:12;:28::i;:::-;5201:30;5219:10;5214:16;;5201:12;:30::i;:::-;5241:5;;5270:22;;;;;;;;5241:5;5270:22;;;5241:52;;;;;:5;;;;;:13;;:52;;5255:10;;5241:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5303:24;;;;;;;;;;;;;;;;;;:12;:24::i;:::-;4107:1227;;;;;4062:1272::o;2787:146:7:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2783:1272:66;2876:25;;;2899:1;2876:25;;;;;;;;;2839:34;;2876:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2876:25:66;;;;;;;;;;;;-1:-1:-1;;2955:28:66;;;2981:1;2955:28;;;;;;;;;2839:62;;-1:-1:-1;2911:41:66;;2955:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2955:28:66;;;;;;;;;;;;;;-1:-1:-1;3011:319:66;;;;;;;;;2911:72;;-1:-1:-1;3011:319:66;-1:-1:-1;3011:319:66;;;;3061:268;;;;;;;;;;;;;;;;;3011:319;;;2993:12;3006:1;2993:15;;;;;;;;:::i;:::-;;;;;;:337;;;;3354:47;;;;;;;;3371:16;3354:47;;;;;;3388:12;3354:47;;;3340:8;3349:1;3340:11;;;;;;;;:::i;:::-;;;;;;:61;;;;3411:14;3451:2;3434:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3430:18;;:2;:18;:::i;:::-;3428:20;;:1;:20;:::i;:::-;:25;;;;:::i;:::-;3474:4;;3492:5;;3474:33;;;;;3411:42;;-1:-1:-1;3474:4:66;;;;;:9;;:33;;3492:5;;3411:42;;3474:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3575:215:66;;;;;;;;3615:4;;;;;;3575:215;;3630:3;;;;;3575:215;;;;;;;;3669:48;;;;;;;3615:4;3669:48;;3713:3;3669:48;;;;3575:215;;;;;;;;;;-1:-1:-1;3575:215:66;;;;;;;;;;;;350:16:54;3575:215:66;;;;;;;;;;3820:5;;:21;;;;;;;3575:215;;-1:-1:-1;;;;3820:5:66;;;;:19;;:21;;;;3575:215;3820:21;;;;;;;:5;:21;;;;;;;;;;;;;;5909:112:63;6002:4;;:12;;;;;;;;5947:20;;6002:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5979:35:63;;5909:112;-1:-1:-1;;;;;;5909:112:63:o;1875:141:7:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:0;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:0;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;2023:20;;1671:64;;2135:34;;2196:43;;1671:64;;2221:17;;2196:43;;;:::i;:::-;;;;;;;;;;;;;;;2086:175;;;2196:43;2086:175;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:0:o;6027:683:63:-;6092:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;6129:31;6142:17;6129:31;;:12;:31::i;:::-;6170:16;6189:7;:5;:7::i;:::-;6170:26;;6206:22;6219:8;6206:22;;:12;:22::i;:::-;6254:17;6242:29;;:8;:29;;;6238:55;;6286:7;6027:683;:::o;6238:55::-;6302:17;6333;6322:28;;:8;:28;;;:68;;6383:6;;;;6322:68;;;6363:6;;;;6322:68;6302:88;;6400:18;6432:17;6421:28;;:8;:28;;;:68;;6482:6;;;;6421:68;;;6462:6;;;;6421:68;6612:33;;;;;6400:89;;-1:-1:-1;6596:6:63;;6612:12;;;;;;:33;;6633:4;;6596:6;;6612:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6655:48;6660:7;6669:8;6679:4;6685:17;6655:4;:48::i;2895:279::-;3004:15;3029:17;3056:15;3081;3124:43;3131:10;3143:9;3154:5;3161;3124:6;:43::i;:::-;3117:50;;;;-1:-1:-1;3117:50:63;-1:-1:-1;3117:50:63;;-1:-1:-1;2895:279:63;-1:-1:-1;;;;;2895:279:63:o;4784:289::-;4871:17;4900:13;4936:4;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4916:33;;4924:7;4916:33;;;:93;;4982:27;5008:1;997:49:38;4982:27:63;:::i;:::-;4916:93;;;4952:27;817:10:38;4978:1:63;4952:27;:::i;:::-;4900:109;;5026:40;5031:7;5040:8;5050;5060:5;5026:4;:40::i;:::-;5019:47;;;4784:289;;;;;;:::o;1349:1125::-;1436:2;1389:50;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:4:63;:57;;;;;;;;;;;;;;;1449:19;;;;;;;;;;;;;;;;;;;:12;:19::i;:::-;1499:4;;1478:27;;1499:4;;1478:12;:27::i;:::-;1563:1;1521:44;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1515:3:63;:50;;;;;;;;;;;;;;;1575:20;;;;;;;;;;;;;;;;;;;:12;:20::i;:::-;1626:3;;1605:26;;1626:3;;1605:12;:26::i;:::-;1641:3;:9;;;;;;;;1695:3;;1679:4;;1660:8;:39;;;;1641:9;1695:3;;;;1679:4;;;;1671:28;;;;1660:39;;;;;;;;;;;1718:8;;;:39;;1752:4;;;;1718:39;;;1737:3;;;;1718:39;1709:6;:48;;;;;;;;;;;;;;;1776:8;;;;;;;:39;;1811:3;;;;1776:39;;;1795:4;;;;1776:39;1767:6;:48;;;;;;;;;;;;;;;;;-1:-1:-1;;1848:8:63;;;;;:90;;1914:23;1848:90;;;1867:35;1848:90;1825:113;;1957:99;;;;;;;;;;;;;;;;;;:12;:99::i;:::-;2188:4;;2228:6;;2236;;2244:3;;2188:74;;;;;:4;;;;;:39;;:74;;2228:6;;;;2236;;;2244:3;;;;;;;2249:12;;2188:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2166:4;:97;;;;;;;;;;;;;;;2273:23;;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2327:4;;2306:27;;2327:4;;2306:12;:27::i;:::-;2412:55;2418:10;477:7:38;637:9;477:7;637:9;:::i;2412:55:63:-;1372:1102;1349:1125::o;2022:142:7:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;2481:179:63:-;2556:1;2550:5;:7;;;2542:16;;;;;;2594:4;;:12;;;;;;;;2571:10;;2594:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2568:38;;;;;;;;2616:37;2622:6;2635:5;2630:4;:10;;;;:::i;:::-;2642;2647:5;2642:4;:10;:::i;2616:37::-;2532:128;2481:179;;:::o;2125:124:16:-;2184:58;2238:2;2200:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2184:15;:58::i;6598:121::-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;6356:116::-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6405:15;:60::i;3180:1597:63:-;3516:4;;:36;;;;;3291:15;;;;;;;;3516:4;;;;;:9;;:36;;3534:4;;3541:10;;3516:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3562:4:63;;;3583;3562:39;;;;;:4;;;;;-1:-1:-1;3562:12:63;;-1:-1:-1;3562:39:63;;3583:4;;;;3590:10;;3562:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3650:3:63;;;:34;;;;;:3;;;;;:8;;:34;;3667:4;;3674:9;;3650:34;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3694:3:63;;;;3714:4;3694:37;;;;;:3;;;;;-1:-1:-1;3694:11:63;;-1:-1:-1;3694:37:63;;3714:4;;;;;3721:9;;3694:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4240:4:63;;:18;;;;;;;;4229:8;;4240:4;;;:16;;:18;;;;;;;;;;;;;;:4;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4276:25;;;;;4229:29;;-1:-1:-1;4276:4:63;;:14;;:25;;4291:5;;4229:29;;4276:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4319;;;;;4268:33;;-1:-1:-1;4319:4:63;;:14;;:25;;4334:5;;4341:2;;4319:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4409:166;;;;;;;;4469:4;;;;;;4409:166;;4484:3;;;;;4409:166;;;;4490:3;;;;;;;;4409:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4409:166:63;;;;;;4469:4;4409:166;;;;;4538:10;4409:166;;;;4550:15;4409:166;;;;4626:4;:17;;;;;4409:166;;-1:-1:-1;4409:166:63;;4626:4;;;:9;;:17;;4409:166;;4626:17;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4653:22;;;;;;;;;;;;;;;;;4585:58;;-1:-1:-1;4585:58:63;;-1:-1:-1;4585:58:63;-1:-1:-1;4585:58:63;-1:-1:-1;4653:22:63;;:12;:22::i;:::-;4685:23;4698:9;4685:23;;:12;:23::i;:::-;4718:21;4731:7;4718:12;:21::i;:::-;4749;4762:7;4749:12;:21::i;:::-;3394:1383;;3180:1597;;;;;;;;;:::o;6841:116:16:-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;147:96:69:-;182:7;93:42;82:54;;215:22;204:33;147:96;-1:-1:-1;;147:96:69:o;248:95::-;314:22;330:5;314:22;:::i;:::-;309:3;302:35;;;248:95::o;348:189::-;482:2;467:18;;494:37;471:9;513:6;494:37;:::i;599:138::-;645:9;93:42;82:54;;682:49;14:128;742:122;788:9;825:33;852:5;825:33;:::i;869:138::-;931:9;968:33;995:5;968:33;:::i;1012:138::-;1094:49;1137:5;1094:49;:::i;1155:229::-;1313:2;1298:18;;1325:53;1302:9;1360:6;1325:53;:::i;2343:164::-;2422:42;2460:3;2452:6;2422:42;:::i;:::-;-1:-1:-1;2496:4:69;2487:14;;2343:164::o;2605:506::-;2658:3;2690:37;2721:5;1957:12;;1884:87;2690:37;2074:19;;;2126:4;2117:14;;;;2211;;2882:1;2892:194;2906:6;2903:1;2900:13;2892:194;;;2962:48;3006:3;2997:6;2991:13;2962:48;:::i;:::-;2955:55;-1:-1:-1;2220:4:69;2211:14;;3023:53;-1:-1:-1;2928:1:69;2921:9;2892:194;;;-1:-1:-1;3102:3:69;;2605:506;-1:-1:-1;;;;2605:506:69:o;3116:261::-;3295:2;3284:9;3277:21;3258:4;3315:56;3367:2;3356:9;3352:18;3344:6;3315:56;:::i;4001:107::-;4047:7;4080:22;4096:5;4080:22;:::i;4113:144::-;4199:33;4226:5;4199:33;:::i;:::-;4192:5;4189:44;4179:72;;4247:1;4244;4237:12;4262:194;4352:20;;;4406:44;4352:20;4406:44;:::i;:::-;;4262:194;;;;:::o;4533:122::-;4624:5;4608:22;542:52;4660:172;4739:20;;;4793:33;4739:20;4793:33;:::i;4837:122::-;93:42;82:54;;4912:22;14:128;4964:172;5043:20;;;5097:33;5043:20;5097:33;:::i;5141:600::-;5265:6;5273;5281;5289;5342:3;5330:9;5321:7;5317:23;5313:33;5310:148;;;5369:79;257:6879:66;;;5369:79:69;5477:49;5518:7;5507:9;5477:49;:::i;:::-;5467:59;;5545:58;5595:7;5590:2;5579:9;5575:18;5545:58;:::i;:::-;5535:68;;5622:47;5661:7;5656:2;5645:9;5641:18;5622:47;:::i;:::-;5612:57;;5688:47;5727:7;5722:2;5711:9;5707:18;5688:47;:::i;:::-;5678:57;;5141:600;;;;;;;:::o;5746:106::-;5839:5;5823:22;542:52;5857:200;5991:2;5976:18;;6003:48;5980:9;6033:6;6003:48;:::i;6159:118::-;6232:20;6246:5;6139:1;6128:20;;6062:92;6282:168;6359:20;;;6413:31;6359:20;6413:31;:::i;6455:448::-;6528:6;6536;6544;6597:2;6585:9;6576:7;6572:23;6568:32;6565:147;;;6623:79;257:6879:66;;;6623:79:69;6731:38;6761:7;6750:9;6731:38;:::i;:::-;6721:48;;6788:45;6825:7;6820:2;6809:9;6805:18;6788:45;:::i;:::-;6778:55;;6852:45;6889:7;6884:2;6873:9;6869:18;6852:45;:::i;:::-;6842:55;;6455:448;;;;;:::o;7793:93::-;7715:66;7704:78;;7858:21;7637:151;7891;7969:30;7995:3;7987:6;7969:30;:::i;8139:500::-;8191:3;8223:36;8253:5;1957:12;;1884:87;8223:36;2074:19;;;2126:4;2117:14;;;;2211;;8412:1;8422:192;8436:6;8433:1;8430:13;8422:192;;;8492:47;8535:3;8526:6;8520:13;8492:47;:::i;:::-;8485:54;-1:-1:-1;2220:4:69;2211:14;;8552:52;-1:-1:-1;8458:1:69;8451:9;8422:192;;8644:289;8717:48;8761:3;8753:5;8747:12;8717:48;:::i;:::-;8699:3;8811:4;8804:5;8800:16;8794:23;8849:4;8842;8837:3;8833:14;8826:28;8870:57;8921:4;8916:3;8912:14;8898:12;8870:57;:::i;8938:154::-;9004:10;9043:43;9082:3;9074:6;9043:43;:::i;9202:731::-;9267:3;9299:49;9342:5;1957:12;;1884:87;9299:49;2074:19;;;2126:4;2117:14;;9457:5;9450:12;;9501:6;9498:1;9494:14;9487:5;9483:26;9532:51;9577:5;2220:4;2211:14;;2142:85;9532:51;9601:1;9611:296;9625:6;9622:1;9619:13;9611:296;;;9696:5;9690:4;9686:16;9681:3;9674:29;9724:61;9780:4;9771:6;9765:13;9724:61;:::i;:::-;9716:69;-1:-1:-1;2220:4:69;2211:14;;9892:4;9883:14;;;;;9798:65;-1:-1:-1;9647:1:69;9640:9;9611:296;;;-1:-1:-1;9923:4:69;;9202:731;-1:-1:-1;;;;;;9202:731:69:o;9938:333::-;10177:2;10166:9;10159:21;10140:4;10197:68;10261:2;10250:9;10246:18;10238:6;10197:68;:::i;10373:97::-;10348:13;;10341:21;10444:19;10276:92;10475:188;10603:2;10588:18;;10615:42;10592:9;10639:6;10615:42;:::i;11834:250::-;11919:1;11929:113;11943:6;11940:1;11937:13;11929:113;;;12019:11;;;12013:18;12000:11;;;11993:39;11965:2;11958:10;11929:113;;;-1:-1:-1;;12076:1:69;12058:16;;12051:27;11834:250::o;12256:317::-;12309:3;12341:26;12361:5;1957:12;;1884:87;12341:26;2074:19;;;2126:4;2117:14;;12446:67;12506:6;12499:5;12492:4;12485:5;12481:16;12446:67;:::i;:::-;12178:66;12173:2;12162:14;;12158:87;12529:38;;12256:317;-1:-1:-1;;;;12256:317:69:o;12578:139::-;12631:10;12670:41;12707:3;12699:6;12670:41;:::i;12814:653::-;12866:3;12898:36;12928:5;1957:12;;1884:87;12898:36;2074:19;;;2126:4;2117:14;;13030:5;13023:12;;13074:6;13071:1;13067:14;13060:5;13056:26;13105:38;13137:5;2220:4;2211:14;;2142:85;13105:38;13161:1;13171:270;13185:6;13182:1;13179:13;13171:270;;;13256:5;13250:4;13246:16;13241:3;13234:29;13284:48;13327:4;13318:6;13312:13;13284:48;:::i;:::-;13276:56;-1:-1:-1;2220:4:69;2211:14;;13426:4;13417:14;;;;;13345:52;-1:-1:-1;13207:1:69;13200:9;13171:270;;13472:280;13671:2;13660:9;13653:21;13634:4;13691:55;13742:2;13731:9;13727:18;13719:6;13691:55;:::i;13757:106::-;93:42;82:54;;13834:22;14:128;13868:200;14002:2;13987:18;;14014:48;13991:9;14044:6;14014:48;:::i;14558:290::-;14617:6;14670:2;14658:9;14649:7;14645:23;14641:32;14638:147;;;14696:79;257:6879:66;;;14696:79:69;14804:38;14834:7;14823:9;14804:38;:::i;14853:532::-;14935:6;14943;14951;14959;15012:3;15000:9;14991:7;14987:23;14983:33;14980:148;;;15039:79;257:6879:66;;;15039:79:69;15147:38;15177:7;15166:9;15147:38;:::i;:::-;15137:48;;15204:47;15243:7;15238:2;15227:9;15223:18;15204:47;:::i;:::-;15194:57;;15270:45;15307:7;15302:2;15291:9;15287:18;15270:45;:::i;:::-;15260:55;;15334:45;15371:7;15366:2;15355:9;15351:18;15334:45;:::i;15515:95::-;15469:34;15458:46;;15581:22;15390:120;15615:472;15833:3;15818:19;;15846:48;15822:9;15876:6;15846:48;:::i;:::-;15903:46;15945:2;15934:9;15930:18;15922:6;15903:46;:::i;:::-;15958:57;16011:2;16000:9;15996:18;15988:6;15958:57;:::i;:::-;16024;16077:2;16066:9;16062:18;16054:6;16024:57;:::i;:::-;15615:472;;;;;;;:::o;16190:93::-;16170:8;16159:20;;16255:21;16092:93;16288:186;16420:2;16405:18;;16432:36;16409:9;16450:6;16432:36;:::i;16479:516::-;16594:6;16602;16610;16663:2;16651:9;16642:7;16638:23;16634:32;16631:147;;;16689:79;257:6879:66;;;16689:79:69;16797:49;16838:7;16827:9;16797:49;:::i;:::-;16787:59;;16865:58;16915:7;16910:2;16899:9;16895:18;16865:58;:::i;:::-;16855:68;;16942:47;16981:7;16976:2;16965:9;16961:18;16942:47;:::i;17000:369::-;17066:6;17074;17127:2;17115:9;17106:7;17102:23;17098:32;17095:147;;;17153:79;257:6879:66;;;17153:79:69;17261:38;17291:7;17280:9;17261:38;:::i;:::-;17251:48;;17318:45;17355:7;17350:2;17339:9;17335:18;17318:45;:::i;:::-;17308:55;;17000:369;;;;;:::o;18125:138::-;18208:30;18232:5;18208:30;:::i;18268:192::-;18366:13;;;18413:41;18366:13;18413:41;:::i;18465:328::-;18543:6;18596:2;18584:9;18575:7;18571:23;18567:32;18564:147;;;18622:79;257:6879:66;;;18622:79:69;18730:57;18779:7;18768:9;18730:57;:::i;18879:118::-;18867:4;18856:16;;18952:20;18798:76;19002:172;19090:13;;;19137:31;19090:13;19137:31;:::i;19179:308::-;19247:6;19300:2;19288:9;19279:7;19275:23;19271:32;19268:147;;;19326:79;257:6879:66;;;19326:79:69;19434:47;19473:7;19462:9;19434:47;:::i;19492:184::-;19544:77;19541:1;19534:88;19641:4;19638:1;19631:15;19665:4;19662:1;19655:15;19768:402;19864:6;19887:5;19901:263;19922:1;19912:8;19909:15;19901:263;;;19972:4;19967:3;19963:14;19957:4;19954:24;19951:50;;;19981:18;;:::i;:::-;20031:1;20021:8;20017:16;20014:49;;;20045:16;;;;20014:49;20084:15;;20124:30;20145:8;19752:1;19748:13;;19681:82;20124:30;20112:42;;19901:263;;;19768:402;;;;;;;:::o;20175:996::-;20229:5;20259:8;20249:80;;-1:-1:-1;20300:1:69;20314:5;;20249:80;20348:4;20338:76;;-1:-1:-1;20385:1:69;20399:5;;20338:76;20430:4;20448:1;20443:59;;;;20516:1;20511:220;;;;20423:308;;20443:59;20473:1;20464:10;;20487:5;;;20511:220;20548:3;20538:8;20535:17;20532:43;;;20555:18;;:::i;:::-;20617:1;20607:8;20603:16;20641:7;20632:16;;20676:3;20667:7;20664:16;20661:42;;;20683:18;;:::i;:::-;20661:42;20716:5;;;20423:308;;20815:2;20805:8;20802:16;20796:3;20790:4;20787:13;20783:36;20777:2;20767:8;20764:16;20759:2;20753:4;20750:12;20746:35;20743:77;20740:249;;;-1:-1:-1;20858:19:69;;;;20922:16;;;20919:42;;;20941:18;;:::i;:::-;20919:42;20974:5;;20740:249;21021:42;21059:3;21049:8;21043:4;21040:1;21021:42;:::i;:::-;21096:6;21091:3;21087:16;21078:7;21075:29;21072:55;;;21107:18;;:::i;:::-;21145:20;;20175:996;-1:-1:-1;;;;20175:996:69:o;21176:258::-;21234:5;21284:4;21307:121;21361:66;18867:4;18856:16;;21328:6;21307:121;:::i;21439:308::-;21479:7;21528:1;21566;21610:13;;;21594:30;21644:9;21633:20;;21711:3;21700:9;21696:19;21691:3;21688:28;21682:3;21675:11;21672:45;21662:79;;21721:18;;:::i;:::-;21662:79;;;21439:308;;;;:::o;21752:283::-;21914:2;21899:18;;21926:37;21903:9;21945:6;21926:37;:::i;:::-;21972:57;22025:2;22014:9;22010:18;22002:6;21972:57;:::i;22040:116::-;10348:13;;10341:21;22112:19;10276:92;22161:170;22248:13;;;22295:30;22248:13;22295:30;:::i;22336:306::-;22403:6;22456:2;22444:9;22435:7;22431:23;22427:32;22424:147;;;22482:79;257:6879:66;;;22482:79:69;22590:46;22628:7;22617:9;22590:46;:::i;22955:948::-;23031:48;23075:3;23067:5;23061:12;23031:48;:::i;:::-;23125:4;23118:5;23114:16;23108:23;23140:59;23193:4;23188:3;23184:14;23170:12;23140:59;:::i;:::-;;23247:4;23240:5;23236:16;23230:23;23262:59;23315:4;23310:3;23306:14;23290;23262:59;:::i;:::-;;23369:4;23362:5;23358:16;23352:23;23384:61;23439:4;23434:3;23430:14;23414;23384:61;:::i;:::-;;23493:4;23486:5;23482:16;23476:23;23508:50;23552:4;23547:3;23543:14;23527;23508:50;:::i;:::-;;23606:4;23599:5;23595:16;23589:23;23621:50;23665:4;23660:3;23656:14;23640;23621:50;:::i;:::-;;23719:4;23712:5;23708:16;23702:23;23734:50;23778:4;23773:3;23769:14;23753;23734:50;:::i;:::-;;23832:4;23825:5;23821:16;23815:23;23847:50;23891:4;23886:3;23882:14;23866;23847:50;:::i;23908:294::-;24124:3;24109:19;;24137:59;24113:9;24178:6;24137:59;:::i;24207:176::-;24297:13;;;24344:33;24297:13;24344:33;:::i;24388:312::-;24458:6;24511:2;24499:9;24490:7;24486:23;24482:32;24479:147;;;24537:79;257:6879:66;;;24537:79:69;24645:49;24686:7;24675:9;24645:49;:::i;24705:184::-;24757:77;24754:1;24747:88;24854:4;24851:1;24844:15;24878:4;24875:1;24868:15;24894:202;24934:1;24977;25015;24999:18;25036:3;25026:37;;25043:18;;:::i;:::-;25077:13;;;24894:202;-1:-1:-1;;;24894:202:69:o;25290:184::-;25342:77;25339:1;25332:88;25439:4;25436:1;25429:15;25463:4;25460:1;25453:15;25479:184;25531:77;25528:1;25521:88;25628:4;25625:1;25618:15;25652:4;25649:1;25642:15;25668:113;25749:1;25742:5;25739:12;25729:46;;25755:18;;:::i;25786:131::-;25860:5;25874:37;25860:5;25874:37;:::i;25922:121::-;25972:9;26009:28;26031:5;26009:28;:::i;26048:116::-;26120:37;26151:5;26120:37;:::i;26169:226::-;26228:43;26267:3;26259:5;26253:12;26228:43;:::i;:::-;26317:4;26310:5;26306:16;26300:23;26332:57;26383:4;26378:3;26374:14;26360:12;26332:57;:::i;26602:93::-;26572:18;26561:30;;26667:21;26494:103;27153:93;27139:6;27128:18;;27218:21;27069:79;27629:119;27716:1;27709:5;27706:12;27696:46;;27722:18;;:::i;27753:143::-;27833:5;27847:43;27833:5;27847:43;:::i;27901:133::-;27957:9;27994:34;28022:5;27994:34;:::i;28039:128::-;28117:43;28154:5;28117:43;:::i;28745:286::-;28816:49;28861:3;28853:5;28847:12;28816:49;:::i;:::-;28798:3;28911:4;28904:5;28900:16;28894:23;28949:4;28942;28937:3;28933:14;28926:28;28970:55;29019:4;29014:3;29010:14;28996:12;28970:55;:::i;29036:150::-;29100:10;29139:41;29176:3;29168:6;29139:41;:::i;29294:719::-;29357:3;29389:47;29430:5;1957:12;;1884:87;29389:47;2074:19;;;2126:4;2117:14;;29543:5;29536:12;;29587:6;29584:1;29580:14;29573:5;29569:26;29618:49;29661:5;2220:4;2211:14;;2142:85;29618:49;29685:1;29695:292;29709:6;29706:1;29703:13;29695:292;;;29780:5;29774:4;29770:16;29765:3;29758:29;29808:59;29862:4;29853:6;29847:13;29808:59;:::i;:::-;29800:67;-1:-1:-1;2220:4:69;2211:14;;29972:4;29963:14;;;;;29880:63;-1:-1:-1;29731:1:69;29724:9;29695:292;;30018:283;30086:36;30118:3;30110:5;30104:12;30086:36;:::i;:::-;30068:3;30168:4;30161:5;30157:16;30151:23;30206:4;30199;30194:3;30190:14;30183:28;30227:68;30289:4;30284:3;30280:14;30266:12;30227:68;:::i;30306:144::-;30367:10;30406:38;30440:3;30432:6;30406:38;:::i;30555:701::-;30615:3;30647:44;30685:5;1957:12;;1884:87;30647:44;2074:19;;;2126:4;2117:14;;30795:5;30788:12;;30839:6;30836:1;30832:14;30825:5;30821:26;30870:46;30910:5;2220:4;2211:14;;2142:85;30870:46;30934:1;30944:286;30958:6;30955:1;30952:13;30944:286;;;31029:5;31023:4;31019:16;31014:3;31007:29;31057:56;31108:4;31099:6;31093:13;31057:56;:::i;:::-;31049:64;-1:-1:-1;2220:4:69;2211:14;;31215:4;31206:14;;;;;31126:60;-1:-1:-1;30980:1:69;30973:9;30944:286;;31261:987;31331:48;31375:3;31367:5;31361:12;31331:48;:::i;:::-;31313:3;31425:4;31418:5;31414:16;31408:23;31440:59;31493:4;31488:3;31484:14;31470:12;31440:59;:::i;:::-;;31547:4;31540:5;31536:16;31530:23;31562:55;31611:4;31606:3;31602:14;31586;31562:55;:::i;:::-;;31665:4;31658:5;31654:16;31648:23;31680:50;31724:4;31719:3;31715:14;31699;31680:50;:::i;:::-;;31778:4;31771:5;31767:16;31761:23;31793:47;31834:4;31829:3;31825:14;31809;31793:47;:::i;:::-;;31888:4;31881:5;31877:16;31871:23;31903:47;31944:4;31939:3;31935:14;31919;31903:47;:::i;:::-;;31998:4;31991:5;31987:16;31981:23;32013:49;32056:4;32051:3;32047:14;32031;32013:49;:::i;:::-;;32110:4;32103:5;32099:16;32093:23;32150:6;32141;32136:3;32132:16;32125:32;32173:69;32234:6;32229:3;32225:16;32209:14;32173:69;:::i;32253:266::-;32438:2;32427:9;32420:21;32401:4;32458:55;32509:2;32498:9;32494:18;32486:6;32458:55;:::i;32524:308::-;32564:7;93:42;82:54;;93:42;82:54;;93:42;32695:13;;;82:54;32679:30;14:128;32837:202;32877:1;93:42;82:54;;93:42;82:54;;32942:18;14:128;33144:93;33122:10;33111:22;;33209:21;33044:95;33341:93;33406:21;33421:5;33320:2;33309:21;;33242:94;33439:551;33507:34;33537:3;33529:5;33523:12;33507:34;:::i;:::-;33587:4;33580:5;33576:16;33570:23;33602:45;33641:4;33636:3;33632:14;33618:12;33602:45;:::i;:::-;;33695:4;33688:5;33684:16;33678:23;33710:49;33753:4;33748:3;33744:14;33728;33710:49;:::i;:::-;;33807:4;33800:5;33796:16;33790:23;33822:50;33866:4;33861:3;33857:14;33841;33822:50;:::i;:::-;;33920:4;33913:5;33909:16;33903:23;33935:49;33978:4;33973:3;33969:14;33953;33935:49;:::i;33995:270::-;34195:3;34180:19;;34208:51;34184:9;34241:6;34208:51;:::i;34270:120::-;26572:18;26561:30;;34344:21;26494:103;34395:174;34484:13;;;34531:32;34484:13;34531:32;:::i;34574:310::-;34643:6;34696:2;34684:9;34675:7;34671:23;34667:32;34664:147;;;34722:79;257:6879:66;;;34722:79:69;34830:48;34870:7;34859:9;34830:48;:::i;35362:228::-;35509:2;35498:9;35491:21;35472:4;35529:55;35580:2;35569:9;35565:18;35557:6;35529:55;:::i;35781:148::-;35833:9;18867:4;18856:16;;35870:53;18798:76;35934:116;36004:39;36037:5;36004:39;:::i;36055:107::-;36119:37;36152:3;36144:5;36138:12;36119:37;:::i;:::-;;;36055:107::o;36167:440::-;36419:2;36404:18;;36431:46;36408:9;36459:6;36431:46;:::i;:::-;36486:50;36532:2;36521:9;36517:18;36509:6;36486:50;:::i;:::-;36545:56;36597:2;36586:9;36582:18;36574:6;36545:56;:::i;36612:184::-;36664:77;36661:1;36654:88;36761:4;36758:1;36751:15;36785:4;36782:1;36775:15;36801:318;36886:1;36882:12;;;;;;36956;;;36977:63;;37033:4;37023:8;37019:19;37009:29;;36977:63;37086:2;37078:6;37075:14;37055:18;37052:38;37049:64;;37093:18;;:::i;:::-;37049:64;;36801:318;;;:::o;37124:176::-;37214:13;;;37261:33;37214:13;37261:33;:::i;37305:172::-;37393:13;;;37440:31;37393:13;37440:31;:::i;37482:120::-;27139:6;27128:18;;37556:21;27069:79;37607:174;37696:13;;;37743:32;37696:13;37743:32;:::i;37786:860::-;37900:6;37908;37916;37924;37932;37940;37948;38001:3;37989:9;37980:7;37976:23;37972:33;37969:148;;;38028:79;257:6879:66;;;38028:79:69;38136:49;38177:7;38166:9;38136:49;:::i;:::-;38126:59;;38204:56;38252:7;38247:2;38236:9;38232:18;38204:56;:::i;:::-;38194:66;;38279:57;38328:7;38323:2;38312:9;38308:18;38279:57;:::i;:::-;38269:67;;38355:57;38404:7;38399:2;38388:9;38384:18;38355:57;:::i;:::-;38345:67;;38431:58;38481:7;38475:3;38464:9;38460:19;38431:58;:::i;:::-;38421:68;;38508:57;38557:7;38551:3;38540:9;38536:19;38508:57;:::i;:::-;38498:67;;38584:56;38632:7;38626:3;38615:9;38611:19;38584:56;:::i;:::-;38574:66;;37786:860;;;;;;;;;;:::o;39438:301::-;39479:3;39511:25;39530:5;1957:12;;1884:87;39511:25;39611:3;39632:67;39692:6;39685:5;39678:4;39671:5;39667:16;39632:67;:::i;:::-;39715:18;;39438:301;-1:-1:-1;;;39438:301:69:o;39744:290::-;39917:58;39971:3;39963:6;39917:58;:::i;:::-;39899:3;39991:37;40025:1;40020:3;40016:11;40008:6;39991:37;:::i;40039:189::-;40168:3;40193:29;40218:3;40210:6;40193:29;:::i;40858:257::-;93:42;82:54;;;;;;40969:28;;;;41032:54;;41029:80;;;41089:18;;:::i;41120:252::-;93:42;82:54;;;;;;41229:28;;;;41290:53;;41287:79;;;41346:18;;:::i;41713:272::-;41842:2;2074:19;;41760:3;2126:4;2117:14;;41677:24;41662:40;;41854:95;41976:2;41965:14;;41713:272;-1:-1:-1;;41713:272:69:o;42130:271::-;42259:1;2074:19;;42177:3;2126:4;2117:14;;42117:5;42102:21;;42270:95;41990:135;42773:610;43111:2;43100:9;43093:21;43074:4;43137:49;43182:2;43171:9;43167:18;43137:49;:::i;:::-;43234:9;43226:6;43222:22;43217:2;43206:9;43202:18;43195:50;43262:37;43292:6;43262:37;:::i;:::-;43254:45;;;43308:69;43373:2;43362:9;43358:18;43350:6;43308:69;:::i;43553:272::-;43682:2;2074:19;;43600:3;2126:4;2117:14;;43523:18;43508:34;;43694:95;43388:160;43971:271;44100:1;2074:19;;44018:3;2126:4;2117:14;;43957:6;43942:22;;44111:95;43830:136;44600:599;44937:2;44926:9;44919:21;44900:4;44963:49;45008:2;44997:9;44993:18;44963:49;:::i;:::-;45060:9;45052:6;45048:22;45043:2;45032:9;45028:18;45021:50;45088:37;45118:6;45088:37;:::i;45204:447::-;45420:3;45405:19;;45433:37;45409:9;45452:6;45433:37;:::i;:::-;45479:46;45521:2;45510:9;45506:18;45498:6;45479:46;:::i;:::-;45534:45;45575:2;45564:9;45560:18;45552:6;45534:45;:::i;:::-;45588:57;45641:2;45630:9;45626:18;45618:6;45588:57;:::i;45656:238::-;45690:3;45723:20;45737:5;6139:1;6128:20;;6062:92;45723:20;45767:66;45758:7;45755:79;45752:105;;45837:18;;:::i;:::-;45877:1;45873:15;;45656:238;-1:-1:-1;;45656:238:69:o;45899:303::-;45937:4;45967:16;45981:1;6139;6128:20;;6062:92;45967:16;46015;46029:1;6139;6128:20;;6062:92;46015:16;46006:26;;;-1:-1:-1;46006:26:69;46082:66;46070:79;;46163:8;46151:21;;46067:106;46064:132;;;46176:18;;:::i;46207:297::-;46245:3;46274:16;46288:1;6139;6128:20;;6062:92;46274:16;46321;46335:1;6139;6128:20;;6062:92;46321:16;46312:26;;-1:-1:-1;46312:26:69;46385:8;46374:20;;46407:66;46396:78;;46371:104;46368:130;;;46478:18;;:::i;47055:308::-;47123:6;47176:2;47164:9;47155:7;47151:23;47147:32;47144:147;;;47202:79;257:6879:66;;;47202:79:69;47310:47;47349:7;47338:9;47310:47;:::i;47368:91::-;47432:20;47446:5;6139:1;6128:20;;6062:92;47464:268;47626:2;47611:18;;47638:35;47615:9;47655:6;47638:35;:::i;:::-;47682:44;47722:2;47711:9;47707:18;47699:6;47682:44;:::i;47842:1301::-;47906:48;47950:3;47942:5;47936:12;47906:48;:::i;:::-;48000:4;47993:5;47989:16;47983:23;48015:59;48068:4;48063:3;48059:14;48045:12;48015:59;:::i;:::-;;48122:4;48115:5;48111:16;48105:23;48137:59;48190:4;48185:3;48181:14;48165;48137:59;:::i;:::-;;48244:4;48237:5;48233:16;48227:23;48259:57;48310:4;48305:3;48301:14;48285;48259:57;:::i;:::-;;48364:4;48357:5;48353:16;48347:23;48379:57;48430:4;48425:3;48421:14;48405;48379:57;:::i;:::-;;48484:4;48477:5;48473:16;48467:23;48499:50;48543:4;48538:3;48534:14;48518;48499:50;:::i;:::-;;48597:4;48590:5;48586:16;48580:23;48612:50;48656:4;48651:3;48647:14;48631;48612:50;:::i;:::-;;48710:4;48703:5;48699:16;48693:23;48725:50;48769:4;48764:3;48760:14;48744;48725:50;:::i;:::-;;48823:6;48816:5;48812:18;48806:25;48840:52;48884:6;48879:3;48875:16;48859:14;48840:52;:::i;:::-;;48940:6;48933:5;48929:18;48923:25;48957:63;49012:6;49007:3;49003:16;48987:14;48957:63;:::i;:::-;;49068:6;49061:5;49057:18;49051:25;49085:52;49129:6;49124:3;49120:16;49104:14;49085:52;:::i;49148:258::-;49340:3;49325:19;;49353:47;49329:9;49382:6;49353:47;:::i;49411:122::-;15469:34;15458:46;;49486:22;15390:120;49538:176;49628:13;;;49675:33;49628:13;49675:33;:::i;49719:595::-;49816:6;49824;49832;49840;49893:3;49881:9;49872:7;49868:23;49864:33;49861:148;;;49920:79;257:6879:66;;;49920:79:69;50028:49;50069:7;50058:9;50028:49;:::i;:::-;50018:59;;50096:58;50146:7;50141:2;50130:9;50126:18;50096:58;:::i;:::-;50086:68;;50173:58;50223:7;50218:2;50207:9;50203:18;50173:58;:::i;:::-;50163:68;;50250:58;50300:7;50295:2;50284:9;50280:18;50250:58;:::i", "linkReferences": { "src/Util.sol": { @@ -955,7 +955,7 @@ "token1()": "d21220a7", "vault()": "fbfa77cf" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteOrderExactInput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteOrderExactOutput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPlaceOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract Vault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestOrder.sol\":\"TestOrder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]},\"test/TestOrder.sol\":{\"keccak256\":\"0x18219354c6344dc8e29dbc09a3c92a3a1769f8b842259b5d49d2f89e8f6a0eaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://06331877831b4bcf9745b1995e2c0f5fe4338765914ffd0f4a68b1dfc7b4acfb\",\"dweb:/ipfs/QmdeviTRXT8wG4vAAD9i7LNSTiPQDYDfhokKFwn8oNZiuB\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteOrderExactInput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteOrderExactOutput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPlaceOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract Vault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestOrder.sol\":\"TestOrder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]},\"test/TestOrder.sol\":{\"keccak256\":\"0x18219354c6344dc8e29dbc09a3c92a3a1769f8b842259b5d49d2f89e8f6a0eaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://06331877831b4bcf9745b1995e2c0f5fe4338765914ffd0f4a68b1dfc7b4acfb\",\"dweb:/ipfs/QmdeviTRXT8wG4vAAD9i7LNSTiPQDYDfhokKFwn8oNZiuB\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -2262,10 +2262,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -2354,10 +2354,10 @@ }, "ast": { "absolutePath": "test/TestOrder.sol", - "id": 51706, + "id": 51703, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "Context": [ 43777 @@ -2369,7 +2369,7 @@ 43478 ], "Factory": [ - 46430 + 46427 ], "FixedPoint96": [ 44338 @@ -2441,19 +2441,19 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "LiquidityAmounts": [ 45794 ], "MockERC20": [ - 46478 + 46475 ], "MockEnv": [ - 50069 + 50066 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 @@ -2486,7 +2486,7 @@ 2357 ], "TestOrder": [ - 51705 + 51702 ], "TickMath": [ 45059 @@ -2495,16 +2495,16 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Util": [ - 48904 + 48901 ], "Vault": [ - 49181 + 49178 ], "VaultDeployer": [ - 49436 + 49433 ], "Vm": [ 13464 @@ -2535,7 +2535,7 @@ "src": "65:7072:66", "nodes": [ { - "id": 50916, + "id": 50913, "nodeType": "PragmaDirective", "src": "65:24:66", "nodes": [], @@ -2547,7 +2547,7 @@ ] }, { - "id": 50917, + "id": 50914, "nodeType": "PragmaDirective", "src": "90:19:66", "nodes": [], @@ -2557,115 +2557,115 @@ ] }, { - "id": 50918, + "id": 50915, "nodeType": "ImportDirective", "src": "111:23:66", "nodes": [], "absolutePath": "test/MockEnv.sol", "file": "./MockEnv.sol", "nameLocation": "-1:-1:-1", - "scope": 51706, - "sourceUnit": 50070, + "scope": 51703, + "sourceUnit": 50067, "symbolAliases": [], "unitAlias": "" }, { - "id": 50919, + "id": 50916, "nodeType": "ImportDirective", "src": "135:28:66", "nodes": [], "absolutePath": "lib/forge-std/src/Test.sol", "file": "forge-std/Test.sol", "nameLocation": "-1:-1:-1", - "scope": 51706, + "scope": 51703, "sourceUnit": 11938, "symbolAliases": [], "unitAlias": "" }, { - "id": 50920, + "id": 50917, "nodeType": "ImportDirective", "src": "164:32:66", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 51706, + "scope": 51703, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 50921, + "id": 50918, "nodeType": "ImportDirective", "src": "197:28:66", "nodes": [], "absolutePath": "src/Factory.sol", "file": "../src/Factory.sol", "nameLocation": "-1:-1:-1", - "scope": 51706, - "sourceUnit": 46431, + "scope": 51703, + "sourceUnit": 46428, "symbolAliases": [], "unitAlias": "" }, { - "id": 50922, + "id": 50919, "nodeType": "ImportDirective", "src": "226:29:66", "nodes": [], "absolutePath": "src/OrderLib.sol", "file": "../src/OrderLib.sol", "nameLocation": "-1:-1:-1", - "scope": 51706, - "sourceUnit": 47923, + "scope": 51703, + "sourceUnit": 47920, "symbolAliases": [], "unitAlias": "" }, { - "id": 51705, + "id": 51702, "nodeType": "ContractDefinition", "src": "257:6879:66", "nodes": [ { - "id": 50930, + "id": 50927, "nodeType": "UsingForDirective", "src": "299:39:66", "nodes": [], "global": false, "libraryName": { - "id": 50927, + "id": 50924, "name": "OrderLib", "nameLocations": [ "305:8:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "305:8:66" }, "typeName": { - "id": 50929, + "id": 50926, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 50928, + "id": 50925, "name": "OrderLib.OrdersInfo", "nameLocations": [ "318:8:66", "327:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "318:19:66" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "318:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } } }, { - "id": 50933, + "id": 50930, "nodeType": "VariableDeclaration", "src": "344:22:66", "nodes": [], @@ -2674,37 +2674,37 @@ "mutability": "mutable", "name": "factory", "nameLocation": "359:7:66", - "scope": 51705, + "scope": 51702, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" }, "typeName": { - "id": 50932, + "id": 50929, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 50931, + "id": 50928, "name": "Factory", "nameLocations": [ "344:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "344:7:66" }, - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "344:7:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, "visibility": "public" }, { - "id": 50936, + "id": 50933, "nodeType": "VariableDeclaration", "src": "372:18:66", "nodes": [], @@ -2713,42 +2713,42 @@ "mutability": "mutable", "name": "vault", "nameLocation": "385:5:66", - "scope": 51705, + "scope": 51702, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" }, "typeName": { - "id": 50935, + "id": 50932, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 50934, + "id": 50931, "name": "Vault", "nameLocations": [ "372:5:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "372:5:66" }, - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "372:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, "visibility": "public" }, { - "id": 51002, + "id": 50999, "nodeType": "FunctionDefinition", "src": "444:353:66", "nodes": [], "body": { - "id": 51001, + "id": 50998, "nodeType": "Block", "src": "468:329:66", "nodes": [], @@ -2758,18 +2758,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 50939, + "id": 50936, "name": "init", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49634, + "referencedDeclaration": 49631, "src": "478:4:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 50940, + "id": 50937, "isConstant": false, "isLValue": false, "isPure": false, @@ -2785,26 +2785,26 @@ "typeString": "tuple()" } }, - "id": 50941, + "id": 50938, "nodeType": "ExpressionStatement", "src": "478:6:66" }, { "expression": { - "id": 50947, + "id": 50944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50942, + "id": 50939, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50933, + "referencedDeclaration": 50930, "src": "494:7:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, @@ -2814,7 +2814,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 50945, + "id": 50942, "isConstant": false, "isLValue": false, "isPure": false, @@ -2822,31 +2822,31 @@ "nodeType": "NewExpression", "src": "504:11:66", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46430_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46427_$", "typeString": "function () returns (contract Factory)" }, "typeName": { - "id": 50944, + "id": 50941, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 50943, + "id": 50940, "name": "Factory", "nameLocations": [ "508:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "508:7:66" }, - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "508:7:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } } }, - "id": 50946, + "id": 50943, "isConstant": false, "isLValue": false, "isPure": false, @@ -2858,36 +2858,36 @@ "src": "504:13:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, "src": "494:23:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, - "id": 50948, + "id": 50945, "nodeType": "ExpressionStatement", "src": "494:23:66" }, { "expression": { - "id": 50959, + "id": 50956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 50949, + "id": 50946, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "527:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, @@ -2900,14 +2900,14 @@ { "arguments": [ { - "id": 50955, + "id": 50952, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "569:4:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_TestOrder_$51705", + "typeIdentifier": "t_contract$_TestOrder_$51702", "typeString": "contract TestOrder" } } @@ -2915,11 +2915,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_TestOrder_$51705", + "typeIdentifier": "t_contract$_TestOrder_$51702", "typeString": "contract TestOrder" } ], - "id": 50954, + "id": 50951, "isConstant": false, "isLValue": false, "isPure": true, @@ -2931,14 +2931,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 50953, + "id": 50950, "name": "address", "nodeType": "ElementaryTypeName", "src": "561:7:66", "typeDescriptions": {} } }, - "id": 50956, + "id": 50953, "isConstant": false, "isLValue": false, "isPure": false, @@ -2963,18 +2963,18 @@ } ], "expression": { - "id": 50951, + "id": 50948, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50933, + "referencedDeclaration": 50930, "src": "541:7:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, - "id": 50952, + "id": 50949, "isConstant": false, "isLValue": false, "isPure": false, @@ -2982,14 +2982,14 @@ "memberLocation": "549:11:66", "memberName": "deployVault", "nodeType": "MemberAccess", - "referencedDeclaration": 49375, + "referencedDeclaration": 49372, "src": "541:19:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_address_payable_$", "typeString": "function (address) external returns (address payable)" } }, - "id": 50957, + "id": 50954, "isConstant": false, "isLValue": false, "isPure": false, @@ -3013,18 +3013,18 @@ "typeString": "address payable" } ], - "id": 50950, + "id": 50947, "name": "Vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "535:5:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Vault_$49181_$", + "typeIdentifier": "t_type$_t_contract$_Vault_$49178_$", "typeString": "type(contract Vault)" } }, - "id": 50958, + "id": 50955, "isConstant": false, "isLValue": false, "isPure": false, @@ -3036,33 +3036,33 @@ "src": "535:41:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, "src": "527:49:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 50960, + "id": 50957, "nodeType": "ExpressionStatement", "src": "527:49:66" }, { "assignments": [ - 50962 + 50959 ], "declarations": [ { "constant": false, - "id": 50962, + "id": 50959, "mutability": "mutable", "name": "coinAmount", "nameLocation": "594:10:66", "nodeType": "VariableDeclaration", - "scope": 51001, + "scope": 50998, "src": "586:18:66", "stateVariable": false, "storageLocation": "default", @@ -3071,7 +3071,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50961, + "id": 50958, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "586:7:66", @@ -3083,20 +3083,20 @@ "visibility": "internal" } ], - "id": 50970, + "id": 50967, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50969, + "id": 50966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130305f303030", - "id": 50963, + "id": 50960, "isConstant": false, "isLValue": false, "isPure": true, @@ -3117,14 +3117,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50968, + "id": 50965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 50964, + "id": 50961, "isConstant": false, "isLValue": false, "isPure": true, @@ -3145,18 +3145,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 50965, + "id": 50962, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "623:4:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 50966, + "id": 50963, "isConstant": false, "isLValue": false, "isPure": false, @@ -3164,14 +3164,14 @@ "memberLocation": "628:8:66", "memberName": "decimals", "nodeType": "MemberAccess", - "referencedDeclaration": 46464, + "referencedDeclaration": 46461, "src": "623:13:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 50967, + "id": 50964, "isConstant": false, "isLValue": false, "isPure": false, @@ -3208,14 +3208,14 @@ { "arguments": [ { - "id": 50976, + "id": 50973, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "666:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -3223,11 +3223,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 50975, + "id": 50972, "isConstant": false, "isLValue": false, "isPure": true, @@ -3239,14 +3239,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 50974, + "id": 50971, "name": "address", "nodeType": "ElementaryTypeName", "src": "658:7:66", "typeDescriptions": {} } }, - "id": 50977, + "id": 50974, "isConstant": false, "isLValue": false, "isPure": false, @@ -3263,11 +3263,11 @@ } }, { - "id": 50978, + "id": 50975, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50962, + "referencedDeclaration": 50959, "src": "674:10:66", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3287,18 +3287,18 @@ } ], "expression": { - "id": 50971, + "id": 50968, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "648:4:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 50973, + "id": 50970, "isConstant": false, "isLValue": false, "isPure": false, @@ -3306,14 +3306,14 @@ "memberLocation": "653:4:66", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "648:9:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 50979, + "id": 50976, "isConstant": false, "isLValue": false, "isPure": false, @@ -3329,23 +3329,23 @@ "typeString": "tuple()" } }, - "id": 50980, + "id": 50977, "nodeType": "ExpressionStatement", "src": "648:37:66" }, { "assignments": [ - 50982 + 50979 ], "declarations": [ { "constant": false, - "id": 50982, + "id": 50979, "mutability": "mutable", "name": "usdAmount", "nameLocation": "703:9:66", "nodeType": "VariableDeclaration", - "scope": 51001, + "scope": 50998, "src": "695:17:66", "stateVariable": false, "storageLocation": "default", @@ -3354,7 +3354,7 @@ "typeString": "uint256" }, "typeName": { - "id": 50981, + "id": 50978, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "695:7:66", @@ -3366,20 +3366,20 @@ "visibility": "internal" } ], - "id": 50990, + "id": 50987, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50989, + "id": 50986, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130305f303030", - "id": 50983, + "id": 50980, "isConstant": false, "isLValue": false, "isPure": true, @@ -3400,14 +3400,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 50988, + "id": 50985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 50984, + "id": 50981, "isConstant": false, "isLValue": false, "isPure": true, @@ -3428,18 +3428,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 50985, + "id": 50982, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "731:3:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 50986, + "id": 50983, "isConstant": false, "isLValue": false, "isPure": false, @@ -3447,14 +3447,14 @@ "memberLocation": "735:8:66", "memberName": "decimals", "nodeType": "MemberAccess", - "referencedDeclaration": 46464, + "referencedDeclaration": 46461, "src": "731:12:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 50987, + "id": 50984, "isConstant": false, "isLValue": false, "isPure": false, @@ -3491,14 +3491,14 @@ { "arguments": [ { - "id": 50996, + "id": 50993, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "772:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -3506,11 +3506,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 50995, + "id": 50992, "isConstant": false, "isLValue": false, "isPure": true, @@ -3522,14 +3522,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 50994, + "id": 50991, "name": "address", "nodeType": "ElementaryTypeName", "src": "764:7:66", "typeDescriptions": {} } }, - "id": 50997, + "id": 50994, "isConstant": false, "isLValue": false, "isPure": false, @@ -3546,11 +3546,11 @@ } }, { - "id": 50998, + "id": 50995, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50982, + "referencedDeclaration": 50979, "src": "780:9:66", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3570,18 +3570,18 @@ } ], "expression": { - "id": 50991, + "id": 50988, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "755:3:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 50993, + "id": 50990, "isConstant": false, "isLValue": false, "isPure": false, @@ -3589,14 +3589,14 @@ "memberLocation": "759:4:66", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "755:8:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 50999, + "id": 50996, "isConstant": false, "isLValue": false, "isPure": false, @@ -3612,7 +3612,7 @@ "typeString": "tuple()" } }, - "id": 51000, + "id": 50997, "nodeType": "ExpressionStatement", "src": "755:35:66" } @@ -3625,92 +3625,92 @@ "name": "setUp", "nameLocation": "453:5:66", "parameters": { - "id": 50937, + "id": 50934, "nodeType": "ParameterList", "parameters": [], "src": "458:2:66" }, "returnParameters": { - "id": 50938, + "id": 50935, "nodeType": "ParameterList", "parameters": [], "src": "468:0:66" }, - "scope": 51705, + "scope": 51702, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 51171, + "id": 51168, "nodeType": "FunctionDefinition", "src": "804:1973:66", "nodes": [], "body": { - "id": 51170, + "id": 51167, "nodeType": "Block", "src": "837:1940:66", "nodes": [], "statements": [ { "assignments": [ - 51010 + 51007 ], "declarations": [ { "constant": false, - "id": 51010, + "id": 51007, "mutability": "mutable", "name": "tranches", "nameLocation": "873:8:66", "nodeType": "VariableDeclaration", - "scope": 51170, + "scope": 51167, "src": "847:34:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { - "id": 51008, + "id": 51005, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51007, + "id": 51004, "name": "OrderLib.Tranche", "nameLocations": [ "847:8:66", "856:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "847:16:66" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "847:16:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 51009, + "id": 51006, "nodeType": "ArrayTypeName", "src": "847:18:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, "visibility": "internal" } ], - "id": 51017, + "id": 51014, "initialValue": { "arguments": [ { "hexValue": "33", - "id": 51015, + "id": 51012, "isConstant": false, "isLValue": false, "isPure": true, @@ -3732,7 +3732,7 @@ "typeString": "int_const 3" } ], - "id": 51014, + "id": 51011, "isConstant": false, "isLValue": false, "isPure": true, @@ -3740,41 +3740,41 @@ "nodeType": "NewExpression", "src": "884:22:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)" }, "typeName": { "baseType": { - "id": 51012, + "id": 51009, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51011, + "id": 51008, "name": "OrderLib.Tranche", "nameLocations": [ "888:8:66", "897:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "888:16:66" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "888:16:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 51013, + "id": 51010, "nodeType": "ArrayTypeName", "src": "888:18:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } } }, - "id": 51016, + "id": 51013, "isConstant": false, "isLValue": false, "isPure": true, @@ -3786,7 +3786,7 @@ "src": "884:25:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, @@ -3795,63 +3795,63 @@ }, { "assignments": [ - 51023 + 51020 ], "declarations": [ { "constant": false, - "id": 51023, + "id": 51020, "mutability": "mutable", "name": "constraints1", "nameLocation": "948:12:66", "nodeType": "VariableDeclaration", - "scope": 51170, + "scope": 51167, "src": "919:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { - "id": 51021, + "id": 51018, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51020, + "id": 51017, "name": "OrderLib.Constraint", "nameLocations": [ "919:8:66", "928:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "919:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "919:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51022, + "id": 51019, "nodeType": "ArrayTypeName", "src": "919:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], - "id": 51030, + "id": 51027, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51028, + "id": 51025, "isConstant": false, "isLValue": false, "isPure": true, @@ -3873,7 +3873,7 @@ "typeString": "int_const 1" } ], - "id": 51027, + "id": 51024, "isConstant": false, "isLValue": false, "isPure": true, @@ -3881,41 +3881,41 @@ "nodeType": "NewExpression", "src": "963:25:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { - "id": 51025, + "id": 51022, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51024, + "id": 51021, "name": "OrderLib.Constraint", "nameLocations": [ "967:8:66", "976:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "967:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "967:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51026, + "id": 51023, "nodeType": "ArrayTypeName", "src": "967:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, - "id": 51029, + "id": 51026, "isConstant": false, "isLValue": false, "isPure": true, @@ -3927,7 +3927,7 @@ "src": "963:28:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, @@ -3936,28 +3936,28 @@ }, { "expression": { - "id": 51044, + "id": 51041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51031, + "id": 51028, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51023, + "referencedDeclaration": 51020, "src": "1001:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, - "id": 51033, + "id": 51030, "indexExpression": { "hexValue": "30", - "id": 51032, + "id": 51029, "isConstant": false, "isLValue": false, "isPure": true, @@ -3978,7 +3978,7 @@ "nodeType": "IndexAccess", "src": "1001:15:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, @@ -3989,18 +3989,18 @@ { "expression": { "expression": { - "id": 51036, + "id": 51033, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "1039:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51037, + "id": 51034, "isConstant": false, "isLValue": false, "isPure": false, @@ -4008,14 +4008,14 @@ "memberLocation": "1048:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "1039:23:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 51038, + "id": 51035, "isConstant": false, "isLValue": false, "isPure": true, @@ -4023,10 +4023,10 @@ "memberLocation": "1063:4:66", "memberName": "Time", "nodeType": "MemberAccess", - "referencedDeclaration": 46585, + "referencedDeclaration": 46582, "src": "1039:28:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -4034,7 +4034,7 @@ "arguments": [ { "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500", - "id": 51041, + "id": 51038, "isConstant": false, "isLValue": false, "isPure": true, @@ -4056,7 +4056,7 @@ "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" } ], - "id": 51040, + "id": 51037, "isConstant": false, "isLValue": false, "isPure": true, @@ -4068,14 +4068,14 @@ "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 51039, + "id": 51036, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1069:5:66", "typeDescriptions": {} } }, - "id": 51042, + "id": 51039, "isConstant": false, "isLValue": false, "isPure": true, @@ -4095,7 +4095,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, { @@ -4104,18 +4104,18 @@ } ], "expression": { - "id": 51034, + "id": 51031, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "1019:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51035, + "id": 51032, "isConstant": false, "isLValue": false, "isPure": false, @@ -4123,14 +4123,14 @@ "memberLocation": "1028:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1019:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Constraint_$46591_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, - "id": 51043, + "id": 51040, "isConstant": false, "isLValue": false, "isPure": true, @@ -4142,79 +4142,79 @@ "src": "1019:319:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "1001:337:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, - "id": 51045, + "id": 51042, "nodeType": "ExpressionStatement", "src": "1001:337:66" }, { "assignments": [ - 51051 + 51048 ], "declarations": [ { "constant": false, - "id": 51051, + "id": 51048, "mutability": "mutable", "name": "constraints2", "nameLocation": "1377:12:66", "nodeType": "VariableDeclaration", - "scope": 51170, + "scope": 51167, "src": "1348:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { - "id": 51049, + "id": 51046, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51048, + "id": 51045, "name": "OrderLib.Constraint", "nameLocations": [ "1348:8:66", "1357:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1348:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1348:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51050, + "id": 51047, "nodeType": "ArrayTypeName", "src": "1348:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], - "id": 51058, + "id": 51055, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51056, + "id": 51053, "isConstant": false, "isLValue": false, "isPure": true, @@ -4236,7 +4236,7 @@ "typeString": "int_const 1" } ], - "id": 51055, + "id": 51052, "isConstant": false, "isLValue": false, "isPure": true, @@ -4244,41 +4244,41 @@ "nodeType": "NewExpression", "src": "1392:25:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { - "id": 51053, + "id": 51050, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51052, + "id": 51049, "name": "OrderLib.Constraint", "nameLocations": [ "1396:8:66", "1405:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1396:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1396:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51054, + "id": 51051, "nodeType": "ArrayTypeName", "src": "1396:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, - "id": 51057, + "id": 51054, "isConstant": false, "isLValue": false, "isPure": true, @@ -4290,7 +4290,7 @@ "src": "1392:28:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, @@ -4299,28 +4299,28 @@ }, { "expression": { - "id": 51072, + "id": 51069, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51059, + "id": 51056, "name": "constraints2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51051, + "referencedDeclaration": 51048, "src": "1430:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, - "id": 51061, + "id": 51058, "indexExpression": { "hexValue": "30", - "id": 51060, + "id": 51057, "isConstant": false, "isLValue": false, "isPure": true, @@ -4341,7 +4341,7 @@ "nodeType": "IndexAccess", "src": "1430:15:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, @@ -4352,18 +4352,18 @@ { "expression": { "expression": { - "id": 51064, + "id": 51061, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "1468:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51065, + "id": 51062, "isConstant": false, "isLValue": false, "isPure": false, @@ -4371,14 +4371,14 @@ "memberLocation": "1477:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "1468:23:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 51066, + "id": 51063, "isConstant": false, "isLValue": false, "isPure": true, @@ -4386,10 +4386,10 @@ "memberLocation": "1492:4:66", "memberName": "Time", "nodeType": "MemberAccess", - "referencedDeclaration": 46585, + "referencedDeclaration": 46582, "src": "1468:28:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -4397,7 +4397,7 @@ "arguments": [ { "hexValue": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb", - "id": 51069, + "id": 51066, "isConstant": false, "isLValue": false, "isPure": true, @@ -4418,7 +4418,7 @@ "typeString": "literal_string hex\"000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb\"" } ], - "id": 51068, + "id": 51065, "isConstant": false, "isLValue": false, "isPure": true, @@ -4430,14 +4430,14 @@ "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 51067, + "id": 51064, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1498:5:66", "typeDescriptions": {} } }, - "id": 51070, + "id": 51067, "isConstant": false, "isLValue": false, "isPure": true, @@ -4457,7 +4457,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, { @@ -4466,18 +4466,18 @@ } ], "expression": { - "id": 51062, + "id": 51059, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "1448:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51063, + "id": 51060, "isConstant": false, "isLValue": false, "isPure": false, @@ -4485,14 +4485,14 @@ "memberLocation": "1457:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1448:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Constraint_$46591_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, - "id": 51071, + "id": 51068, "isConstant": false, "isLValue": false, "isPure": true, @@ -4504,79 +4504,79 @@ "src": "1448:319:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "1430:337:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, - "id": 51073, + "id": 51070, "nodeType": "ExpressionStatement", "src": "1430:337:66" }, { "assignments": [ - 51079 + 51076 ], "declarations": [ { "constant": false, - "id": 51079, + "id": 51076, "mutability": "mutable", "name": "constraints3", "nameLocation": "1806:12:66", "nodeType": "VariableDeclaration", - "scope": 51170, + "scope": 51167, "src": "1777:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { - "id": 51077, + "id": 51074, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51076, + "id": 51073, "name": "OrderLib.Constraint", "nameLocations": [ "1777:8:66", "1786:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1777:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1777:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51078, + "id": 51075, "nodeType": "ArrayTypeName", "src": "1777:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], - "id": 51086, + "id": 51083, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51084, + "id": 51081, "isConstant": false, "isLValue": false, "isPure": true, @@ -4598,7 +4598,7 @@ "typeString": "int_const 1" } ], - "id": 51083, + "id": 51080, "isConstant": false, "isLValue": false, "isPure": true, @@ -4606,41 +4606,41 @@ "nodeType": "NewExpression", "src": "1821:25:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { - "id": 51081, + "id": 51078, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51080, + "id": 51077, "name": "OrderLib.Constraint", "nameLocations": [ "1825:8:66", "1834:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1825:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1825:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51082, + "id": 51079, "nodeType": "ArrayTypeName", "src": "1825:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, - "id": 51085, + "id": 51082, "isConstant": false, "isLValue": false, "isPure": true, @@ -4652,7 +4652,7 @@ "src": "1821:28:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, @@ -4661,28 +4661,28 @@ }, { "expression": { - "id": 51100, + "id": 51097, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51087, + "id": 51084, "name": "constraints3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51079, + "referencedDeclaration": 51076, "src": "1859:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, - "id": 51089, + "id": 51086, "indexExpression": { "hexValue": "30", - "id": 51088, + "id": 51085, "isConstant": false, "isLValue": false, "isPure": true, @@ -4703,7 +4703,7 @@ "nodeType": "IndexAccess", "src": "1859:15:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, @@ -4714,18 +4714,18 @@ { "expression": { "expression": { - "id": 51092, + "id": 51089, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "1897:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51093, + "id": 51090, "isConstant": false, "isLValue": false, "isPure": false, @@ -4733,14 +4733,14 @@ "memberLocation": "1906:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "1897:23:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 51094, + "id": 51091, "isConstant": false, "isLValue": false, "isPure": true, @@ -4748,10 +4748,10 @@ "memberLocation": "1921:4:66", "memberName": "Time", "nodeType": "MemberAccess", - "referencedDeclaration": 46585, + "referencedDeclaration": 46582, "src": "1897:28:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -4759,7 +4759,7 @@ "arguments": [ { "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef6", - "id": 51097, + "id": 51094, "isConstant": false, "isLValue": false, "isPure": true, @@ -4780,7 +4780,7 @@ "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef6\"" } ], - "id": 51096, + "id": 51093, "isConstant": false, "isLValue": false, "isPure": true, @@ -4792,14 +4792,14 @@ "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 51095, + "id": 51092, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1927:5:66", "typeDescriptions": {} } }, - "id": 51098, + "id": 51095, "isConstant": false, "isLValue": false, "isPure": true, @@ -4819,7 +4819,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, { @@ -4828,18 +4828,18 @@ } ], "expression": { - "id": 51090, + "id": 51087, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "1877:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51091, + "id": 51088, "isConstant": false, "isLValue": false, "isPure": false, @@ -4847,14 +4847,14 @@ "memberLocation": "1886:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "1877:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Constraint_$46591_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, - "id": 51099, + "id": 51096, "isConstant": false, "isLValue": false, "isPure": true, @@ -4866,44 +4866,44 @@ "src": "1877:319:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "1859:337:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, - "id": 51101, + "id": 51098, "nodeType": "ExpressionStatement", "src": "1859:337:66" }, { "expression": { - "id": 51110, + "id": 51107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51102, + "id": 51099, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51010, + "referencedDeclaration": 51007, "src": "2206:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, - "id": 51104, + "id": 51101, "indexExpression": { "hexValue": "30", - "id": 51103, + "id": 51100, "isConstant": false, "isLValue": false, "isPure": true, @@ -4924,7 +4924,7 @@ "nodeType": "IndexAccess", "src": "2206:11:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, @@ -4934,7 +4934,7 @@ "arguments": [ { "hexValue": "3231383435", - "id": 51107, + "id": 51104, "isConstant": false, "isLValue": false, "isPure": true, @@ -4949,14 +4949,14 @@ "value": "21845" }, { - "id": 51108, + "id": 51105, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51023, + "referencedDeclaration": 51020, "src": "2243:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } @@ -4968,23 +4968,23 @@ "typeString": "int_const 21845" }, { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { - "id": 51105, + "id": 51102, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "2220:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51106, + "id": 51103, "isConstant": false, "isLValue": false, "isPure": false, @@ -4992,14 +4992,14 @@ "memberLocation": "2229:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "2220:16:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Tranche_$46635_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, - "id": 51109, + "id": 51106, "isConstant": false, "isLValue": false, "isPure": false, @@ -5011,44 +5011,44 @@ "src": "2220:36:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "2206:50:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 51111, + "id": 51108, "nodeType": "ExpressionStatement", "src": "2206:50:66" }, { "expression": { - "id": 51120, + "id": 51117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51112, + "id": 51109, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51010, + "referencedDeclaration": 51007, "src": "2266:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, - "id": 51114, + "id": 51111, "indexExpression": { "hexValue": "31", - "id": 51113, + "id": 51110, "isConstant": false, "isLValue": false, "isPure": true, @@ -5069,7 +5069,7 @@ "nodeType": "IndexAccess", "src": "2266:11:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, @@ -5079,7 +5079,7 @@ "arguments": [ { "hexValue": "3231383435", - "id": 51117, + "id": 51114, "isConstant": false, "isLValue": false, "isPure": true, @@ -5094,14 +5094,14 @@ "value": "21845" }, { - "id": 51118, + "id": 51115, "name": "constraints2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51051, + "referencedDeclaration": 51048, "src": "2303:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } @@ -5113,23 +5113,23 @@ "typeString": "int_const 21845" }, { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { - "id": 51115, + "id": 51112, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "2280:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51116, + "id": 51113, "isConstant": false, "isLValue": false, "isPure": false, @@ -5137,14 +5137,14 @@ "memberLocation": "2289:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "2280:16:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Tranche_$46635_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, - "id": 51119, + "id": 51116, "isConstant": false, "isLValue": false, "isPure": false, @@ -5156,44 +5156,44 @@ "src": "2280:36:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "2266:50:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 51121, + "id": 51118, "nodeType": "ExpressionStatement", "src": "2266:50:66" }, { "expression": { - "id": 51130, + "id": 51127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51122, + "id": 51119, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51010, + "referencedDeclaration": 51007, "src": "2326:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, - "id": 51124, + "id": 51121, "indexExpression": { "hexValue": "32", - "id": 51123, + "id": 51120, "isConstant": false, "isLValue": false, "isPure": true, @@ -5214,7 +5214,7 @@ "nodeType": "IndexAccess", "src": "2326:11:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, @@ -5224,7 +5224,7 @@ "arguments": [ { "hexValue": "3231383435", - "id": 51127, + "id": 51124, "isConstant": false, "isLValue": false, "isPure": true, @@ -5239,14 +5239,14 @@ "value": "21845" }, { - "id": 51128, + "id": 51125, "name": "constraints3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51079, + "referencedDeclaration": 51076, "src": "2363:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } @@ -5258,23 +5258,23 @@ "typeString": "int_const 21845" }, { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { - "id": 51125, + "id": 51122, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "2340:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51126, + "id": 51123, "isConstant": false, "isLValue": false, "isPure": false, @@ -5282,14 +5282,14 @@ "memberLocation": "2349:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "2340:16:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Tranche_$46635_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, - "id": 51129, + "id": 51126, "isConstant": false, "isLValue": false, "isPure": false, @@ -5301,70 +5301,70 @@ "src": "2340:36:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "2326:50:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 51131, + "id": 51128, "nodeType": "ExpressionStatement", "src": "2326:50:66" }, { "assignments": [ - 51136 + 51133 ], "declarations": [ { "constant": false, - "id": 51136, + "id": 51133, "mutability": "mutable", "name": "order", "nameLocation": "2412:5:66", "nodeType": "VariableDeclaration", - "scope": 51170, + "scope": 51167, "src": "2386:31:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 51135, + "id": 51132, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51134, + "id": 51131, "name": "OrderLib.SwapOrder", "nameLocations": [ "2386:8:66", "2395:9:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "2386:18:66" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "2386:18:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], - "id": 51154, + "id": 51151, "initialValue": { "arguments": [ { "hexValue": "307846643038366243374344354334383144434339433835656245343738413143306236394643626239", - "id": 51139, + "id": 51136, "isConstant": false, "isLValue": false, "isPure": true, @@ -5380,7 +5380,7 @@ }, { "hexValue": "307838326146343934343744386130376533626439354244306435366633353234313532336642616231", - "id": 51140, + "id": 51137, "isConstant": false, "isLValue": false, "isPure": true, @@ -5399,18 +5399,18 @@ { "expression": { "expression": { - "id": 51143, + "id": 51140, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "2568:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51144, + "id": 51141, "isConstant": false, "isLValue": false, "isPure": false, @@ -5418,14 +5418,14 @@ "memberLocation": "2577:8:66", "memberName": "Exchange", "nodeType": "MemberAccess", - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "2568:17:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", + "typeIdentifier": "t_type$_t_enum$_Exchange_$46534_$", "typeString": "type(enum OrderLib.Exchange)" } }, - "id": 51145, + "id": 51142, "isConstant": false, "isLValue": false, "isPure": true, @@ -5433,16 +5433,16 @@ "memberLocation": "2586:9:66", "memberName": "UniswapV3", "nodeType": "MemberAccess", - "referencedDeclaration": 46536, + "referencedDeclaration": 46533, "src": "2568:27:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, { "hexValue": "353030", - "id": 51146, + "id": 51143, "isConstant": false, "isLValue": false, "isPure": true, @@ -5460,7 +5460,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, { @@ -5469,18 +5469,18 @@ } ], "expression": { - "id": 51141, + "id": 51138, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "2553:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51142, + "id": 51139, "isConstant": false, "isLValue": false, "isPure": false, @@ -5488,14 +5488,14 @@ "memberLocation": "2562:5:66", "memberName": "Route", "nodeType": "MemberAccess", - "referencedDeclaration": 46543, + "referencedDeclaration": 46540, "src": "2553:14:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Route_$46540_storage_ptr_$", "typeString": "type(struct OrderLib.Route storage pointer)" } }, - "id": 51147, + "id": 51144, "isConstant": false, "isLValue": false, "isPure": true, @@ -5507,13 +5507,13 @@ "src": "2553:48:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, { "hexValue": "313030303030303030303030303030303030303030", - "id": 51148, + "id": 51145, "isConstant": false, "isLValue": false, "isPure": true, @@ -5529,7 +5529,7 @@ }, { "hexValue": "74727565", - "id": 51149, + "id": 51146, "isConstant": false, "isLValue": false, "isPure": true, @@ -5545,7 +5545,7 @@ }, { "hexValue": "66616c7365", - "id": 51150, + "id": 51147, "isConstant": false, "isLValue": false, "isPure": true, @@ -5561,7 +5561,7 @@ }, { "hexValue": "3138343436373434303733373039353531363135", - "id": 51151, + "id": 51148, "isConstant": false, "isLValue": false, "isPure": true, @@ -5576,14 +5576,14 @@ "value": "18446744073709551615" }, { - "id": 51152, + "id": 51149, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51010, + "referencedDeclaration": 51007, "src": "2673:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } } @@ -5599,7 +5599,7 @@ "typeString": "address" }, { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" }, { @@ -5619,23 +5619,23 @@ "typeString": "int_const 18446744073709551615" }, { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } ], "expression": { - "id": 51137, + "id": 51134, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "2421:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51138, + "id": 51135, "isConstant": false, "isLValue": false, "isPure": false, @@ -5643,14 +5643,14 @@ "memberLocation": "2430:9:66", "memberName": "SwapOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "2421:18:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46560_storage_ptr_$", "typeString": "type(struct OrderLib.SwapOrder storage pointer)" } }, - "id": 51153, + "id": 51150, "isConstant": false, "isLValue": false, "isPure": false, @@ -5662,7 +5662,7 @@ "src": "2421:270:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, @@ -5675,14 +5675,14 @@ { "arguments": [ { - "id": 51160, + "id": 51157, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51136, + "referencedDeclaration": 51133, "src": "2730:5:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } @@ -5690,12 +5690,12 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { - "id": 51158, + "id": 51155, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5706,7 +5706,7 @@ "typeString": "abi" } }, - "id": 51159, + "id": 51156, "isConstant": false, "isLValue": false, "isPure": true, @@ -5720,7 +5720,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 51161, + "id": 51158, "isConstant": false, "isLValue": false, "isPure": false, @@ -5745,7 +5745,7 @@ } ], "expression": { - "id": 51155, + "id": 51152, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5756,7 +5756,7 @@ "typeString": "type(library console2)" } }, - "id": 51157, + "id": 51154, "isConstant": false, "isLValue": false, "isPure": false, @@ -5771,7 +5771,7 @@ "typeString": "function (bytes memory) pure" } }, - "id": 51162, + "id": 51159, "isConstant": false, "isLValue": false, "isPure": false, @@ -5787,7 +5787,7 @@ "typeString": "tuple()" } }, - "id": 51163, + "id": 51160, "nodeType": "ExpressionStatement", "src": "2701:36:66" }, @@ -5795,14 +5795,14 @@ "expression": { "arguments": [ { - "id": 51167, + "id": 51164, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51136, + "referencedDeclaration": 51133, "src": "2764:5:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } @@ -5810,23 +5810,23 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { - "id": 51164, + "id": 51161, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "2747:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51166, + "id": 51163, "isConstant": false, "isLValue": false, "isPure": false, @@ -5834,14 +5834,14 @@ "memberLocation": "2753:10:66", "memberName": "placeOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 49089, + "referencedDeclaration": 49086, "src": "2747:16:66", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46560_memory_ptr_$returns$__$", "typeString": "function (struct OrderLib.SwapOrder memory) external" } }, - "id": 51168, + "id": 51165, "isConstant": false, "isLValue": false, "isPure": false, @@ -5857,7 +5857,7 @@ "typeString": "tuple()" } }, - "id": 51169, + "id": 51166, "nodeType": "ExpressionStatement", "src": "2747:23:66" } @@ -5870,92 +5870,92 @@ "name": "testPlaceOrder", "nameLocation": "813:14:66", "parameters": { - "id": 51003, + "id": 51000, "nodeType": "ParameterList", "parameters": [], "src": "827:2:66" }, "returnParameters": { - "id": 51004, + "id": 51001, "nodeType": "ParameterList", "parameters": [], "src": "837:0:66" }, - "scope": 51705, + "scope": 51702, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 51326, + "id": 51323, "nodeType": "FunctionDefinition", "src": "2783:1272:66", "nodes": [], "body": { - "id": 51325, + "id": 51322, "nodeType": "Block", "src": "2829:1226:66", "nodes": [], "statements": [ { "assignments": [ - 51179 + 51176 ], "declarations": [ { "constant": false, - "id": 51179, + "id": 51176, "mutability": "mutable", "name": "tranches", "nameLocation": "2865:8:66", "nodeType": "VariableDeclaration", - "scope": 51325, + "scope": 51322, "src": "2839:34:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { - "id": 51177, + "id": 51174, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51176, + "id": 51173, "name": "OrderLib.Tranche", "nameLocations": [ "2839:8:66", "2848:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "2839:16:66" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "2839:16:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 51178, + "id": 51175, "nodeType": "ArrayTypeName", "src": "2839:18:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, "visibility": "internal" } ], - "id": 51186, + "id": 51183, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51184, + "id": 51181, "isConstant": false, "isLValue": false, "isPure": true, @@ -5977,7 +5977,7 @@ "typeString": "int_const 1" } ], - "id": 51183, + "id": 51180, "isConstant": false, "isLValue": false, "isPure": true, @@ -5985,41 +5985,41 @@ "nodeType": "NewExpression", "src": "2876:22:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)" }, "typeName": { "baseType": { - "id": 51181, + "id": 51178, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51180, + "id": 51177, "name": "OrderLib.Tranche", "nameLocations": [ "2880:8:66", "2889:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "2880:16:66" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "2880:16:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 51182, + "id": 51179, "nodeType": "ArrayTypeName", "src": "2880:18:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } } }, - "id": 51185, + "id": 51182, "isConstant": false, "isLValue": false, "isPure": true, @@ -6031,7 +6031,7 @@ "src": "2876:25:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, @@ -6040,63 +6040,63 @@ }, { "assignments": [ - 51192 + 51189 ], "declarations": [ { "constant": false, - "id": 51192, + "id": 51189, "mutability": "mutable", "name": "constraints1", "nameLocation": "2940:12:66", "nodeType": "VariableDeclaration", - "scope": 51325, + "scope": 51322, "src": "2911:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { - "id": 51190, + "id": 51187, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51189, + "id": 51186, "name": "OrderLib.Constraint", "nameLocations": [ "2911:8:66", "2920:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "2911:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "2911:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51191, + "id": 51188, "nodeType": "ArrayTypeName", "src": "2911:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], - "id": 51199, + "id": 51196, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51197, + "id": 51194, "isConstant": false, "isLValue": false, "isPure": true, @@ -6118,7 +6118,7 @@ "typeString": "int_const 1" } ], - "id": 51196, + "id": 51193, "isConstant": false, "isLValue": false, "isPure": true, @@ -6126,41 +6126,41 @@ "nodeType": "NewExpression", "src": "2955:25:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { - "id": 51194, + "id": 51191, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51193, + "id": 51190, "name": "OrderLib.Constraint", "nameLocations": [ "2959:8:66", "2968:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "2959:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "2959:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51195, + "id": 51192, "nodeType": "ArrayTypeName", "src": "2959:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, - "id": 51198, + "id": 51195, "isConstant": false, "isLValue": false, "isPure": true, @@ -6172,7 +6172,7 @@ "src": "2955:28:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, @@ -6181,28 +6181,28 @@ }, { "expression": { - "id": 51213, + "id": 51210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51200, + "id": 51197, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51192, + "referencedDeclaration": 51189, "src": "2993:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, - "id": 51202, + "id": 51199, "indexExpression": { "hexValue": "30", - "id": 51201, + "id": 51198, "isConstant": false, "isLValue": false, "isPure": true, @@ -6223,7 +6223,7 @@ "nodeType": "IndexAccess", "src": "2993:15:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, @@ -6234,18 +6234,18 @@ { "expression": { "expression": { - "id": 51205, + "id": 51202, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3031:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51206, + "id": 51203, "isConstant": false, "isLValue": false, "isPure": false, @@ -6253,14 +6253,14 @@ "memberLocation": "3040:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "3031:23:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 51207, + "id": 51204, "isConstant": false, "isLValue": false, "isPure": true, @@ -6268,10 +6268,10 @@ "memberLocation": "3055:4:66", "memberName": "Time", "nodeType": "MemberAccess", - "referencedDeclaration": 46585, + "referencedDeclaration": 46582, "src": "3031:28:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -6279,7 +6279,7 @@ "arguments": [ { "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500", - "id": 51210, + "id": 51207, "isConstant": false, "isLValue": false, "isPure": true, @@ -6301,7 +6301,7 @@ "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" } ], - "id": 51209, + "id": 51206, "isConstant": false, "isLValue": false, "isPure": true, @@ -6313,14 +6313,14 @@ "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 51208, + "id": 51205, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3061:5:66", "typeDescriptions": {} } }, - "id": 51211, + "id": 51208, "isConstant": false, "isLValue": false, "isPure": true, @@ -6340,7 +6340,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, { @@ -6349,18 +6349,18 @@ } ], "expression": { - "id": 51203, + "id": 51200, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3011:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51204, + "id": 51201, "isConstant": false, "isLValue": false, "isPure": false, @@ -6368,14 +6368,14 @@ "memberLocation": "3020:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "3011:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Constraint_$46591_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, - "id": 51212, + "id": 51209, "isConstant": false, "isLValue": false, "isPure": true, @@ -6387,44 +6387,44 @@ "src": "3011:319:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "2993:337:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, - "id": 51214, + "id": 51211, "nodeType": "ExpressionStatement", "src": "2993:337:66" }, { "expression": { - "id": 51227, + "id": 51224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51215, + "id": 51212, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51179, + "referencedDeclaration": 51176, "src": "3340:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, - "id": 51217, + "id": 51214, "indexExpression": { "hexValue": "30", - "id": 51216, + "id": 51213, "isConstant": false, "isLValue": false, "isPure": true, @@ -6445,7 +6445,7 @@ "nodeType": "IndexAccess", "src": "3340:11:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, @@ -6457,7 +6457,7 @@ "expression": { "arguments": [ { - "id": 51222, + "id": 51219, "isConstant": false, "isLValue": false, "isPure": true, @@ -6469,7 +6469,7 @@ "typeString": "type(uint16)" }, "typeName": { - "id": 51221, + "id": 51218, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "3376:6:66", @@ -6484,7 +6484,7 @@ "typeString": "type(uint16)" } ], - "id": 51220, + "id": 51217, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6495,7 +6495,7 @@ "typeString": "function () pure" } }, - "id": 51223, + "id": 51220, "isConstant": false, "isLValue": false, "isPure": true, @@ -6511,7 +6511,7 @@ "typeString": "type(uint16)" } }, - "id": 51224, + "id": 51221, "isConstant": false, "isLValue": false, "isPure": true, @@ -6526,14 +6526,14 @@ } }, { - "id": 51225, + "id": 51222, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51192, + "referencedDeclaration": 51189, "src": "3388:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } @@ -6545,23 +6545,23 @@ "typeString": "uint16" }, { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { - "id": 51218, + "id": 51215, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3354:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51219, + "id": 51216, "isConstant": false, "isLValue": false, "isPure": false, @@ -6569,14 +6569,14 @@ "memberLocation": "3363:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "3354:16:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Tranche_$46635_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, - "id": 51226, + "id": 51223, "isConstant": false, "isLValue": false, "isPure": false, @@ -6588,33 +6588,33 @@ "src": "3354:47:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "3340:61:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 51228, + "id": 51225, "nodeType": "ExpressionStatement", "src": "3340:61:66" }, { "assignments": [ - 51230 + 51227 ], "declarations": [ { "constant": false, - "id": 51230, + "id": 51227, "mutability": "mutable", "name": "amount", "nameLocation": "3419:6:66", "nodeType": "VariableDeclaration", - "scope": 51325, + "scope": 51322, "src": "3411:14:66", "stateVariable": false, "storageLocation": "default", @@ -6623,7 +6623,7 @@ "typeString": "uint256" }, "typeName": { - "id": 51229, + "id": 51226, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3411:7:66", @@ -6635,13 +6635,13 @@ "visibility": "internal" } ], - "id": 51240, + "id": 51237, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51239, + "id": 51236, "isConstant": false, "isLValue": false, "isPure": false, @@ -6651,14 +6651,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51237, + "id": 51234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "33", - "id": 51231, + "id": 51228, "isConstant": false, "isLValue": false, "isPure": true, @@ -6679,14 +6679,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51236, + "id": 51233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 51232, + "id": 51229, "isConstant": false, "isLValue": false, "isPure": true, @@ -6707,18 +6707,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 51233, + "id": 51230, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "3434:3:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 51234, + "id": 51231, "isConstant": false, "isLValue": false, "isPure": false, @@ -6726,14 +6726,14 @@ "memberLocation": "3438:8:66", "memberName": "decimals", "nodeType": "MemberAccess", - "referencedDeclaration": 46464, + "referencedDeclaration": 46461, "src": "3434:12:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 51235, + "id": 51232, "isConstant": false, "isLValue": false, "isPure": false, @@ -6765,7 +6765,7 @@ "operator": "/", "rightExpression": { "hexValue": "3130", - "id": 51238, + "id": 51235, "isConstant": false, "isLValue": false, "isPure": true, @@ -6794,14 +6794,14 @@ { "arguments": [ { - "id": 51246, + "id": 51243, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "3492:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -6809,11 +6809,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 51245, + "id": 51242, "isConstant": false, "isLValue": false, "isPure": true, @@ -6825,14 +6825,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51244, + "id": 51241, "name": "address", "nodeType": "ElementaryTypeName", "src": "3484:7:66", "typeDescriptions": {} } }, - "id": 51247, + "id": 51244, "isConstant": false, "isLValue": false, "isPure": false, @@ -6849,11 +6849,11 @@ } }, { - "id": 51248, + "id": 51245, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51230, + "referencedDeclaration": 51227, "src": "3500:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6873,18 +6873,18 @@ } ], "expression": { - "id": 51241, + "id": 51238, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "3474:4:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 51243, + "id": 51240, "isConstant": false, "isLValue": false, "isPure": false, @@ -6892,14 +6892,14 @@ "memberLocation": "3479:4:66", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "3474:9:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 51249, + "id": 51246, "isConstant": false, "isLValue": false, "isPure": false, @@ -6915,68 +6915,68 @@ "typeString": "tuple()" } }, - "id": 51250, + "id": 51247, "nodeType": "ExpressionStatement", "src": "3474:33:66" }, { "assignments": [ - 51255 + 51252 ], "declarations": [ { "constant": false, - "id": 51255, + "id": 51252, "mutability": "mutable", "name": "order", "nameLocation": "3566:5:66", "nodeType": "VariableDeclaration", - "scope": 51325, + "scope": 51322, "src": "3540:31:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 51254, + "id": 51251, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51253, + "id": 51250, "name": "OrderLib.SwapOrder", "nameLocations": [ "3540:8:66", "3549:9:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3540:18:66" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3540:18:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], - "id": 51280, + "id": 51277, "initialValue": { "arguments": [ { "arguments": [ { - "id": 51260, + "id": 51257, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "3615:4:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -6984,11 +6984,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 51259, + "id": 51256, "isConstant": false, "isLValue": false, "isPure": true, @@ -7000,14 +7000,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51258, + "id": 51255, "name": "address", "nodeType": "ElementaryTypeName", "src": "3607:7:66", "typeDescriptions": {} } }, - "id": 51261, + "id": 51258, "isConstant": false, "isLValue": false, "isPure": false, @@ -7026,14 +7026,14 @@ { "arguments": [ { - "id": 51264, + "id": 51261, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "3630:3:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -7041,11 +7041,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 51263, + "id": 51260, "isConstant": false, "isLValue": false, "isPure": true, @@ -7057,14 +7057,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51262, + "id": 51259, "name": "address", "nodeType": "ElementaryTypeName", "src": "3622:7:66", "typeDescriptions": {} } }, - "id": 51265, + "id": 51262, "isConstant": false, "isLValue": false, "isPure": false, @@ -7085,18 +7085,18 @@ { "expression": { "expression": { - "id": 51268, + "id": 51265, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3684:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51269, + "id": 51266, "isConstant": false, "isLValue": false, "isPure": false, @@ -7104,14 +7104,14 @@ "memberLocation": "3693:8:66", "memberName": "Exchange", "nodeType": "MemberAccess", - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "3684:17:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", + "typeIdentifier": "t_type$_t_enum$_Exchange_$46534_$", "typeString": "type(enum OrderLib.Exchange)" } }, - "id": 51270, + "id": 51267, "isConstant": false, "isLValue": false, "isPure": true, @@ -7119,16 +7119,16 @@ "memberLocation": "3702:9:66", "memberName": "UniswapV3", "nodeType": "MemberAccess", - "referencedDeclaration": 46536, + "referencedDeclaration": 46533, "src": "3684:27:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, { "hexValue": "353030", - "id": 51271, + "id": 51268, "isConstant": false, "isLValue": false, "isPure": true, @@ -7146,7 +7146,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, { @@ -7155,18 +7155,18 @@ } ], "expression": { - "id": 51266, + "id": 51263, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3669:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51267, + "id": 51264, "isConstant": false, "isLValue": false, "isPure": false, @@ -7174,14 +7174,14 @@ "memberLocation": "3678:5:66", "memberName": "Route", "nodeType": "MemberAccess", - "referencedDeclaration": 46543, + "referencedDeclaration": 46540, "src": "3669:14:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Route_$46540_storage_ptr_$", "typeString": "type(struct OrderLib.Route storage pointer)" } }, - "id": 51272, + "id": 51269, "isConstant": false, "isLValue": false, "isPure": true, @@ -7193,16 +7193,16 @@ "src": "3669:48:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, { - "id": 51273, + "id": 51270, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51230, + "referencedDeclaration": 51227, "src": "3719:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7211,7 +7211,7 @@ }, { "hexValue": "66616c7365", - "id": 51274, + "id": 51271, "isConstant": false, "isLValue": false, "isPure": true, @@ -7227,7 +7227,7 @@ }, { "hexValue": "66616c7365", - "id": 51275, + "id": 51272, "isConstant": false, "isLValue": false, "isPure": true, @@ -7243,18 +7243,18 @@ }, { "expression": { - "id": 51276, + "id": 51273, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3753:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51277, + "id": 51274, "isConstant": false, "isLValue": false, "isPure": true, @@ -7262,7 +7262,7 @@ "memberLocation": "3762:8:66", "memberName": "NO_CHAIN", "nodeType": "MemberAccess", - "referencedDeclaration": 46491, + "referencedDeclaration": 46488, "src": "3753:17:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -7270,14 +7270,14 @@ } }, { - "id": 51278, + "id": 51275, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51179, + "referencedDeclaration": 51176, "src": "3772:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } } @@ -7293,7 +7293,7 @@ "typeString": "address" }, { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" }, { @@ -7313,23 +7313,23 @@ "typeString": "uint64" }, { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } ], "expression": { - "id": 51256, + "id": 51253, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3575:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51257, + "id": 51254, "isConstant": false, "isLValue": false, "isPure": false, @@ -7337,14 +7337,14 @@ "memberLocation": "3584:9:66", "memberName": "SwapOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "3575:18:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46560_storage_ptr_$", "typeString": "type(struct OrderLib.SwapOrder storage pointer)" } }, - "id": 51279, + "id": 51276, "isConstant": false, "isLValue": false, "isPure": false, @@ -7356,7 +7356,7 @@ "src": "3575:215:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, @@ -7365,17 +7365,17 @@ }, { "assignments": [ - 51282 + 51279 ], "declarations": [ { "constant": false, - "id": 51282, + "id": 51279, "mutability": "mutable", "name": "orderIndex", "nameLocation": "3807:10:66", "nodeType": "VariableDeclaration", - "scope": 51325, + "scope": 51322, "src": "3800:17:66", "stateVariable": false, "storageLocation": "default", @@ -7384,7 +7384,7 @@ "typeString": "uint64" }, "typeName": { - "id": 51281, + "id": 51278, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3800:6:66", @@ -7396,24 +7396,24 @@ "visibility": "internal" } ], - "id": 51286, + "id": 51283, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 51283, + "id": 51280, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "3820:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51284, + "id": 51281, "isConstant": false, "isLValue": false, "isPure": false, @@ -7421,14 +7421,14 @@ "memberLocation": "3826:13:66", "memberName": "numSwapOrders", "nodeType": "MemberAccess", - "referencedDeclaration": 49068, + "referencedDeclaration": 49065, "src": "3820:19:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$", "typeString": "function () view external returns (uint64)" } }, - "id": 51285, + "id": 51282, "isConstant": false, "isLValue": false, "isPure": false, @@ -7451,14 +7451,14 @@ "expression": { "arguments": [ { - "id": 51290, + "id": 51287, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51255, + "referencedDeclaration": 51252, "src": "3868:5:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } @@ -7466,23 +7466,23 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { - "id": 51287, + "id": 51284, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "3851:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51289, + "id": 51286, "isConstant": false, "isLValue": false, "isPure": false, @@ -7490,14 +7490,14 @@ "memberLocation": "3857:10:66", "memberName": "placeOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 49089, + "referencedDeclaration": 49086, "src": "3851:16:66", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46560_memory_ptr_$returns$__$", "typeString": "function (struct OrderLib.SwapOrder memory) external" } }, - "id": 51291, + "id": 51288, "isConstant": false, "isLValue": false, "isPure": false, @@ -7513,7 +7513,7 @@ "typeString": "tuple()" } }, - "id": 51292, + "id": 51289, "nodeType": "ExpressionStatement", "src": "3851:23:66" }, @@ -7522,7 +7522,7 @@ "arguments": [ { "hexValue": "706c61636564206f72646572", - "id": 51296, + "id": 51293, "isConstant": false, "isLValue": false, "isPure": true, @@ -7545,7 +7545,7 @@ } ], "expression": { - "id": 51293, + "id": 51290, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7556,7 +7556,7 @@ "typeString": "type(library console2)" } }, - "id": 51295, + "id": 51292, "isConstant": false, "isLValue": false, "isPure": false, @@ -7571,7 +7571,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51297, + "id": 51294, "isConstant": false, "isLValue": false, "isPure": false, @@ -7587,7 +7587,7 @@ "typeString": "tuple()" } }, - "id": 51298, + "id": 51295, "nodeType": "ExpressionStatement", "src": "3884:28:66" }, @@ -7597,11 +7597,11 @@ { "arguments": [ { - "id": 51304, + "id": 51301, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51282, + "referencedDeclaration": 51279, "src": "3940:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -7616,7 +7616,7 @@ "typeString": "uint64" } ], - "id": 51303, + "id": 51300, "isConstant": false, "isLValue": false, "isPure": true, @@ -7628,14 +7628,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 51302, + "id": 51299, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3935:4:66", "typeDescriptions": {} } }, - "id": 51305, + "id": 51302, "isConstant": false, "isLValue": false, "isPure": false, @@ -7660,7 +7660,7 @@ } ], "expression": { - "id": 51299, + "id": 51296, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7671,7 +7671,7 @@ "typeString": "type(library console2)" } }, - "id": 51301, + "id": 51298, "isConstant": false, "isLValue": false, "isPure": false, @@ -7686,7 +7686,7 @@ "typeString": "function (uint256) pure" } }, - "id": 51306, + "id": 51303, "isConstant": false, "isLValue": false, "isPure": false, @@ -7702,7 +7702,7 @@ "typeString": "tuple()" } }, - "id": 51307, + "id": 51304, "nodeType": "ExpressionStatement", "src": "3922:30:66" }, @@ -7710,11 +7710,11 @@ "expression": { "arguments": [ { - "id": 51311, + "id": 51308, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51282, + "referencedDeclaration": 51279, "src": "3976:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -7723,7 +7723,7 @@ }, { "hexValue": "30", - "id": 51312, + "id": 51309, "isConstant": false, "isLValue": false, "isPure": true, @@ -7741,7 +7741,7 @@ "arguments": [ { "hexValue": "30", - "id": 51315, + "id": 51312, "isConstant": false, "isLValue": false, "isPure": true, @@ -7764,18 +7764,18 @@ } ], "expression": { - "id": 51313, + "id": 51310, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "3991:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51314, + "id": 51311, "isConstant": false, "isLValue": false, "isPure": false, @@ -7783,14 +7783,14 @@ "memberLocation": "4000:10:66", "memberName": "PriceProof", "nodeType": "MemberAccess", - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "3991:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_PriceProof_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.PriceProof storage pointer)" } }, - "id": 51316, + "id": 51313, "isConstant": false, "isLValue": false, "isPure": true, @@ -7802,7 +7802,7 @@ "src": "3991:22:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } @@ -7818,23 +7818,23 @@ "typeString": "int_const 0" }, { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { - "id": 51308, + "id": 51305, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "3962:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51310, + "id": 51307, "isConstant": false, "isLValue": false, "isPure": false, @@ -7842,14 +7842,14 @@ "memberLocation": "3968:7:66", "memberName": "execute", "nodeType": "MemberAccess", - "referencedDeclaration": 49143, + "referencedDeclaration": 49140, "src": "3962:13:66", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46638_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, - "id": 51317, + "id": 51314, "isConstant": false, "isLValue": false, "isPure": false, @@ -7865,7 +7865,7 @@ "typeString": "tuple()" } }, - "id": 51318, + "id": 51315, "nodeType": "ExpressionStatement", "src": "3962:52:66" }, @@ -7874,7 +7874,7 @@ "arguments": [ { "hexValue": "6578656375746564", - "id": 51322, + "id": 51319, "isConstant": false, "isLValue": false, "isPure": true, @@ -7897,7 +7897,7 @@ } ], "expression": { - "id": 51319, + "id": 51316, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7908,7 +7908,7 @@ "typeString": "type(library console2)" } }, - "id": 51321, + "id": 51318, "isConstant": false, "isLValue": false, "isPure": false, @@ -7923,7 +7923,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51323, + "id": 51320, "isConstant": false, "isLValue": false, "isPure": false, @@ -7939,7 +7939,7 @@ "typeString": "tuple()" } }, - "id": 51324, + "id": 51321, "nodeType": "ExpressionStatement", "src": "4024:24:66" } @@ -7952,92 +7952,92 @@ "name": "testExecuteOrderExactOutput", "nameLocation": "2792:27:66", "parameters": { - "id": 51172, + "id": 51169, "nodeType": "ParameterList", "parameters": [], "src": "2819:2:66" }, "returnParameters": { - "id": 51173, + "id": 51170, "nodeType": "ParameterList", "parameters": [], "src": "2829:0:66" }, - "scope": 51705, + "scope": 51702, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 51481, + "id": 51478, "nodeType": "FunctionDefinition", "src": "4062:1272:66", "nodes": [], "body": { - "id": 51480, + "id": 51477, "nodeType": "Block", "src": "4107:1227:66", "nodes": [], "statements": [ { "assignments": [ - 51334 + 51331 ], "declarations": [ { "constant": false, - "id": 51334, + "id": 51331, "mutability": "mutable", "name": "tranches", "nameLocation": "4143:8:66", "nodeType": "VariableDeclaration", - "scope": 51480, + "scope": 51477, "src": "4117:34:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { - "id": 51332, + "id": 51329, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51331, + "id": 51328, "name": "OrderLib.Tranche", "nameLocations": [ "4117:8:66", "4126:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "4117:16:66" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "4117:16:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 51333, + "id": 51330, "nodeType": "ArrayTypeName", "src": "4117:18:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, "visibility": "internal" } ], - "id": 51341, + "id": 51338, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51339, + "id": 51336, "isConstant": false, "isLValue": false, "isPure": true, @@ -8059,7 +8059,7 @@ "typeString": "int_const 1" } ], - "id": 51338, + "id": 51335, "isConstant": false, "isLValue": false, "isPure": true, @@ -8067,41 +8067,41 @@ "nodeType": "NewExpression", "src": "4154:22:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)" }, "typeName": { "baseType": { - "id": 51336, + "id": 51333, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51335, + "id": 51332, "name": "OrderLib.Tranche", "nameLocations": [ "4158:8:66", "4167:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "4158:16:66" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "4158:16:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 51337, + "id": 51334, "nodeType": "ArrayTypeName", "src": "4158:18:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } } }, - "id": 51340, + "id": 51337, "isConstant": false, "isLValue": false, "isPure": true, @@ -8113,7 +8113,7 @@ "src": "4154:25:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, @@ -8122,63 +8122,63 @@ }, { "assignments": [ - 51347 + 51344 ], "declarations": [ { "constant": false, - "id": 51347, + "id": 51344, "mutability": "mutable", "name": "constraints1", "nameLocation": "4218:12:66", "nodeType": "VariableDeclaration", - "scope": 51480, + "scope": 51477, "src": "4189:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { - "id": 51345, + "id": 51342, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51344, + "id": 51341, "name": "OrderLib.Constraint", "nameLocations": [ "4189:8:66", "4198:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "4189:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "4189:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51346, + "id": 51343, "nodeType": "ArrayTypeName", "src": "4189:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], - "id": 51354, + "id": 51351, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51352, + "id": 51349, "isConstant": false, "isLValue": false, "isPure": true, @@ -8200,7 +8200,7 @@ "typeString": "int_const 1" } ], - "id": 51351, + "id": 51348, "isConstant": false, "isLValue": false, "isPure": true, @@ -8208,41 +8208,41 @@ "nodeType": "NewExpression", "src": "4233:25:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { - "id": 51349, + "id": 51346, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51348, + "id": 51345, "name": "OrderLib.Constraint", "nameLocations": [ "4237:8:66", "4246:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "4237:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "4237:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51350, + "id": 51347, "nodeType": "ArrayTypeName", "src": "4237:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, - "id": 51353, + "id": 51350, "isConstant": false, "isLValue": false, "isPure": true, @@ -8254,7 +8254,7 @@ "src": "4233:28:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, @@ -8263,28 +8263,28 @@ }, { "expression": { - "id": 51368, + "id": 51365, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51355, + "id": 51352, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51347, + "referencedDeclaration": 51344, "src": "4271:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, - "id": 51357, + "id": 51354, "indexExpression": { "hexValue": "30", - "id": 51356, + "id": 51353, "isConstant": false, "isLValue": false, "isPure": true, @@ -8305,7 +8305,7 @@ "nodeType": "IndexAccess", "src": "4271:15:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, @@ -8316,18 +8316,18 @@ { "expression": { "expression": { - "id": 51360, + "id": 51357, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "4309:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51361, + "id": 51358, "isConstant": false, "isLValue": false, "isPure": false, @@ -8335,14 +8335,14 @@ "memberLocation": "4318:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "4309:23:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 51362, + "id": 51359, "isConstant": false, "isLValue": false, "isPure": true, @@ -8350,10 +8350,10 @@ "memberLocation": "4333:4:66", "memberName": "Time", "nodeType": "MemberAccess", - "referencedDeclaration": 46585, + "referencedDeclaration": 46582, "src": "4309:28:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, @@ -8361,7 +8361,7 @@ "arguments": [ { "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500", - "id": 51365, + "id": 51362, "isConstant": false, "isLValue": false, "isPure": true, @@ -8383,7 +8383,7 @@ "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" } ], - "id": 51364, + "id": 51361, "isConstant": false, "isLValue": false, "isPure": true, @@ -8395,14 +8395,14 @@ "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 51363, + "id": 51360, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4339:5:66", "typeDescriptions": {} } }, - "id": 51366, + "id": 51363, "isConstant": false, "isLValue": false, "isPure": true, @@ -8422,7 +8422,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, { @@ -8431,18 +8431,18 @@ } ], "expression": { - "id": 51358, + "id": 51355, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "4289:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51359, + "id": 51356, "isConstant": false, "isLValue": false, "isPure": false, @@ -8450,14 +8450,14 @@ "memberLocation": "4298:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "4289:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Constraint_$46591_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, - "id": 51367, + "id": 51364, "isConstant": false, "isLValue": false, "isPure": true, @@ -8469,44 +8469,44 @@ "src": "4289:319:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "4271:337:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, - "id": 51369, + "id": 51366, "nodeType": "ExpressionStatement", "src": "4271:337:66" }, { "expression": { - "id": 51382, + "id": 51379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51370, + "id": 51367, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51334, + "referencedDeclaration": 51331, "src": "4618:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, - "id": 51372, + "id": 51369, "indexExpression": { "hexValue": "30", - "id": 51371, + "id": 51368, "isConstant": false, "isLValue": false, "isPure": true, @@ -8527,7 +8527,7 @@ "nodeType": "IndexAccess", "src": "4618:11:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, @@ -8539,7 +8539,7 @@ "expression": { "arguments": [ { - "id": 51377, + "id": 51374, "isConstant": false, "isLValue": false, "isPure": true, @@ -8551,7 +8551,7 @@ "typeString": "type(uint16)" }, "typeName": { - "id": 51376, + "id": 51373, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "4654:6:66", @@ -8566,7 +8566,7 @@ "typeString": "type(uint16)" } ], - "id": 51375, + "id": 51372, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8577,7 +8577,7 @@ "typeString": "function () pure" } }, - "id": 51378, + "id": 51375, "isConstant": false, "isLValue": false, "isPure": true, @@ -8593,7 +8593,7 @@ "typeString": "type(uint16)" } }, - "id": 51379, + "id": 51376, "isConstant": false, "isLValue": false, "isPure": true, @@ -8608,14 +8608,14 @@ } }, { - "id": 51380, + "id": 51377, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51347, + "referencedDeclaration": 51344, "src": "4666:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } @@ -8627,23 +8627,23 @@ "typeString": "uint16" }, { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { - "id": 51373, + "id": 51370, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "4632:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51374, + "id": 51371, "isConstant": false, "isLValue": false, "isPure": false, @@ -8651,14 +8651,14 @@ "memberLocation": "4641:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "4632:16:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Tranche_$46635_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, - "id": 51381, + "id": 51378, "isConstant": false, "isLValue": false, "isPure": false, @@ -8670,33 +8670,33 @@ "src": "4632:47:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "4618:61:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 51383, + "id": 51380, "nodeType": "ExpressionStatement", "src": "4618:61:66" }, { "assignments": [ - 51385 + 51382 ], "declarations": [ { "constant": false, - "id": 51385, + "id": 51382, "mutability": "mutable", "name": "amount", "nameLocation": "4697:6:66", "nodeType": "VariableDeclaration", - "scope": 51480, + "scope": 51477, "src": "4689:14:66", "stateVariable": false, "storageLocation": "default", @@ -8705,7 +8705,7 @@ "typeString": "uint256" }, "typeName": { - "id": 51384, + "id": 51381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4689:7:66", @@ -8717,13 +8717,13 @@ "visibility": "internal" } ], - "id": 51395, + "id": 51392, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51394, + "id": 51391, "isConstant": false, "isLValue": false, "isPure": false, @@ -8733,14 +8733,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51392, + "id": 51389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "33", - "id": 51386, + "id": 51383, "isConstant": false, "isLValue": false, "isPure": true, @@ -8761,14 +8761,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51391, + "id": 51388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 51387, + "id": 51384, "isConstant": false, "isLValue": false, "isPure": true, @@ -8789,18 +8789,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 51388, + "id": 51385, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "4712:4:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 51389, + "id": 51386, "isConstant": false, "isLValue": false, "isPure": false, @@ -8808,14 +8808,14 @@ "memberLocation": "4717:8:66", "memberName": "decimals", "nodeType": "MemberAccess", - "referencedDeclaration": 46464, + "referencedDeclaration": 46461, "src": "4712:13:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 51390, + "id": 51387, "isConstant": false, "isLValue": false, "isPure": false, @@ -8847,7 +8847,7 @@ "operator": "/", "rightExpression": { "hexValue": "3130", - "id": 51393, + "id": 51390, "isConstant": false, "isLValue": false, "isPure": true, @@ -8876,14 +8876,14 @@ { "arguments": [ { - "id": 51401, + "id": 51398, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "4772:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -8891,11 +8891,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 51400, + "id": 51397, "isConstant": false, "isLValue": false, "isPure": true, @@ -8907,14 +8907,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51399, + "id": 51396, "name": "address", "nodeType": "ElementaryTypeName", "src": "4764:7:66", "typeDescriptions": {} } }, - "id": 51402, + "id": 51399, "isConstant": false, "isLValue": false, "isPure": false, @@ -8931,11 +8931,11 @@ } }, { - "id": 51403, + "id": 51400, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51385, + "referencedDeclaration": 51382, "src": "4780:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8955,18 +8955,18 @@ } ], "expression": { - "id": 51396, + "id": 51393, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "4754:4:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 51398, + "id": 51395, "isConstant": false, "isLValue": false, "isPure": false, @@ -8974,14 +8974,14 @@ "memberLocation": "4759:4:66", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "4754:9:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 51404, + "id": 51401, "isConstant": false, "isLValue": false, "isPure": false, @@ -8997,68 +8997,68 @@ "typeString": "tuple()" } }, - "id": 51405, + "id": 51402, "nodeType": "ExpressionStatement", "src": "4754:33:66" }, { "assignments": [ - 51410 + 51407 ], "declarations": [ { "constant": false, - "id": 51410, + "id": 51407, "mutability": "mutable", "name": "order", "nameLocation": "4846:5:66", "nodeType": "VariableDeclaration", - "scope": 51480, + "scope": 51477, "src": "4820:31:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 51409, + "id": 51406, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51408, + "id": 51405, "name": "OrderLib.SwapOrder", "nameLocations": [ "4820:8:66", "4829:9:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "4820:18:66" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "4820:18:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], - "id": 51435, + "id": 51432, "initialValue": { "arguments": [ { "arguments": [ { - "id": 51415, + "id": 51412, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "4895:4:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -9066,11 +9066,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 51414, + "id": 51411, "isConstant": false, "isLValue": false, "isPure": true, @@ -9082,14 +9082,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51413, + "id": 51410, "name": "address", "nodeType": "ElementaryTypeName", "src": "4887:7:66", "typeDescriptions": {} } }, - "id": 51416, + "id": 51413, "isConstant": false, "isLValue": false, "isPure": false, @@ -9108,14 +9108,14 @@ { "arguments": [ { - "id": 51419, + "id": 51416, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "4910:3:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } @@ -9123,11 +9123,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], - "id": 51418, + "id": 51415, "isConstant": false, "isLValue": false, "isPure": true, @@ -9139,14 +9139,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51417, + "id": 51414, "name": "address", "nodeType": "ElementaryTypeName", "src": "4902:7:66", "typeDescriptions": {} } }, - "id": 51420, + "id": 51417, "isConstant": false, "isLValue": false, "isPure": false, @@ -9167,18 +9167,18 @@ { "expression": { "expression": { - "id": 51423, + "id": 51420, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "4964:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51424, + "id": 51421, "isConstant": false, "isLValue": false, "isPure": false, @@ -9186,14 +9186,14 @@ "memberLocation": "4973:8:66", "memberName": "Exchange", "nodeType": "MemberAccess", - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "4964:17:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", + "typeIdentifier": "t_type$_t_enum$_Exchange_$46534_$", "typeString": "type(enum OrderLib.Exchange)" } }, - "id": 51425, + "id": 51422, "isConstant": false, "isLValue": false, "isPure": true, @@ -9201,19 +9201,19 @@ "memberLocation": "4982:9:66", "memberName": "UniswapV3", "nodeType": "MemberAccess", - "referencedDeclaration": 46536, + "referencedDeclaration": 46533, "src": "4964:27:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, { - "id": 51426, + "id": 51423, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49472, + "referencedDeclaration": 49469, "src": "4993:3:66", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -9224,7 +9224,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, { @@ -9233,18 +9233,18 @@ } ], "expression": { - "id": 51421, + "id": 51418, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "4949:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51422, + "id": 51419, "isConstant": false, "isLValue": false, "isPure": false, @@ -9252,14 +9252,14 @@ "memberLocation": "4958:5:66", "memberName": "Route", "nodeType": "MemberAccess", - "referencedDeclaration": 46543, + "referencedDeclaration": 46540, "src": "4949:14:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Route_$46540_storage_ptr_$", "typeString": "type(struct OrderLib.Route storage pointer)" } }, - "id": 51427, + "id": 51424, "isConstant": false, "isLValue": false, "isPure": false, @@ -9271,16 +9271,16 @@ "src": "4949:48:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, { - "id": 51428, + "id": 51425, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51385, + "referencedDeclaration": 51382, "src": "4999:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9289,7 +9289,7 @@ }, { "hexValue": "74727565", - "id": 51429, + "id": 51426, "isConstant": false, "isLValue": false, "isPure": true, @@ -9305,7 +9305,7 @@ }, { "hexValue": "66616c7365", - "id": 51430, + "id": 51427, "isConstant": false, "isLValue": false, "isPure": true, @@ -9321,18 +9321,18 @@ }, { "expression": { - "id": 51431, + "id": 51428, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "5032:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51432, + "id": 51429, "isConstant": false, "isLValue": false, "isPure": true, @@ -9340,7 +9340,7 @@ "memberLocation": "5041:8:66", "memberName": "NO_CHAIN", "nodeType": "MemberAccess", - "referencedDeclaration": 46491, + "referencedDeclaration": 46488, "src": "5032:17:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -9348,14 +9348,14 @@ } }, { - "id": 51433, + "id": 51430, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51334, + "referencedDeclaration": 51331, "src": "5051:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } } @@ -9371,7 +9371,7 @@ "typeString": "address" }, { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" }, { @@ -9391,23 +9391,23 @@ "typeString": "uint64" }, { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } ], "expression": { - "id": 51411, + "id": 51408, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "4855:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51412, + "id": 51409, "isConstant": false, "isLValue": false, "isPure": false, @@ -9415,14 +9415,14 @@ "memberLocation": "4864:9:66", "memberName": "SwapOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "4855:18:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46560_storage_ptr_$", "typeString": "type(struct OrderLib.SwapOrder storage pointer)" } }, - "id": 51434, + "id": 51431, "isConstant": false, "isLValue": false, "isPure": false, @@ -9434,7 +9434,7 @@ "src": "4855:214:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, @@ -9443,17 +9443,17 @@ }, { "assignments": [ - 51437 + 51434 ], "declarations": [ { "constant": false, - "id": 51437, + "id": 51434, "mutability": "mutable", "name": "orderIndex", "nameLocation": "5086:10:66", "nodeType": "VariableDeclaration", - "scope": 51480, + "scope": 51477, "src": "5079:17:66", "stateVariable": false, "storageLocation": "default", @@ -9462,7 +9462,7 @@ "typeString": "uint64" }, "typeName": { - "id": 51436, + "id": 51433, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5079:6:66", @@ -9474,24 +9474,24 @@ "visibility": "internal" } ], - "id": 51441, + "id": 51438, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 51438, + "id": 51435, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "5099:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51439, + "id": 51436, "isConstant": false, "isLValue": false, "isPure": false, @@ -9499,14 +9499,14 @@ "memberLocation": "5105:13:66", "memberName": "numSwapOrders", "nodeType": "MemberAccess", - "referencedDeclaration": 49068, + "referencedDeclaration": 49065, "src": "5099:19:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$", "typeString": "function () view external returns (uint64)" } }, - "id": 51440, + "id": 51437, "isConstant": false, "isLValue": false, "isPure": false, @@ -9529,14 +9529,14 @@ "expression": { "arguments": [ { - "id": 51445, + "id": 51442, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51410, + "referencedDeclaration": 51407, "src": "5147:5:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } @@ -9544,23 +9544,23 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { - "id": 51442, + "id": 51439, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "5130:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51444, + "id": 51441, "isConstant": false, "isLValue": false, "isPure": false, @@ -9568,14 +9568,14 @@ "memberLocation": "5136:10:66", "memberName": "placeOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 49089, + "referencedDeclaration": 49086, "src": "5130:16:66", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46560_memory_ptr_$returns$__$", "typeString": "function (struct OrderLib.SwapOrder memory) external" } }, - "id": 51446, + "id": 51443, "isConstant": false, "isLValue": false, "isPure": false, @@ -9591,7 +9591,7 @@ "typeString": "tuple()" } }, - "id": 51447, + "id": 51444, "nodeType": "ExpressionStatement", "src": "5130:23:66" }, @@ -9600,7 +9600,7 @@ "arguments": [ { "hexValue": "706c61636564206f72646572", - "id": 51451, + "id": 51448, "isConstant": false, "isLValue": false, "isPure": true, @@ -9623,7 +9623,7 @@ } ], "expression": { - "id": 51448, + "id": 51445, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9634,7 +9634,7 @@ "typeString": "type(library console2)" } }, - "id": 51450, + "id": 51447, "isConstant": false, "isLValue": false, "isPure": false, @@ -9649,7 +9649,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51452, + "id": 51449, "isConstant": false, "isLValue": false, "isPure": false, @@ -9665,7 +9665,7 @@ "typeString": "tuple()" } }, - "id": 51453, + "id": 51450, "nodeType": "ExpressionStatement", "src": "5163:28:66" }, @@ -9675,11 +9675,11 @@ { "arguments": [ { - "id": 51459, + "id": 51456, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51437, + "referencedDeclaration": 51434, "src": "5219:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -9694,7 +9694,7 @@ "typeString": "uint64" } ], - "id": 51458, + "id": 51455, "isConstant": false, "isLValue": false, "isPure": true, @@ -9706,14 +9706,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 51457, + "id": 51454, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5214:4:66", "typeDescriptions": {} } }, - "id": 51460, + "id": 51457, "isConstant": false, "isLValue": false, "isPure": false, @@ -9738,7 +9738,7 @@ } ], "expression": { - "id": 51454, + "id": 51451, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9749,7 +9749,7 @@ "typeString": "type(library console2)" } }, - "id": 51456, + "id": 51453, "isConstant": false, "isLValue": false, "isPure": false, @@ -9764,7 +9764,7 @@ "typeString": "function (uint256) pure" } }, - "id": 51461, + "id": 51458, "isConstant": false, "isLValue": false, "isPure": false, @@ -9780,7 +9780,7 @@ "typeString": "tuple()" } }, - "id": 51462, + "id": 51459, "nodeType": "ExpressionStatement", "src": "5201:30:66" }, @@ -9788,11 +9788,11 @@ "expression": { "arguments": [ { - "id": 51466, + "id": 51463, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51437, + "referencedDeclaration": 51434, "src": "5255:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -9801,7 +9801,7 @@ }, { "hexValue": "30", - "id": 51467, + "id": 51464, "isConstant": false, "isLValue": false, "isPure": true, @@ -9819,7 +9819,7 @@ "arguments": [ { "hexValue": "30", - "id": 51470, + "id": 51467, "isConstant": false, "isLValue": false, "isPure": true, @@ -9842,18 +9842,18 @@ } ], "expression": { - "id": 51468, + "id": 51465, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "5270:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51469, + "id": 51466, "isConstant": false, "isLValue": false, "isPure": false, @@ -9861,14 +9861,14 @@ "memberLocation": "5279:10:66", "memberName": "PriceProof", "nodeType": "MemberAccess", - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "5270:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_PriceProof_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.PriceProof storage pointer)" } }, - "id": 51471, + "id": 51468, "isConstant": false, "isLValue": false, "isPure": true, @@ -9880,7 +9880,7 @@ "src": "5270:22:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } @@ -9896,23 +9896,23 @@ "typeString": "int_const 0" }, { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { - "id": 51463, + "id": 51460, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "5241:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51465, + "id": 51462, "isConstant": false, "isLValue": false, "isPure": false, @@ -9920,14 +9920,14 @@ "memberLocation": "5247:7:66", "memberName": "execute", "nodeType": "MemberAccess", - "referencedDeclaration": 49143, + "referencedDeclaration": 49140, "src": "5241:13:66", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46638_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, - "id": 51472, + "id": 51469, "isConstant": false, "isLValue": false, "isPure": false, @@ -9943,7 +9943,7 @@ "typeString": "tuple()" } }, - "id": 51473, + "id": 51470, "nodeType": "ExpressionStatement", "src": "5241:52:66" }, @@ -9952,7 +9952,7 @@ "arguments": [ { "hexValue": "6578656375746564", - "id": 51477, + "id": 51474, "isConstant": false, "isLValue": false, "isPure": true, @@ -9975,7 +9975,7 @@ } ], "expression": { - "id": 51474, + "id": 51471, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9986,7 +9986,7 @@ "typeString": "type(library console2)" } }, - "id": 51476, + "id": 51473, "isConstant": false, "isLValue": false, "isPure": false, @@ -10001,7 +10001,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51478, + "id": 51475, "isConstant": false, "isLValue": false, "isPure": false, @@ -10017,7 +10017,7 @@ "typeString": "tuple()" } }, - "id": 51479, + "id": 51476, "nodeType": "ExpressionStatement", "src": "5303:24:66" } @@ -10030,92 +10030,92 @@ "name": "testExecuteOrderExactInput", "nameLocation": "4071:26:66", "parameters": { - "id": 51327, + "id": 51324, "nodeType": "ParameterList", "parameters": [], "src": "4097:2:66" }, "returnParameters": { - "id": 51328, + "id": 51325, "nodeType": "ParameterList", "parameters": [], "src": "4107:0:66" }, - "scope": 51705, + "scope": 51702, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 51704, + "id": 51701, "nodeType": "FunctionDefinition", "src": "5341:1792:66", "nodes": [], "body": { - "id": 51703, + "id": 51700, "nodeType": "Block", "src": "5381:1752:66", "nodes": [], "statements": [ { "assignments": [ - 51489 + 51486 ], "declarations": [ { "constant": false, - "id": 51489, + "id": 51486, "mutability": "mutable", "name": "tranches", "nameLocation": "5470:8:66", "nodeType": "VariableDeclaration", - "scope": 51703, + "scope": 51700, "src": "5444:34:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { - "id": 51487, + "id": 51484, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51486, + "id": 51483, "name": "OrderLib.Tranche", "nameLocations": [ "5444:8:66", "5453:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5444:16:66" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5444:16:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 51488, + "id": 51485, "nodeType": "ArrayTypeName", "src": "5444:18:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, "visibility": "internal" } ], - "id": 51496, + "id": 51493, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51494, + "id": 51491, "isConstant": false, "isLValue": false, "isPure": true, @@ -10137,7 +10137,7 @@ "typeString": "int_const 1" } ], - "id": 51493, + "id": 51490, "isConstant": false, "isLValue": false, "isPure": true, @@ -10145,41 +10145,41 @@ "nodeType": "NewExpression", "src": "5481:22:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)" }, "typeName": { "baseType": { - "id": 51491, + "id": 51488, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51490, + "id": 51487, "name": "OrderLib.Tranche", "nameLocations": [ "5485:8:66", "5494:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5485:16:66" }, - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5485:16:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, - "id": 51492, + "id": 51489, "nodeType": "ArrayTypeName", "src": "5485:18:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } } }, - "id": 51495, + "id": 51492, "isConstant": false, "isLValue": false, "isPure": true, @@ -10191,7 +10191,7 @@ "src": "5481:25:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, @@ -10200,63 +10200,63 @@ }, { "assignments": [ - 51502 + 51499 ], "declarations": [ { "constant": false, - "id": 51502, + "id": 51499, "mutability": "mutable", "name": "constraints1", "nameLocation": "5545:12:66", "nodeType": "VariableDeclaration", - "scope": 51703, + "scope": 51700, "src": "5516:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { - "id": 51500, + "id": 51497, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51499, + "id": 51496, "name": "OrderLib.Constraint", "nameLocations": [ "5516:8:66", "5525:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "5516:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "5516:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51501, + "id": 51498, "nodeType": "ArrayTypeName", "src": "5516:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], - "id": 51509, + "id": 51506, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 51507, + "id": 51504, "isConstant": false, "isLValue": false, "isPure": true, @@ -10278,7 +10278,7 @@ "typeString": "int_const 1" } ], - "id": 51506, + "id": 51503, "isConstant": false, "isLValue": false, "isPure": true, @@ -10286,41 +10286,41 @@ "nodeType": "NewExpression", "src": "5560:25:66", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { - "id": 51504, + "id": 51501, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51503, + "id": 51500, "name": "OrderLib.Constraint", "nameLocations": [ "5564:8:66", "5573:10:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "5564:19:66" }, - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "5564:19:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, - "id": 51505, + "id": 51502, "nodeType": "ArrayTypeName", "src": "5564:21:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, - "id": 51508, + "id": 51505, "isConstant": false, "isLValue": false, "isPure": true, @@ -10332,7 +10332,7 @@ "src": "5560:28:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, @@ -10341,17 +10341,17 @@ }, { "assignments": [ - 51511 + 51508 ], "declarations": [ { "constant": false, - "id": 51511, + "id": 51508, "mutability": "mutable", "name": "limit", "nameLocation": "5606:5:66", "nodeType": "VariableDeclaration", - "scope": 51703, + "scope": 51700, "src": "5598:13:66", "stateVariable": false, "storageLocation": "default", @@ -10360,7 +10360,7 @@ "typeString": "uint160" }, "typeName": { - "id": 51510, + "id": 51507, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "5598:7:66", @@ -10372,13 +10372,13 @@ "visibility": "internal" } ], - "id": 51518, + "id": 51515, "initialValue": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 51517, + "id": 51514, "isConstant": false, "isLValue": false, "isPure": false, @@ -10388,7 +10388,7 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 51515, + "id": 51512, "isConstant": false, "isLValue": false, "isPure": false, @@ -10397,18 +10397,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 51512, + "id": 51509, "name": "price", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49983, + "referencedDeclaration": 49980, "src": "5614:5:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint160_$", "typeString": "function () view returns (uint160)" } }, - "id": 51513, + "id": 51510, "isConstant": false, "isLValue": false, "isPure": false, @@ -10428,7 +10428,7 @@ "operator": "*", "rightExpression": { "hexValue": "3130303031", - "id": 51514, + "id": 51511, "isConstant": false, "isLValue": false, "isPure": true, @@ -10452,7 +10452,7 @@ "operator": "/", "rightExpression": { "hexValue": "3130303030", - "id": 51516, + "id": 51513, "isConstant": false, "isLValue": false, "isPure": true, @@ -10477,17 +10477,17 @@ }, { "assignments": [ - 51520 + 51517 ], "declarations": [ { "constant": false, - "id": 51520, + "id": 51517, "mutability": "mutable", "name": "serialized", "nameLocation": "5691:10:66", "nodeType": "VariableDeclaration", - "scope": 51703, + "scope": 51700, "src": "5678:23:66", "stateVariable": false, "storageLocation": "memory", @@ -10496,7 +10496,7 @@ "typeString": "bytes" }, "typeName": { - "id": 51519, + "id": 51516, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5678:5:66", @@ -10508,14 +10508,14 @@ "visibility": "internal" } ], - "id": 51532, + "id": 51529, "initialValue": { "arguments": [ { "arguments": [ { "hexValue": "74727565", - "id": 51525, + "id": 51522, "isConstant": false, "isLValue": false, "isPure": true, @@ -10531,7 +10531,7 @@ }, { "hexValue": "66616c7365", - "id": 51526, + "id": 51523, "isConstant": false, "isLValue": false, "isPure": true, @@ -10547,7 +10547,7 @@ }, { "hexValue": "30", - "id": 51527, + "id": 51524, "isConstant": false, "isLValue": false, "isPure": true, @@ -10562,11 +10562,11 @@ "value": "0" }, { - "id": 51528, + "id": 51525, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51511, + "referencedDeclaration": 51508, "src": "5756:5:66", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10575,7 +10575,7 @@ }, { "hexValue": "30", - "id": 51529, + "id": 51526, "isConstant": false, "isLValue": false, "isPure": true, @@ -10614,18 +10614,18 @@ } ], "expression": { - "id": 51523, + "id": 51520, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "5716:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51524, + "id": 51521, "isConstant": false, "isLValue": false, "isPure": false, @@ -10633,14 +10633,14 @@ "memberLocation": "5725:14:66", "memberName": "LineConstraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46605, + "referencedDeclaration": 46602, "src": "5716:23:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46605_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46602_storage_ptr_$", "typeString": "type(struct OrderLib.LineConstraint storage pointer)" } }, - "id": 51530, + "id": 51527, "isConstant": false, "isLValue": false, "isPure": false, @@ -10652,7 +10652,7 @@ "src": "5716:49:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } } @@ -10660,12 +10660,12 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", + "typeIdentifier": "t_struct$_LineConstraint_$46602_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } ], "expression": { - "id": 51521, + "id": 51518, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -10676,7 +10676,7 @@ "typeString": "abi" } }, - "id": 51522, + "id": 51519, "isConstant": false, "isLValue": false, "isPure": true, @@ -10690,7 +10690,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 51531, + "id": 51528, "isConstant": false, "isLValue": false, "isPure": false, @@ -10711,28 +10711,28 @@ }, { "expression": { - "id": 51543, + "id": 51540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51533, + "id": 51530, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51502, + "referencedDeclaration": 51499, "src": "5777:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, - "id": 51535, + "id": 51532, "indexExpression": { "hexValue": "30", - "id": 51534, + "id": 51531, "isConstant": false, "isLValue": false, "isPure": true, @@ -10753,7 +10753,7 @@ "nodeType": "IndexAccess", "src": "5777:15:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, @@ -10764,18 +10764,18 @@ { "expression": { "expression": { - "id": 51538, + "id": 51535, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "5815:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51539, + "id": 51536, "isConstant": false, "isLValue": false, "isPure": false, @@ -10783,14 +10783,14 @@ "memberLocation": "5824:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", - "referencedDeclaration": 46588, + "referencedDeclaration": 46585, "src": "5815:23:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", + "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46585_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, - "id": 51540, + "id": 51537, "isConstant": false, "isLValue": false, "isPure": true, @@ -10798,19 +10798,19 @@ "memberLocation": "5839:4:66", "memberName": "Line", "nodeType": "MemberAccess", - "referencedDeclaration": 46586, + "referencedDeclaration": 46583, "src": "5815:28:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" } }, { - "id": 51541, + "id": 51538, "name": "serialized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51520, + "referencedDeclaration": 51517, "src": "5845:10:66", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -10821,7 +10821,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_ConstraintMode_$46588", + "typeIdentifier": "t_enum$_ConstraintMode_$46585", "typeString": "enum OrderLib.ConstraintMode" }, { @@ -10830,18 +10830,18 @@ } ], "expression": { - "id": 51536, + "id": 51533, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "5795:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51537, + "id": 51534, "isConstant": false, "isLValue": false, "isPure": false, @@ -10849,14 +10849,14 @@ "memberLocation": "5804:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", - "referencedDeclaration": 46594, + "referencedDeclaration": 46591, "src": "5795:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Constraint_$46591_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, - "id": 51542, + "id": 51539, "isConstant": false, "isLValue": false, "isPure": false, @@ -10868,44 +10868,44 @@ "src": "5795:61:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "5777:79:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", + "typeIdentifier": "t_struct$_Constraint_$46591_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, - "id": 51544, + "id": 51541, "nodeType": "ExpressionStatement", "src": "5777:79:66" }, { "expression": { - "id": 51557, + "id": 51554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 51545, + "id": 51542, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51489, + "referencedDeclaration": 51486, "src": "5866:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, - "id": 51547, + "id": 51544, "indexExpression": { "hexValue": "30", - "id": 51546, + "id": 51543, "isConstant": false, "isLValue": false, "isPure": true, @@ -10926,7 +10926,7 @@ "nodeType": "IndexAccess", "src": "5866:11:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, @@ -10938,7 +10938,7 @@ "expression": { "arguments": [ { - "id": 51552, + "id": 51549, "isConstant": false, "isLValue": false, "isPure": true, @@ -10950,7 +10950,7 @@ "typeString": "type(uint16)" }, "typeName": { - "id": 51551, + "id": 51548, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "5902:6:66", @@ -10965,7 +10965,7 @@ "typeString": "type(uint16)" } ], - "id": 51550, + "id": 51547, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -10976,7 +10976,7 @@ "typeString": "function () pure" } }, - "id": 51553, + "id": 51550, "isConstant": false, "isLValue": false, "isPure": true, @@ -10992,7 +10992,7 @@ "typeString": "type(uint16)" } }, - "id": 51554, + "id": 51551, "isConstant": false, "isLValue": false, "isPure": true, @@ -11007,14 +11007,14 @@ } }, { - "id": 51555, + "id": 51552, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51502, + "referencedDeclaration": 51499, "src": "5914:12:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } @@ -11026,23 +11026,23 @@ "typeString": "uint16" }, { - "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Constraint_$46591_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { - "id": 51548, + "id": 51545, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "5880:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51549, + "id": 51546, "isConstant": false, "isLValue": false, "isPure": false, @@ -11050,14 +11050,14 @@ "memberLocation": "5889:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", - "referencedDeclaration": 46638, + "referencedDeclaration": 46635, "src": "5880:16:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Tranche_$46635_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, - "id": 51556, + "id": 51553, "isConstant": false, "isLValue": false, "isPure": false, @@ -11069,72 +11069,72 @@ "src": "5880:47:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "5866:61:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", + "typeIdentifier": "t_struct$_Tranche_$46635_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, - "id": 51558, + "id": 51555, "nodeType": "ExpressionStatement", "src": "5866:61:66" }, { "assignments": [ - 51561 + 51558 ], "declarations": [ { "constant": false, - "id": 51561, + "id": 51558, "mutability": "mutable", "name": "token", "nameLocation": "5947:5:66", "nodeType": "VariableDeclaration", - "scope": 51703, + "scope": 51700, "src": "5937:15:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { - "id": 51560, + "id": 51557, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51559, + "id": 51556, "name": "MockERC20", "nameLocations": [ "5937:9:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "5937:9:66" }, - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "5937:9:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" } ], - "id": 51565, + "id": 51562, "initialValue": { "arguments": [ { - "id": 51563, + "id": 51560, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49480, + "referencedDeclaration": 49477, "src": "5965:6:66", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11149,18 +11149,18 @@ "typeString": "address" } ], - "id": 51562, + "id": 51559, "name": "MockERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46478, + "referencedDeclaration": 46475, "src": "5955:9:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MockERC20_$46478_$", + "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", "typeString": "type(contract MockERC20)" } }, - "id": 51564, + "id": 51561, "isConstant": false, "isLValue": false, "isPure": false, @@ -11172,7 +11172,7 @@ "src": "5955:17:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, @@ -11181,17 +11181,17 @@ }, { "assignments": [ - 51567 + 51564 ], "declarations": [ { "constant": false, - "id": 51567, + "id": 51564, "mutability": "mutable", "name": "amount", "nameLocation": "5990:6:66", "nodeType": "VariableDeclaration", - "scope": 51703, + "scope": 51700, "src": "5982:14:66", "stateVariable": false, "storageLocation": "default", @@ -11200,7 +11200,7 @@ "typeString": "uint256" }, "typeName": { - "id": 51566, + "id": 51563, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5982:7:66", @@ -11212,13 +11212,13 @@ "visibility": "internal" } ], - "id": 51577, + "id": 51574, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51576, + "id": 51573, "isConstant": false, "isLValue": false, "isPure": false, @@ -11228,14 +11228,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51574, + "id": 51571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "33", - "id": 51568, + "id": 51565, "isConstant": false, "isLValue": false, "isPure": true, @@ -11256,14 +11256,14 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 51573, + "id": 51570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 51569, + "id": 51566, "isConstant": false, "isLValue": false, "isPure": true, @@ -11284,18 +11284,18 @@ "expression": { "argumentTypes": [], "expression": { - "id": 51570, + "id": 51567, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51561, + "referencedDeclaration": 51558, "src": "6005:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 51571, + "id": 51568, "isConstant": false, "isLValue": false, "isPure": false, @@ -11303,14 +11303,14 @@ "memberLocation": "6011:8:66", "memberName": "decimals", "nodeType": "MemberAccess", - "referencedDeclaration": 46464, + "referencedDeclaration": 46461, "src": "6005:14:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 51572, + "id": 51569, "isConstant": false, "isLValue": false, "isPure": false, @@ -11342,7 +11342,7 @@ "operator": "/", "rightExpression": { "hexValue": "3130", - "id": 51575, + "id": 51572, "isConstant": false, "isLValue": false, "isPure": true, @@ -11371,14 +11371,14 @@ { "arguments": [ { - "id": 51583, + "id": 51580, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "6077:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -11386,11 +11386,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 51582, + "id": 51579, "isConstant": false, "isLValue": false, "isPure": true, @@ -11402,14 +11402,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51581, + "id": 51578, "name": "address", "nodeType": "ElementaryTypeName", "src": "6069:7:66", "typeDescriptions": {} } }, - "id": 51584, + "id": 51581, "isConstant": false, "isLValue": false, "isPure": false, @@ -11426,11 +11426,11 @@ } }, { - "id": 51585, + "id": 51582, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51567, + "referencedDeclaration": 51564, "src": "6085:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11450,18 +11450,18 @@ } ], "expression": { - "id": 51578, + "id": 51575, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51561, + "referencedDeclaration": 51558, "src": "6058:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 51580, + "id": 51577, "isConstant": false, "isLValue": false, "isPure": false, @@ -11469,14 +11469,14 @@ "memberLocation": "6064:4:66", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "6058:10:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 51586, + "id": 51583, "isConstant": false, "isLValue": false, "isPure": false, @@ -11492,63 +11492,63 @@ "typeString": "tuple()" } }, - "id": 51587, + "id": 51584, "nodeType": "ExpressionStatement", "src": "6058:34:66" }, { "assignments": [ - 51592 + 51589 ], "declarations": [ { "constant": false, - "id": 51592, + "id": 51589, "mutability": "mutable", "name": "order", "nameLocation": "6128:5:66", "nodeType": "VariableDeclaration", - "scope": 51703, + "scope": 51700, "src": "6102:31:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 51591, + "id": 51588, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51590, + "id": 51587, "name": "OrderLib.SwapOrder", "nameLocations": [ "6102:8:66", "6111:9:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "6102:18:66" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "6102:18:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], - "id": 51611, + "id": 51608, "initialValue": { "arguments": [ { - "id": 51595, + "id": 51592, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49480, + "referencedDeclaration": 49477, "src": "6169:6:66", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11556,11 +11556,11 @@ } }, { - "id": 51596, + "id": 51593, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49482, + "referencedDeclaration": 49479, "src": "6177:6:66", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11572,18 +11572,18 @@ { "expression": { "expression": { - "id": 51599, + "id": 51596, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "6220:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51600, + "id": 51597, "isConstant": false, "isLValue": false, "isPure": false, @@ -11591,14 +11591,14 @@ "memberLocation": "6229:8:66", "memberName": "Exchange", "nodeType": "MemberAccess", - "referencedDeclaration": 46537, + "referencedDeclaration": 46534, "src": "6220:17:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", + "typeIdentifier": "t_type$_t_enum$_Exchange_$46534_$", "typeString": "type(enum OrderLib.Exchange)" } }, - "id": 51601, + "id": 51598, "isConstant": false, "isLValue": false, "isPure": true, @@ -11606,19 +11606,19 @@ "memberLocation": "6238:9:66", "memberName": "UniswapV3", "nodeType": "MemberAccess", - "referencedDeclaration": 46536, + "referencedDeclaration": 46533, "src": "6220:27:66", "typeDescriptions": { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" } }, { - "id": 51602, + "id": 51599, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49472, + "referencedDeclaration": 49469, "src": "6249:3:66", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -11629,7 +11629,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_enum$_Exchange_$46537", + "typeIdentifier": "t_enum$_Exchange_$46534", "typeString": "enum OrderLib.Exchange" }, { @@ -11638,18 +11638,18 @@ } ], "expression": { - "id": 51597, + "id": 51594, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "6205:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51598, + "id": 51595, "isConstant": false, "isLValue": false, "isPure": false, @@ -11657,14 +11657,14 @@ "memberLocation": "6214:5:66", "memberName": "Route", "nodeType": "MemberAccess", - "referencedDeclaration": 46543, + "referencedDeclaration": 46540, "src": "6205:14:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Route_$46540_storage_ptr_$", "typeString": "type(struct OrderLib.Route storage pointer)" } }, - "id": 51603, + "id": 51600, "isConstant": false, "isLValue": false, "isPure": false, @@ -11676,16 +11676,16 @@ "src": "6205:48:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, { - "id": 51604, + "id": 51601, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51567, + "referencedDeclaration": 51564, "src": "6255:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11694,7 +11694,7 @@ }, { "hexValue": "74727565", - "id": 51605, + "id": 51602, "isConstant": false, "isLValue": false, "isPure": true, @@ -11710,7 +11710,7 @@ }, { "hexValue": "66616c7365", - "id": 51606, + "id": 51603, "isConstant": false, "isLValue": false, "isPure": true, @@ -11726,18 +11726,18 @@ }, { "expression": { - "id": 51607, + "id": 51604, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "6288:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51608, + "id": 51605, "isConstant": false, "isLValue": false, "isPure": true, @@ -11745,7 +11745,7 @@ "memberLocation": "6297:8:66", "memberName": "NO_CHAIN", "nodeType": "MemberAccess", - "referencedDeclaration": 46491, + "referencedDeclaration": 46488, "src": "6288:17:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -11753,14 +11753,14 @@ } }, { - "id": 51609, + "id": 51606, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51489, + "referencedDeclaration": 51486, "src": "6307:8:66", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } } @@ -11776,7 +11776,7 @@ "typeString": "address" }, { - "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", + "typeIdentifier": "t_struct$_Route_$46540_memory_ptr", "typeString": "struct OrderLib.Route memory" }, { @@ -11796,23 +11796,23 @@ "typeString": "uint64" }, { - "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Tranche_$46635_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } ], "expression": { - "id": 51593, + "id": 51590, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "6137:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51594, + "id": 51591, "isConstant": false, "isLValue": false, "isPure": false, @@ -11820,14 +11820,14 @@ "memberLocation": "6146:9:66", "memberName": "SwapOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "6137:18:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46560_storage_ptr_$", "typeString": "type(struct OrderLib.SwapOrder storage pointer)" } }, - "id": 51610, + "id": 51607, "isConstant": false, "isLValue": false, "isPure": false, @@ -11839,7 +11839,7 @@ "src": "6137:188:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, @@ -11848,17 +11848,17 @@ }, { "assignments": [ - 51613 + 51610 ], "declarations": [ { "constant": false, - "id": 51613, + "id": 51610, "mutability": "mutable", "name": "orderIndex", "nameLocation": "6342:10:66", "nodeType": "VariableDeclaration", - "scope": 51703, + "scope": 51700, "src": "6335:17:66", "stateVariable": false, "storageLocation": "default", @@ -11867,7 +11867,7 @@ "typeString": "uint64" }, "typeName": { - "id": 51612, + "id": 51609, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6335:6:66", @@ -11879,24 +11879,24 @@ "visibility": "internal" } ], - "id": 51617, + "id": 51614, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 51614, + "id": 51611, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "6355:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51615, + "id": 51612, "isConstant": false, "isLValue": false, "isPure": false, @@ -11904,14 +11904,14 @@ "memberLocation": "6361:13:66", "memberName": "numSwapOrders", "nodeType": "MemberAccess", - "referencedDeclaration": 49068, + "referencedDeclaration": 49065, "src": "6355:19:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$", "typeString": "function () view external returns (uint64)" } }, - "id": 51616, + "id": 51613, "isConstant": false, "isLValue": false, "isPure": false, @@ -11934,14 +11934,14 @@ "expression": { "arguments": [ { - "id": 51621, + "id": 51618, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51592, + "referencedDeclaration": 51589, "src": "6403:5:66", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } @@ -11949,23 +11949,23 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { - "id": 51618, + "id": 51615, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "6386:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51620, + "id": 51617, "isConstant": false, "isLValue": false, "isPure": false, @@ -11973,14 +11973,14 @@ "memberLocation": "6392:10:66", "memberName": "placeOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 49089, + "referencedDeclaration": 49086, "src": "6386:16:66", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46560_memory_ptr_$returns$__$", "typeString": "function (struct OrderLib.SwapOrder memory) external" } }, - "id": 51622, + "id": 51619, "isConstant": false, "isLValue": false, "isPure": false, @@ -11996,7 +11996,7 @@ "typeString": "tuple()" } }, - "id": 51623, + "id": 51620, "nodeType": "ExpressionStatement", "src": "6386:23:66" }, @@ -12005,7 +12005,7 @@ "arguments": [ { "hexValue": "706c61636564206f72646572", - "id": 51627, + "id": 51624, "isConstant": false, "isLValue": false, "isPure": true, @@ -12028,7 +12028,7 @@ } ], "expression": { - "id": 51624, + "id": 51621, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12039,7 +12039,7 @@ "typeString": "type(library console2)" } }, - "id": 51626, + "id": 51623, "isConstant": false, "isLValue": false, "isPure": false, @@ -12054,7 +12054,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51628, + "id": 51625, "isConstant": false, "isLValue": false, "isPure": false, @@ -12070,7 +12070,7 @@ "typeString": "tuple()" } }, - "id": 51629, + "id": 51626, "nodeType": "ExpressionStatement", "src": "6419:28:66" }, @@ -12080,11 +12080,11 @@ { "arguments": [ { - "id": 51635, + "id": 51632, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51613, + "referencedDeclaration": 51610, "src": "6475:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -12099,7 +12099,7 @@ "typeString": "uint64" } ], - "id": 51634, + "id": 51631, "isConstant": false, "isLValue": false, "isPure": true, @@ -12111,14 +12111,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 51633, + "id": 51630, "name": "uint", "nodeType": "ElementaryTypeName", "src": "6470:4:66", "typeDescriptions": {} } }, - "id": 51636, + "id": 51633, "isConstant": false, "isLValue": false, "isPure": false, @@ -12143,7 +12143,7 @@ } ], "expression": { - "id": 51630, + "id": 51627, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12154,7 +12154,7 @@ "typeString": "type(library console2)" } }, - "id": 51632, + "id": 51629, "isConstant": false, "isLValue": false, "isPure": false, @@ -12169,7 +12169,7 @@ "typeString": "function (uint256) pure" } }, - "id": 51637, + "id": 51634, "isConstant": false, "isLValue": false, "isPure": false, @@ -12185,7 +12185,7 @@ "typeString": "tuple()" } }, - "id": 51638, + "id": 51635, "nodeType": "ExpressionStatement", "src": "6457:30:66" }, @@ -12196,7 +12196,7 @@ "arguments": [ { "hexValue": "4c", - "id": 51644, + "id": 51641, "isConstant": false, "isLValue": false, "isPure": true, @@ -12218,7 +12218,7 @@ "typeString": "literal_string \"L\"" } ], - "id": 51643, + "id": 51640, "isConstant": false, "isLValue": false, "isPure": true, @@ -12230,14 +12230,14 @@ "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 51642, + "id": 51639, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6514:5:66", "typeDescriptions": {} } }, - "id": 51645, + "id": 51642, "isConstant": false, "isLValue": false, "isPure": true, @@ -12262,7 +12262,7 @@ } ], "expression": { - "id": 51639, + "id": 51636, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12273,7 +12273,7 @@ "typeString": "contract Vm" } }, - "id": 51641, + "id": 51638, "isConstant": false, "isLValue": false, "isPure": false, @@ -12288,7 +12288,7 @@ "typeString": "function (bytes memory) external" } }, - "id": 51646, + "id": 51643, "isConstant": false, "isLValue": false, "isPure": false, @@ -12304,7 +12304,7 @@ "typeString": "tuple()" } }, - "id": 51647, + "id": 51644, "nodeType": "ExpressionStatement", "src": "6498:27:66" }, @@ -12312,11 +12312,11 @@ "expression": { "arguments": [ { - "id": 51651, + "id": 51648, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51613, + "referencedDeclaration": 51610, "src": "6549:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -12325,7 +12325,7 @@ }, { "hexValue": "30", - "id": 51652, + "id": 51649, "isConstant": false, "isLValue": false, "isPure": true, @@ -12343,7 +12343,7 @@ "arguments": [ { "hexValue": "30", - "id": 51655, + "id": 51652, "isConstant": false, "isLValue": false, "isPure": true, @@ -12366,18 +12366,18 @@ } ], "expression": { - "id": 51653, + "id": 51650, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "6564:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51654, + "id": 51651, "isConstant": false, "isLValue": false, "isPure": false, @@ -12385,14 +12385,14 @@ "memberLocation": "6573:10:66", "memberName": "PriceProof", "nodeType": "MemberAccess", - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "6564:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_PriceProof_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.PriceProof storage pointer)" } }, - "id": 51656, + "id": 51653, "isConstant": false, "isLValue": false, "isPure": true, @@ -12404,7 +12404,7 @@ "src": "6564:22:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } @@ -12420,23 +12420,23 @@ "typeString": "int_const 0" }, { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { - "id": 51648, + "id": 51645, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "6535:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51650, + "id": 51647, "isConstant": false, "isLValue": false, "isPure": false, @@ -12444,14 +12444,14 @@ "memberLocation": "6541:7:66", "memberName": "execute", "nodeType": "MemberAccess", - "referencedDeclaration": 49143, + "referencedDeclaration": 49140, "src": "6535:13:66", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46638_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, - "id": 51657, + "id": 51654, "isConstant": false, "isLValue": false, "isPure": false, @@ -12467,7 +12467,7 @@ "typeString": "tuple()" } }, - "id": 51658, + "id": 51655, "nodeType": "ExpressionStatement", "src": "6535:52:66" }, @@ -12476,7 +12476,7 @@ "arguments": [ { "hexValue": "7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d6974207072696365", - "id": 51662, + "id": 51659, "isConstant": false, "isLValue": false, "isPure": true, @@ -12499,7 +12499,7 @@ } ], "expression": { - "id": 51659, + "id": 51656, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12510,7 +12510,7 @@ "typeString": "type(library console2)" } }, - "id": 51661, + "id": 51658, "isConstant": false, "isLValue": false, "isPure": false, @@ -12525,7 +12525,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51663, + "id": 51660, "isConstant": false, "isLValue": false, "isPure": false, @@ -12541,7 +12541,7 @@ "typeString": "tuple()" } }, - "id": 51664, + "id": 51661, "nodeType": "ExpressionStatement", "src": "6628:64:66" }, @@ -12549,11 +12549,11 @@ "expression": { "arguments": [ { - "id": 51666, + "id": 51663, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51511, + "referencedDeclaration": 51508, "src": "6715:5:66", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -12568,18 +12568,18 @@ "typeString": "uint160" } ], - "id": 51665, + "id": 51662, "name": "swapToPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50068, + "referencedDeclaration": 50065, "src": "6703:11:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint160_$returns$__$", "typeString": "function (uint160)" } }, - "id": 51667, + "id": 51664, "isConstant": false, "isLValue": false, "isPure": false, @@ -12595,7 +12595,7 @@ "typeString": "tuple()" } }, - "id": 51668, + "id": 51665, "nodeType": "ExpressionStatement", "src": "6703:18:66" }, @@ -12606,7 +12606,7 @@ "arguments": [ { "hexValue": "4c", - "id": 51674, + "id": 51671, "isConstant": false, "isLValue": false, "isPure": true, @@ -12628,7 +12628,7 @@ "typeString": "literal_string \"L\"" } ], - "id": 51673, + "id": 51670, "isConstant": false, "isLValue": false, "isPure": true, @@ -12640,14 +12640,14 @@ "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 51672, + "id": 51669, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6782:5:66", "typeDescriptions": {} } }, - "id": 51675, + "id": 51672, "isConstant": false, "isLValue": false, "isPure": true, @@ -12672,7 +12672,7 @@ } ], "expression": { - "id": 51669, + "id": 51666, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12683,7 +12683,7 @@ "typeString": "contract Vm" } }, - "id": 51671, + "id": 51668, "isConstant": false, "isLValue": false, "isPure": false, @@ -12698,7 +12698,7 @@ "typeString": "function (bytes memory) external" } }, - "id": 51676, + "id": 51673, "isConstant": false, "isLValue": false, "isPure": false, @@ -12714,7 +12714,7 @@ "typeString": "tuple()" } }, - "id": 51677, + "id": 51674, "nodeType": "ExpressionStatement", "src": "6766:27:66" }, @@ -12722,11 +12722,11 @@ "expression": { "arguments": [ { - "id": 51681, + "id": 51678, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51613, + "referencedDeclaration": 51610, "src": "6895:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -12735,7 +12735,7 @@ }, { "hexValue": "30", - "id": 51682, + "id": 51679, "isConstant": false, "isLValue": false, "isPure": true, @@ -12753,7 +12753,7 @@ "arguments": [ { "hexValue": "30", - "id": 51685, + "id": 51682, "isConstant": false, "isLValue": false, "isPure": true, @@ -12776,18 +12776,18 @@ } ], "expression": { - "id": 51683, + "id": 51680, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "6910:8:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", + "typeIdentifier": "t_type$_t_contract$_OrderLib_$47919_$", "typeString": "type(library OrderLib)" } }, - "id": 51684, + "id": 51681, "isConstant": false, "isLValue": false, "isPure": false, @@ -12795,14 +12795,14 @@ "memberLocation": "6919:10:66", "memberName": "PriceProof", "nodeType": "MemberAccess", - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "6910:19:66", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_PriceProof_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.PriceProof storage pointer)" } }, - "id": 51686, + "id": 51683, "isConstant": false, "isLValue": false, "isPure": true, @@ -12814,7 +12814,7 @@ "src": "6910:22:66", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } @@ -12830,23 +12830,23 @@ "typeString": "int_const 0" }, { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { - "id": 51678, + "id": 51675, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50936, + "referencedDeclaration": 50933, "src": "6881:5:66", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51680, + "id": 51677, "isConstant": false, "isLValue": false, "isPure": false, @@ -12854,14 +12854,14 @@ "memberLocation": "6887:7:66", "memberName": "execute", "nodeType": "MemberAccess", - "referencedDeclaration": 49143, + "referencedDeclaration": 49140, "src": "6881:13:66", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46638_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, - "id": 51687, + "id": 51684, "isConstant": false, "isLValue": false, "isPure": false, @@ -12877,7 +12877,7 @@ "typeString": "tuple()" } }, - "id": 51688, + "id": 51685, "nodeType": "ExpressionStatement", "src": "6881:52:66" }, @@ -12889,7 +12889,7 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 51694, + "id": 51691, "isConstant": false, "isLValue": false, "isPure": false, @@ -12899,17 +12899,17 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 51692, + "id": 51689, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 51690, + "id": 51687, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51511, + "referencedDeclaration": 51508, "src": "7005:5:66", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -12920,7 +12920,7 @@ "operator": "*", "rightExpression": { "hexValue": "3130303031", - "id": 51691, + "id": 51688, "isConstant": false, "isLValue": false, "isPure": true, @@ -12944,7 +12944,7 @@ "operator": "/", "rightExpression": { "hexValue": "3130303030", - "id": 51693, + "id": 51690, "isConstant": false, "isLValue": false, "isPure": true, @@ -12972,18 +12972,18 @@ "typeString": "uint160" } ], - "id": 51689, + "id": 51686, "name": "swapToPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50068, + "referencedDeclaration": 50065, "src": "6993:11:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint160_$returns$__$", "typeString": "function (uint160)" } }, - "id": 51695, + "id": 51692, "isConstant": false, "isLValue": false, "isPure": false, @@ -12999,7 +12999,7 @@ "typeString": "tuple()" } }, - "id": 51696, + "id": 51693, "nodeType": "ExpressionStatement", "src": "6993:30:66" }, @@ -13008,7 +13008,7 @@ "arguments": [ { "hexValue": "7375636365737366756c6c79206578656375746564206174206c696d6974207072696365", - "id": 51700, + "id": 51697, "isConstant": false, "isLValue": false, "isPure": true, @@ -13031,7 +13031,7 @@ } ], "expression": { - "id": 51697, + "id": 51694, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -13042,7 +13042,7 @@ "typeString": "type(library console2)" } }, - "id": 51699, + "id": 51696, "isConstant": false, "isLValue": false, "isPure": false, @@ -13057,7 +13057,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51701, + "id": 51698, "isConstant": false, "isLValue": false, "isPure": false, @@ -13073,7 +13073,7 @@ "typeString": "tuple()" } }, - "id": 51702, + "id": 51699, "nodeType": "ExpressionStatement", "src": "7074:52:66" } @@ -13086,18 +13086,18 @@ "name": "testExecuteLimitOrder", "nameLocation": "5350:21:66", "parameters": { - "id": 51482, + "id": 51479, "nodeType": "ParameterList", "parameters": [], "src": "5371:2:66" }, "returnParameters": { - "id": 51483, + "id": 51480, "nodeType": "ParameterList", "parameters": [], "src": "5381:0:66" }, - "scope": 51705, + "scope": 51702, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -13107,22 +13107,22 @@ "baseContracts": [ { "baseName": { - "id": 50923, + "id": 50920, "name": "MockEnv", "nameLocations": [ "279:7:66" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 50069, + "referencedDeclaration": 50066, "src": "279:7:66" }, - "id": 50924, + "id": 50921, "nodeType": "InheritanceSpecifier", "src": "279:7:66" }, { "baseName": { - "id": 50925, + "id": 50922, "name": "Test", "nameLocations": [ "288:4:66" @@ -13131,15 +13131,15 @@ "referencedDeclaration": 11937, "src": "288:4:66" }, - "id": 50926, + "id": 50923, "nodeType": "InheritanceSpecifier", "src": "288:4:66" } ], "canonicalName": "TestOrder", "contractDependencies": [ - 46430, - 46478 + 46427, + 46475 ], "contractKind": "contract", "fullyImplemented": true, @@ -13147,7 +13147,7 @@ "21582": 1 }, "linearizedBaseContracts": [ - 51705, + 51702, 11937, 2357, 2354, @@ -13158,11 +13158,11 @@ 4516, 3823, 2291, - 50069 + 50066 ], "name": "TestOrder", "nameLocation": "266:9:66", - "scope": 51706, + "scope": 51703, "usedErrors": [], "usedEvents": [ 5, diff --git a/deployment/alpha/out/TestSinglePool.sol/TestSinglePool.json b/deployment/alpha/out/TestSinglePool.sol/TestSinglePool.json index e0e8cb3..3d6ff50 100644 --- a/deployment/alpha/out/TestSinglePool.sol/TestSinglePool.json +++ b/deployment/alpha/out/TestSinglePool.sol/TestSinglePool.json @@ -837,7 +837,7 @@ } ], "bytecode": { - "object": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c058615641781556006805460ff60a81b1916600160a81b179055600a805460ff1916909117905534801561007857600080fd5b5061436a806100886000396000f3fe60806040523480156200001157600080fd5b5060043610620001f55760003560e01c806385226c811162000119578063d21220a711620000af578063e1c7392a116200007a578063e1c7392a14620004b4578063e20c9f7114620004be578063e3baf41a14620004c8578063fa7626d414620004df57600080fd5b8063d21220a7146200041c578063d6f13002146200043d578063ddca3f431462000466578063df791e50146200049d57600080fd5b8063a54a72b711620000f0578063a54a72b714620003d0578063b5508aa914620003f1578063ba414fa614620003fb578063c578d91d146200040557600080fd5b806385226c811462000394578063916a17c614620003ad578063a035b1fe14620003b757600080fd5b80633f7286f4116200018f57806366d9a9a0116200016657806366d9a9a0146200031b57806367e368fc14620003345780636e008a0314620003695780637303e913146200037357600080fd5b80633f7286f414620002d45780634a09d3dd14620002de57806353486e2f146200030457600080fd5b80631bf6c21b11620001d05780631bf6c21b146200026f5780631ed7831c14620002905780632b3297f914620002a95780633e5e3c2314620002ca57600080fd5b80630a9254e414620001fa5780630dfe1681146200020657806316f0115b146200023f575b600080fd5b6200020462000506565b005b600554620002279073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000236919062002203565b60405180910390f35b600254620002609073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000236919062002277565b600454620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200029a62000512565b604051620002369190620022e4565b600154620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200029a62000583565b6200029a620005f2565b620002f5620002ef36600462002372565b62000661565b604051620002369190620023de565b620002046200031536600462002407565b6200080a565b620003256200086a565b60405162000236919062002575565b6006546200035a9074010000000000000000000000000000000000000000900460ff1681565b60405162000236919062002593565b620002046200097f565b600054620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200039e62000a5c565b60405162000236919062002684565b6200032562000b36565b620003c162000c42565b604051620002369190620026b6565b600354620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200039e62000ce5565b6200035a62000dbf565b6200020462000416366004620026c6565b62000f79565b600654620002279073ffffffffffffffffffffffffffffffffffffffff1681565b620004546200044e366004620026e9565b620011d3565b6040516200023694939291906200275c565b6002546200048e9074010000000000000000000000000000000000000000900462ffffff1681565b604051620002369190620027ae565b620002f5620004ae366004620027be565b620011f9565b6200020462001317565b6200029a620018c4565b62000204620004d936600462002806565b62001933565b6006546200035a907501000000000000000000000000000000000000000000900460ff1681565b6200051062001317565b565b606060138054806020026020016040519081016040528092919081815260200182805480156200057957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620006be921690879060040162002844565b6020604051808303816000875af1158015620006de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200070491906200287a565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620007ba9084906004016200293c565b6020604051808303816000875af1158015620007da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080091906200295b565b9695505050505050565b600060026200082285670de0b6b3a7640000620029ad565b6200082e919062002a02565b9050600060026200084386620f4240620029ad565b6200084f919062002a02565b90506200085f82828686620011d3565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200097657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200095d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620009095790505b505050505081525050815260200190600101906200088e565b50505050905090565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620009e1903090670de0b6b3a76400009060040162002a38565b600060405180830381600087803b158015620009fc57600080fd5b505af115801562000a11573d6000803e3d6000fd5b50506003546004546000935062000a4c925073ffffffffffffffffffffffffffffffffffffffff9182169116670de0b6b3a7640000620011f9565b905062000a598162001a07565b50565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200097657838290600052602060002001805462000aa29062002a86565b80601f016020809104026020016040519081016040528092919081815260200182805462000ad09062002a86565b801562000b215780601f1062000af55761010080835404028352916020019162000b21565b820191906000526020600020905b81548152906001019060200180831162000b0357829003601f168201915b50505050508152602001906001019062000a80565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200097657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000c2957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000bd55790505b5050505050815250508152602001906001019062000b5a565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd9919062002b06565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b828210156200097657838290600052602060002001805462000d2b9062002a86565b80601f016020809104026020016040519081016040528092919081815260200182805462000d599062002a86565b801562000daa5780601f1062000d7e5761010080835404028352916020019162000daa565b820191906000526020600020905b81548152906001019060200180831162000d8c57829003601f168201915b50505050508152602001906001019062000d09565b600654600090760100000000000000000000000000000000000000000000900460ff161562000e0c5750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562000f7457604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49062000e9a9083907f6661696c656400000000000000000000000000000000000000000000000000009060200162002844565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000ed8929160200162002bca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000f129162002be7565b6000604051808303816000865af19150503d806000811462000f51576040519150601f19603f3d011682016040523d82523d6000602084013e62000f56565b606091505b509150508080602001905181019062000f7091906200287a565b9150505b919050565b62000fb96040518060400160405280600b81526020017f73776170546f507269636500000000000000000000000000000000000000000081525062001a9a565b62000fda8173ffffffffffffffffffffffffffffffffffffffff1662001a07565b600062000fe662000c42565b9050620010098173ffffffffffffffffffffffffffffffffffffffff1662001a07565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001041575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620010965760065473ffffffffffffffffffffffffffffffffffffffff16620010b0565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620011075760065473ffffffffffffffffffffffffffffffffffffffff1662001121565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f199062001189903090859060040162002844565b600060405180830381600087803b158015620011a457600080fd5b505af1158015620011b9573d6000803e3d6000fd5b50505050620011cb8383838862000661565b505050505050565b600080600080620011e78888888862001b2d565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001290919062002c0e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614620012ea57620012e4600173fffd8963efd1fc6a506488495d951d5263988d2662002c31565b620012fc565b620012fc6401000276a3600162002c62565b90506200130c8585858462000661565b9150505b9392505050565b60126040516200132790620021c4565b62001333919062002d14565b604051809103906000f08015801562001350573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d454800000000000000000000000000000000000000000000000000000000006020820152620013d49062001a9a565b600354620013f89073ffffffffffffffffffffffffffffffffffffffff1662002110565b60066040516200140890620021c4565b62001414919062002db3565b604051809103906000f08015801562001431573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f55535844000000000000000000000000000000000000000000000000000000006020820152620014b59062001a9a565b600454620014d99073ffffffffffffffffffffffffffffffffffffffff1662002110565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff910416620015ae5760035473ffffffffffffffffffffffffffffffffffffffff16620015c8565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff166200164f5760045473ffffffffffffffffffffffffffffffffffffffff1662001669565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff16620016e4576910c6f7a0b5ed8d36b4c7620016f5565b6e0f42400000000000000000000000005b90506200171b604051806080016040528060538152602001620042e26053913962001a9a565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead56294620017a294908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162002dda565b6020604051808303816000875af1158015620017c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e8919062002c0e565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c0000000000000000000000000000000000000000000000000060208201526200186c9062001a9a565b600254620018909073ffffffffffffffffffffffffffffffffffffffff1662002110565b62000a59629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003158162002e17565b60606012805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b60008160020b136200194457600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620019b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019db919062002b06565b505050505091505062001a02838383620019f6919062002e5f565b62000315858562002eb6565b505050565b62000a598160405160240162001a1e9190620023de565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526200219e565b62000a598160405160240162001ab1919062002f0c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526200219e565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f199062001b909030908c9060040162002844565b600060405180830381600087803b15801562001bab57600080fd5b505af115801562001bc0573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b3935062001c2392909116908c9060040162002844565b6020604051808303816000875af115801562001c43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c6991906200287a565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f199162001cc39130918c910162002844565b600060405180830381600087803b15801562001cde57600080fd5b505af115801562001cf3573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b3945062001d569391909216918c910162002844565b6020604051808303816000875af115801562001d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d9c91906200287a565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001e0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e34919062002f21565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062001e8b908a90859060040162002f4f565b602060405180830381865af415801562001ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ecf919062002f21565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062001f26908990859060040162002f4f565b602060405180830381865af415801562001f44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f6a919062002f21565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620020419185910162003052565b6080604051808303816000875af115801562002061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200208791906200308a565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620020d09062001a9a565b620020ed856fffffffffffffffffffffffffffffffff1662001a07565b620020f88462001a07565b620021038362001a07565b5050945094509450949050565b62000a598160405160240162002127919062002203565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000a598180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd80620030e583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b620021fd81620021d2565b82525050565b60208101620021ec8284620021f2565b6000620021ec73ffffffffffffffffffffffffffffffffffffffff831662002239565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000620021ec8262002213565b6000620021ec8262002252565b620021fd816200225f565b60208101620021ec82846200226c565b620022938282620021f2565b5060200190565b6000620022a5825190565b808452602093840193830160005b82811015620022da57620022c986835162002287565b9550602082019150600101620022b3565b5093949350505050565b6020815260006200131060208301846200229a565b6000620021ec82620021d2565b6200231181620022f9565b811462000a5957600080fd5b8035806200232b8162002306565b5092915050565b8062002311565b8035806200232b8162002332565b73ffffffffffffffffffffffffffffffffffffffff811662002311565b8035806200232b8162002347565b600080600080608085870312156200238d576200238d600080fd5b6200239986866200231d565b9350620023aa86602087016200231d565b9250620023bb866040870162002339565b9150620023cc866060870162002364565b905092959194509250565b80620021fd565b60208101620021ec8284620023d7565b620023118160020b90565b8035806200232b81620023ee565b600080600060608486031215620024215762002421600080fd5b6200242d858562002339565b92506200243e8560208601620023f9565b91506200244f8560408601620023f9565b90509250925092565b7fffffffff000000000000000000000000000000000000000000000000000000008116620021fd565b62002293828262002458565b600062002498825190565b808452602093840193830160005b82811015620022da57620024bc86835162002481565b9550602082019150600101620024a6565b620024da828251620021f2565b6000602082015160406020850152620024f760408501826200248d565b949350505050565b6000620013108383620024cd565b600062002518825190565b808452602084018094508160051b8101620025338560200190565b60005b848110156200256957838303885262002551838351620024ff565b92506020820160209890980197915060010162002536565b50909695505050505050565b6020815260006200131060208301846200250d565b801515620021fd565b60208101620021ec82846200258a565b60005b83811015620025c0578181015183820152602001620025a6565b50506000910152565b6000620025d4825190565b80845260208401620025eb828260208701620025a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000620013108383620025c9565b600062002633825190565b808452602084018094508160051b81016200264e8560200190565b60005b84811015620025695783830388526200266c8383516200261a565b92506020820160209890980197915060010162002651565b60208152600062001310602083018462002628565b73ffffffffffffffffffffffffffffffffffffffff8116620021fd565b60208101620021ec828462002699565b600060208284031215620026dd57620026dd600080fd5b62001310838362002364565b60008060008060808587031215620027045762002704600080fd5b62002710868662002339565b935062002721866020870162002339565b9250620027328660408701620023f9565b9150620023cc8660608701620023f9565b6fffffffffffffffffffffffffffffffff8116620021fd565b608081016200276c8287620023d7565b6200277b602083018662002743565b6200278a6040830185620023d7565b620027996060830184620023d7565b95945050505050565b62ffffff8116620021fd565b60208101620021ec8284620027a2565b600080600060608486031215620027d857620027d8600080fd5b620027e485856200231d565b9250620027f585602086016200231d565b91506200244f856040860162002339565b600080604083850312156200281e576200281e600080fd5b6200282a848462002339565b91506200283b8460208501620023f9565b90509250929050565b60408101620028548285620021f2565b620013106020830184620023d7565b80151562002311565b8051806200232b8162002863565b600060208284031215620028915762002891600080fd5b6200131083836200286c565b620028aa828251620021f2565b6020810151620028be6020840182620021f2565b506040810151620028d36040840182620027a2565b506060810151620028e86060840182620021f2565b506080810151620028fd6080840182620023d7565b5060a08101516200291260a0840182620023d7565b5060c08101516200292760c0840182620023d7565b5060e081015162001a0260e084018262002699565b6101008101620021ec82846200289d565b8051806200232b8162002332565b600060208284031215620029725762002972600080fd5b6200131083836200294d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181028183828215838204831417620029ca57620029ca6200297e565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062002a165762002a16620029d3565b90049392505050565b6000620021ec620022368381565b620021fd8162002a1f565b6040810162002a488285620021f2565b62001310602083018462002a2d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168062002a9d57607f821692505b60208310810362002ab25762002ab262002a57565b5050919050565b8051806200232b8162002347565b8051806200232b81620023ee565b61ffff811662002311565b8051806200232b8162002ad5565b60ff811662002311565b8051806200232b8162002aee565b600080600080600080600060e0888a03121562002b265762002b26600080fd5b62002b32898962002ab9565b965062002b438960208a0162002ac7565b955062002b548960408a0162002ae0565b945062002b658960608a0162002ae0565b935062002b768960808a0162002ae0565b925062002b878960a08a0162002af8565b915062002b988960c08a016200286c565b905092959891949750929550565b600062002bb1825190565b8362002bc2828260208701620025a3565b019392505050565b62002bd6818462002458565b6000620024f7600483018462002ba6565b600062001310828462002ba6565b6200231181620021d2565b8051806200232b8162002bf5565b60006020828403121562002c255762002c25600080fd5b62001310838362002c00565b73ffffffffffffffffffffffffffffffffffffffff828116828216039081908111156200232b576200232b6200297e565b73ffffffffffffffffffffffffffffffffffffffff828116828216019081908111156200232b576200232b6200297e565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262002cc1565b600060ff8216620021ec565b620021fd8162002cfd565b60608152600062002d286060830162002c93565b828103602084015262002d3b8162002cca565b915050620021ec604083018462002d09565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262002cc1565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262002cc1565b60608152600062002dc76060830162002d4d565b828103602084015262002d3b8162002d80565b6080810162002dea8287620021f2565b62002df96020830186620021f2565b62002e086040830185620027a2565b62002799606083018462002699565b600062002e248260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362002e565762002e566200297e565b60000392915050565b600062002e6c8260020b90565b62002e778460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff821317156200232b576200232b6200297e565b600062002ec38260020b90565b62002ece8460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217156200232b576200232b6200297e565b602081526000620013106020830184620025c9565b60006020828403121562002f385762002f38600080fd5b62001310838362002ac7565b620021fd8160020b90565b6040810162002f5f828562002f44565b62001310602083018462002f44565b62002f7b828251620021f2565b602081015162002f8f6020840182620021f2565b50604081015162002fa46040840182620027a2565b50606081015162002fb9606084018262002f44565b50608081015162002fce608084018262002f44565b5060a081015162002fe360a0840182620023d7565b5060c081015162002ff860c0840182620023d7565b5060e08101516200300d60e0840182620023d7565b5061010081015162003024610100840182620023d7565b506101208101516200303b610120840182620021f2565b5061014081015162001a02610140840182620023d7565b6101608101620021ec828462002f6e565b6fffffffffffffffffffffffffffffffff811662002311565b8051806200232b8162003063565b60008060008060808587031215620030a557620030a5600080fd5b620030b186866200294d565b9350620030c286602087016200307c565b9250620030d386604087016200294d565b9150620023cc86606087016200294d56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220e63bb3ee50a1e4bca5b62995fdc7eb1756375381dbdc6a7ad839e857f345b06364736f6c63430008160033", + "object": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c058615641781556006805460ff60a81b1916600160a81b179055600a805460ff1916909117905534801561007857600080fd5b5061436a806100886000396000f3fe60806040523480156200001157600080fd5b5060043610620001f55760003560e01c806385226c811162000119578063d21220a711620000af578063e1c7392a116200007a578063e1c7392a14620004b4578063e20c9f7114620004be578063e3baf41a14620004c8578063fa7626d414620004df57600080fd5b8063d21220a7146200041c578063d6f13002146200043d578063ddca3f431462000466578063df791e50146200049d57600080fd5b8063a54a72b711620000f0578063a54a72b714620003d0578063b5508aa914620003f1578063ba414fa614620003fb578063c578d91d146200040557600080fd5b806385226c811462000394578063916a17c614620003ad578063a035b1fe14620003b757600080fd5b80633f7286f4116200018f57806366d9a9a0116200016657806366d9a9a0146200031b57806367e368fc14620003345780636e008a0314620003695780637303e913146200037357600080fd5b80633f7286f414620002d45780634a09d3dd14620002de57806353486e2f146200030457600080fd5b80631bf6c21b11620001d05780631bf6c21b146200026f5780631ed7831c14620002905780632b3297f914620002a95780633e5e3c2314620002ca57600080fd5b80630a9254e414620001fa5780630dfe1681146200020657806316f0115b146200023f575b600080fd5b6200020462000506565b005b600554620002279073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000236919062002203565b60405180910390f35b600254620002609073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000236919062002277565b600454620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200029a62000512565b604051620002369190620022e4565b600154620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200029a62000583565b6200029a620005f2565b620002f5620002ef36600462002372565b62000661565b604051620002369190620023de565b620002046200031536600462002407565b6200080a565b620003256200086a565b60405162000236919062002575565b6006546200035a9074010000000000000000000000000000000000000000900460ff1681565b60405162000236919062002593565b620002046200097f565b600054620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200039e62000a5c565b60405162000236919062002684565b6200032562000b36565b620003c162000c42565b604051620002369190620026b6565b600354620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200039e62000ce5565b6200035a62000dbf565b6200020462000416366004620026c6565b62000f79565b600654620002279073ffffffffffffffffffffffffffffffffffffffff1681565b620004546200044e366004620026e9565b620011d3565b6040516200023694939291906200275c565b6002546200048e9074010000000000000000000000000000000000000000900462ffffff1681565b604051620002369190620027ae565b620002f5620004ae366004620027be565b620011f9565b6200020462001317565b6200029a620018c4565b62000204620004d936600462002806565b62001933565b6006546200035a907501000000000000000000000000000000000000000000900460ff1681565b6200051062001317565b565b606060138054806020026020016040519081016040528092919081815260200182805480156200057957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620006be921690879060040162002844565b6020604051808303816000875af1158015620006de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200070491906200287a565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620007ba9084906004016200293c565b6020604051808303816000875af1158015620007da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080091906200295b565b9695505050505050565b600060026200082285670de0b6b3a7640000620029ad565b6200082e919062002a02565b9050600060026200084386620f4240620029ad565b6200084f919062002a02565b90506200085f82828686620011d3565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200097657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200095d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620009095790505b505050505081525050815260200190600101906200088e565b50505050905090565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620009e1903090670de0b6b3a76400009060040162002a38565b600060405180830381600087803b158015620009fc57600080fd5b505af115801562000a11573d6000803e3d6000fd5b50506003546004546000935062000a4c925073ffffffffffffffffffffffffffffffffffffffff9182169116670de0b6b3a7640000620011f9565b905062000a598162001a07565b50565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200097657838290600052602060002001805462000aa29062002a86565b80601f016020809104026020016040519081016040528092919081815260200182805462000ad09062002a86565b801562000b215780601f1062000af55761010080835404028352916020019162000b21565b820191906000526020600020905b81548152906001019060200180831162000b0357829003601f168201915b50505050508152602001906001019062000a80565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200097657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000c2957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000bd55790505b5050505050815250508152602001906001019062000b5a565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd9919062002b06565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b828210156200097657838290600052602060002001805462000d2b9062002a86565b80601f016020809104026020016040519081016040528092919081815260200182805462000d599062002a86565b801562000daa5780601f1062000d7e5761010080835404028352916020019162000daa565b820191906000526020600020905b81548152906001019060200180831162000d8c57829003601f168201915b50505050508152602001906001019062000d09565b600654600090760100000000000000000000000000000000000000000000900460ff161562000e0c5750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562000f7457604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49062000e9a9083907f6661696c656400000000000000000000000000000000000000000000000000009060200162002844565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000ed8929160200162002bca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000f129162002be7565b6000604051808303816000865af19150503d806000811462000f51576040519150601f19603f3d011682016040523d82523d6000602084013e62000f56565b606091505b509150508080602001905181019062000f7091906200287a565b9150505b919050565b62000fb96040518060400160405280600b81526020017f73776170546f507269636500000000000000000000000000000000000000000081525062001a9a565b62000fda8173ffffffffffffffffffffffffffffffffffffffff1662001a07565b600062000fe662000c42565b9050620010098173ffffffffffffffffffffffffffffffffffffffff1662001a07565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001041575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620010965760065473ffffffffffffffffffffffffffffffffffffffff16620010b0565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620011075760065473ffffffffffffffffffffffffffffffffffffffff1662001121565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f199062001189903090859060040162002844565b600060405180830381600087803b158015620011a457600080fd5b505af1158015620011b9573d6000803e3d6000fd5b50505050620011cb8383838862000661565b505050505050565b600080600080620011e78888888862001b2d565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001290919062002c0e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614620012ea57620012e4600173fffd8963efd1fc6a506488495d951d5263988d2662002c31565b620012fc565b620012fc6401000276a3600162002c62565b90506200130c8585858462000661565b9150505b9392505050565b60126040516200132790620021c4565b62001333919062002d14565b604051809103906000f08015801562001350573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d454800000000000000000000000000000000000000000000000000000000006020820152620013d49062001a9a565b600354620013f89073ffffffffffffffffffffffffffffffffffffffff1662002110565b60066040516200140890620021c4565b62001414919062002db3565b604051809103906000f08015801562001431573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f55535844000000000000000000000000000000000000000000000000000000006020820152620014b59062001a9a565b600454620014d99073ffffffffffffffffffffffffffffffffffffffff1662002110565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff910416620015ae5760035473ffffffffffffffffffffffffffffffffffffffff16620015c8565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff166200164f5760045473ffffffffffffffffffffffffffffffffffffffff1662001669565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff16620016e4576910c6f7a0b5ed8d36b4c7620016f5565b6e0f42400000000000000000000000005b90506200171b604051806080016040528060538152602001620042e26053913962001a9a565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead56294620017a294908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162002dda565b6020604051808303816000875af1158015620017c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e8919062002c0e565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c0000000000000000000000000000000000000000000000000060208201526200186c9062001a9a565b600254620018909073ffffffffffffffffffffffffffffffffffffffff1662002110565b62000a59629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003158162002e17565b60606012805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b60008160020b136200194457600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620019b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019db919062002b06565b505050505091505062001a02838383620019f6919062002e5f565b62000315858562002eb6565b505050565b62000a598160405160240162001a1e9190620023de565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526200219e565b62000a598160405160240162001ab1919062002f0c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526200219e565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f199062001b909030908c9060040162002844565b600060405180830381600087803b15801562001bab57600080fd5b505af115801562001bc0573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b3935062001c2392909116908c9060040162002844565b6020604051808303816000875af115801562001c43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c6991906200287a565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f199162001cc39130918c910162002844565b600060405180830381600087803b15801562001cde57600080fd5b505af115801562001cf3573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b3945062001d569391909216918c910162002844565b6020604051808303816000875af115801562001d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d9c91906200287a565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001e0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e34919062002f21565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062001e8b908a90859060040162002f4f565b602060405180830381865af415801562001ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ecf919062002f21565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062001f26908990859060040162002f4f565b602060405180830381865af415801562001f44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f6a919062002f21565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620020419185910162003052565b6080604051808303816000875af115801562002061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200208791906200308a565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620020d09062001a9a565b620020ed856fffffffffffffffffffffffffffffffff1662001a07565b620020f88462001a07565b620021038362001a07565b5050945094509450949050565b62000a598160405160240162002127919062002203565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000a598180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd80620030e583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b620021fd81620021d2565b82525050565b60208101620021ec8284620021f2565b6000620021ec73ffffffffffffffffffffffffffffffffffffffff831662002239565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000620021ec8262002213565b6000620021ec8262002252565b620021fd816200225f565b60208101620021ec82846200226c565b620022938282620021f2565b5060200190565b6000620022a5825190565b808452602093840193830160005b82811015620022da57620022c986835162002287565b9550602082019150600101620022b3565b5093949350505050565b6020815260006200131060208301846200229a565b6000620021ec82620021d2565b6200231181620022f9565b811462000a5957600080fd5b8035806200232b8162002306565b5092915050565b8062002311565b8035806200232b8162002332565b73ffffffffffffffffffffffffffffffffffffffff811662002311565b8035806200232b8162002347565b600080600080608085870312156200238d576200238d600080fd5b6200239986866200231d565b9350620023aa86602087016200231d565b9250620023bb866040870162002339565b9150620023cc866060870162002364565b905092959194509250565b80620021fd565b60208101620021ec8284620023d7565b620023118160020b90565b8035806200232b81620023ee565b600080600060608486031215620024215762002421600080fd5b6200242d858562002339565b92506200243e8560208601620023f9565b91506200244f8560408601620023f9565b90509250925092565b7fffffffff000000000000000000000000000000000000000000000000000000008116620021fd565b62002293828262002458565b600062002498825190565b808452602093840193830160005b82811015620022da57620024bc86835162002481565b9550602082019150600101620024a6565b620024da828251620021f2565b6000602082015160406020850152620024f760408501826200248d565b949350505050565b6000620013108383620024cd565b600062002518825190565b808452602084018094508160051b8101620025338560200190565b60005b848110156200256957838303885262002551838351620024ff565b92506020820160209890980197915060010162002536565b50909695505050505050565b6020815260006200131060208301846200250d565b801515620021fd565b60208101620021ec82846200258a565b60005b83811015620025c0578181015183820152602001620025a6565b50506000910152565b6000620025d4825190565b80845260208401620025eb828260208701620025a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000620013108383620025c9565b600062002633825190565b808452602084018094508160051b81016200264e8560200190565b60005b84811015620025695783830388526200266c8383516200261a565b92506020820160209890980197915060010162002651565b60208152600062001310602083018462002628565b73ffffffffffffffffffffffffffffffffffffffff8116620021fd565b60208101620021ec828462002699565b600060208284031215620026dd57620026dd600080fd5b62001310838362002364565b60008060008060808587031215620027045762002704600080fd5b62002710868662002339565b935062002721866020870162002339565b9250620027328660408701620023f9565b9150620023cc8660608701620023f9565b6fffffffffffffffffffffffffffffffff8116620021fd565b608081016200276c8287620023d7565b6200277b602083018662002743565b6200278a6040830185620023d7565b620027996060830184620023d7565b95945050505050565b62ffffff8116620021fd565b60208101620021ec8284620027a2565b600080600060608486031215620027d857620027d8600080fd5b620027e485856200231d565b9250620027f585602086016200231d565b91506200244f856040860162002339565b600080604083850312156200281e576200281e600080fd5b6200282a848462002339565b91506200283b8460208501620023f9565b90509250929050565b60408101620028548285620021f2565b620013106020830184620023d7565b80151562002311565b8051806200232b8162002863565b600060208284031215620028915762002891600080fd5b6200131083836200286c565b620028aa828251620021f2565b6020810151620028be6020840182620021f2565b506040810151620028d36040840182620027a2565b506060810151620028e86060840182620021f2565b506080810151620028fd6080840182620023d7565b5060a08101516200291260a0840182620023d7565b5060c08101516200292760c0840182620023d7565b5060e081015162001a0260e084018262002699565b6101008101620021ec82846200289d565b8051806200232b8162002332565b600060208284031215620029725762002972600080fd5b6200131083836200294d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181028183828215838204831417620029ca57620029ca6200297e565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062002a165762002a16620029d3565b90049392505050565b6000620021ec620022368381565b620021fd8162002a1f565b6040810162002a488285620021f2565b62001310602083018462002a2d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168062002a9d57607f821692505b60208310810362002ab25762002ab262002a57565b5050919050565b8051806200232b8162002347565b8051806200232b81620023ee565b61ffff811662002311565b8051806200232b8162002ad5565b60ff811662002311565b8051806200232b8162002aee565b600080600080600080600060e0888a03121562002b265762002b26600080fd5b62002b32898962002ab9565b965062002b438960208a0162002ac7565b955062002b548960408a0162002ae0565b945062002b658960608a0162002ae0565b935062002b768960808a0162002ae0565b925062002b878960a08a0162002af8565b915062002b988960c08a016200286c565b905092959891949750929550565b600062002bb1825190565b8362002bc2828260208701620025a3565b019392505050565b62002bd6818462002458565b6000620024f7600483018462002ba6565b600062001310828462002ba6565b6200231181620021d2565b8051806200232b8162002bf5565b60006020828403121562002c255762002c25600080fd5b62001310838362002c00565b73ffffffffffffffffffffffffffffffffffffffff828116828216039081908111156200232b576200232b6200297e565b73ffffffffffffffffffffffffffffffffffffffff828116828216019081908111156200232b576200232b6200297e565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262002cc1565b600060ff8216620021ec565b620021fd8162002cfd565b60608152600062002d286060830162002c93565b828103602084015262002d3b8162002cca565b915050620021ec604083018462002d09565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262002cc1565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262002cc1565b60608152600062002dc76060830162002d4d565b828103602084015262002d3b8162002d80565b6080810162002dea8287620021f2565b62002df96020830186620021f2565b62002e086040830185620027a2565b62002799606083018462002699565b600062002e248260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362002e565762002e566200297e565b60000392915050565b600062002e6c8260020b90565b62002e778460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff821317156200232b576200232b6200297e565b600062002ec38260020b90565b62002ece8460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217156200232b576200232b6200297e565b602081526000620013106020830184620025c9565b60006020828403121562002f385762002f38600080fd5b62001310838362002ac7565b620021fd8160020b90565b6040810162002f5f828562002f44565b62001310602083018462002f44565b62002f7b828251620021f2565b602081015162002f8f6020840182620021f2565b50604081015162002fa46040840182620027a2565b50606081015162002fb9606084018262002f44565b50608081015162002fce608084018262002f44565b5060a081015162002fe360a0840182620023d7565b5060c081015162002ff860c0840182620023d7565b5060e08101516200300d60e0840182620023d7565b5061010081015162003024610100840182620023d7565b506101208101516200303b610120840182620021f2565b5061014081015162001a02610140840182620023d7565b6101608101620021ec828462002f6e565b6fffffffffffffffffffffffffffffffff811662002311565b8051806200232b8162003063565b60008060008060808587031215620030a557620030a5600080fd5b620030b186866200294d565b9350620030c286602087016200307c565b9250620030d386604087016200294d565b9150620023cc86606087016200294d56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca264697066735822122013c3b1a97809fe96c102f8c4b8d469a43bae3102b478789040bbf3abf68c758464736f6c63430008160033", "sourceMap": "199:261:67:-:0;;;612:87:63;;;-1:-1:-1;;;;;;612:87:63;;;644:42:50;612:87:63;;;;;705:58;;;;;765:42:50;705:58:63;;;1572:26:0;;;-1:-1:-1;;;;1572:26:0;-1:-1:-1;;;1572:26:0;;;3126:44:4;;;-1:-1:-1;;3126:44:4;;;;;;199:261:67;;;;;;;;;;;;;;;;", "linkReferences": { "src/Util.sol": { @@ -855,7 +855,7 @@ } }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620001f55760003560e01c806385226c811162000119578063d21220a711620000af578063e1c7392a116200007a578063e1c7392a14620004b4578063e20c9f7114620004be578063e3baf41a14620004c8578063fa7626d414620004df57600080fd5b8063d21220a7146200041c578063d6f13002146200043d578063ddca3f431462000466578063df791e50146200049d57600080fd5b8063a54a72b711620000f0578063a54a72b714620003d0578063b5508aa914620003f1578063ba414fa614620003fb578063c578d91d146200040557600080fd5b806385226c811462000394578063916a17c614620003ad578063a035b1fe14620003b757600080fd5b80633f7286f4116200018f57806366d9a9a0116200016657806366d9a9a0146200031b57806367e368fc14620003345780636e008a0314620003695780637303e913146200037357600080fd5b80633f7286f414620002d45780634a09d3dd14620002de57806353486e2f146200030457600080fd5b80631bf6c21b11620001d05780631bf6c21b146200026f5780631ed7831c14620002905780632b3297f914620002a95780633e5e3c2314620002ca57600080fd5b80630a9254e414620001fa5780630dfe1681146200020657806316f0115b146200023f575b600080fd5b6200020462000506565b005b600554620002279073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000236919062002203565b60405180910390f35b600254620002609073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000236919062002277565b600454620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200029a62000512565b604051620002369190620022e4565b600154620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200029a62000583565b6200029a620005f2565b620002f5620002ef36600462002372565b62000661565b604051620002369190620023de565b620002046200031536600462002407565b6200080a565b620003256200086a565b60405162000236919062002575565b6006546200035a9074010000000000000000000000000000000000000000900460ff1681565b60405162000236919062002593565b620002046200097f565b600054620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200039e62000a5c565b60405162000236919062002684565b6200032562000b36565b620003c162000c42565b604051620002369190620026b6565b600354620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200039e62000ce5565b6200035a62000dbf565b6200020462000416366004620026c6565b62000f79565b600654620002279073ffffffffffffffffffffffffffffffffffffffff1681565b620004546200044e366004620026e9565b620011d3565b6040516200023694939291906200275c565b6002546200048e9074010000000000000000000000000000000000000000900462ffffff1681565b604051620002369190620027ae565b620002f5620004ae366004620027be565b620011f9565b6200020462001317565b6200029a620018c4565b62000204620004d936600462002806565b62001933565b6006546200035a907501000000000000000000000000000000000000000000900460ff1681565b6200051062001317565b565b606060138054806020026020016040519081016040528092919081815260200182805480156200057957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620006be921690879060040162002844565b6020604051808303816000875af1158015620006de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200070491906200287a565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620007ba9084906004016200293c565b6020604051808303816000875af1158015620007da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080091906200295b565b9695505050505050565b600060026200082285670de0b6b3a7640000620029ad565b6200082e919062002a02565b9050600060026200084386620f4240620029ad565b6200084f919062002a02565b90506200085f82828686620011d3565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200097657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200095d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620009095790505b505050505081525050815260200190600101906200088e565b50505050905090565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620009e1903090670de0b6b3a76400009060040162002a38565b600060405180830381600087803b158015620009fc57600080fd5b505af115801562000a11573d6000803e3d6000fd5b50506003546004546000935062000a4c925073ffffffffffffffffffffffffffffffffffffffff9182169116670de0b6b3a7640000620011f9565b905062000a598162001a07565b50565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200097657838290600052602060002001805462000aa29062002a86565b80601f016020809104026020016040519081016040528092919081815260200182805462000ad09062002a86565b801562000b215780601f1062000af55761010080835404028352916020019162000b21565b820191906000526020600020905b81548152906001019060200180831162000b0357829003601f168201915b50505050508152602001906001019062000a80565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200097657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000c2957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000bd55790505b5050505050815250508152602001906001019062000b5a565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd9919062002b06565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b828210156200097657838290600052602060002001805462000d2b9062002a86565b80601f016020809104026020016040519081016040528092919081815260200182805462000d599062002a86565b801562000daa5780601f1062000d7e5761010080835404028352916020019162000daa565b820191906000526020600020905b81548152906001019060200180831162000d8c57829003601f168201915b50505050508152602001906001019062000d09565b600654600090760100000000000000000000000000000000000000000000900460ff161562000e0c5750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562000f7457604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49062000e9a9083907f6661696c656400000000000000000000000000000000000000000000000000009060200162002844565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000ed8929160200162002bca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000f129162002be7565b6000604051808303816000865af19150503d806000811462000f51576040519150601f19603f3d011682016040523d82523d6000602084013e62000f56565b606091505b509150508080602001905181019062000f7091906200287a565b9150505b919050565b62000fb96040518060400160405280600b81526020017f73776170546f507269636500000000000000000000000000000000000000000081525062001a9a565b62000fda8173ffffffffffffffffffffffffffffffffffffffff1662001a07565b600062000fe662000c42565b9050620010098173ffffffffffffffffffffffffffffffffffffffff1662001a07565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001041575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620010965760065473ffffffffffffffffffffffffffffffffffffffff16620010b0565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620011075760065473ffffffffffffffffffffffffffffffffffffffff1662001121565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f199062001189903090859060040162002844565b600060405180830381600087803b158015620011a457600080fd5b505af1158015620011b9573d6000803e3d6000fd5b50505050620011cb8383838862000661565b505050505050565b600080600080620011e78888888862001b2d565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001290919062002c0e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614620012ea57620012e4600173fffd8963efd1fc6a506488495d951d5263988d2662002c31565b620012fc565b620012fc6401000276a3600162002c62565b90506200130c8585858462000661565b9150505b9392505050565b60126040516200132790620021c4565b62001333919062002d14565b604051809103906000f08015801562001350573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d454800000000000000000000000000000000000000000000000000000000006020820152620013d49062001a9a565b600354620013f89073ffffffffffffffffffffffffffffffffffffffff1662002110565b60066040516200140890620021c4565b62001414919062002db3565b604051809103906000f08015801562001431573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f55535844000000000000000000000000000000000000000000000000000000006020820152620014b59062001a9a565b600454620014d99073ffffffffffffffffffffffffffffffffffffffff1662002110565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff910416620015ae5760035473ffffffffffffffffffffffffffffffffffffffff16620015c8565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff166200164f5760045473ffffffffffffffffffffffffffffffffffffffff1662001669565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff16620016e4576910c6f7a0b5ed8d36b4c7620016f5565b6e0f42400000000000000000000000005b90506200171b604051806080016040528060538152602001620042e26053913962001a9a565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead56294620017a294908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162002dda565b6020604051808303816000875af1158015620017c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e8919062002c0e565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c0000000000000000000000000000000000000000000000000060208201526200186c9062001a9a565b600254620018909073ffffffffffffffffffffffffffffffffffffffff1662002110565b62000a59629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003158162002e17565b60606012805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b60008160020b136200194457600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620019b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019db919062002b06565b505050505091505062001a02838383620019f6919062002e5f565b62000315858562002eb6565b505050565b62000a598160405160240162001a1e9190620023de565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526200219e565b62000a598160405160240162001ab1919062002f0c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526200219e565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f199062001b909030908c9060040162002844565b600060405180830381600087803b15801562001bab57600080fd5b505af115801562001bc0573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b3935062001c2392909116908c9060040162002844565b6020604051808303816000875af115801562001c43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c6991906200287a565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f199162001cc39130918c910162002844565b600060405180830381600087803b15801562001cde57600080fd5b505af115801562001cf3573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b3945062001d569391909216918c910162002844565b6020604051808303816000875af115801562001d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d9c91906200287a565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001e0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e34919062002f21565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062001e8b908a90859060040162002f4f565b602060405180830381865af415801562001ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ecf919062002f21565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062001f26908990859060040162002f4f565b602060405180830381865af415801562001f44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f6a919062002f21565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620020419185910162003052565b6080604051808303816000875af115801562002061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200208791906200308a565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620020d09062001a9a565b620020ed856fffffffffffffffffffffffffffffffff1662001a07565b620020f88462001a07565b620021038362001a07565b5050945094509450949050565b62000a598160405160240162002127919062002203565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000a598180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd80620030e583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b620021fd81620021d2565b82525050565b60208101620021ec8284620021f2565b6000620021ec73ffffffffffffffffffffffffffffffffffffffff831662002239565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000620021ec8262002213565b6000620021ec8262002252565b620021fd816200225f565b60208101620021ec82846200226c565b620022938282620021f2565b5060200190565b6000620022a5825190565b808452602093840193830160005b82811015620022da57620022c986835162002287565b9550602082019150600101620022b3565b5093949350505050565b6020815260006200131060208301846200229a565b6000620021ec82620021d2565b6200231181620022f9565b811462000a5957600080fd5b8035806200232b8162002306565b5092915050565b8062002311565b8035806200232b8162002332565b73ffffffffffffffffffffffffffffffffffffffff811662002311565b8035806200232b8162002347565b600080600080608085870312156200238d576200238d600080fd5b6200239986866200231d565b9350620023aa86602087016200231d565b9250620023bb866040870162002339565b9150620023cc866060870162002364565b905092959194509250565b80620021fd565b60208101620021ec8284620023d7565b620023118160020b90565b8035806200232b81620023ee565b600080600060608486031215620024215762002421600080fd5b6200242d858562002339565b92506200243e8560208601620023f9565b91506200244f8560408601620023f9565b90509250925092565b7fffffffff000000000000000000000000000000000000000000000000000000008116620021fd565b62002293828262002458565b600062002498825190565b808452602093840193830160005b82811015620022da57620024bc86835162002481565b9550602082019150600101620024a6565b620024da828251620021f2565b6000602082015160406020850152620024f760408501826200248d565b949350505050565b6000620013108383620024cd565b600062002518825190565b808452602084018094508160051b8101620025338560200190565b60005b848110156200256957838303885262002551838351620024ff565b92506020820160209890980197915060010162002536565b50909695505050505050565b6020815260006200131060208301846200250d565b801515620021fd565b60208101620021ec82846200258a565b60005b83811015620025c0578181015183820152602001620025a6565b50506000910152565b6000620025d4825190565b80845260208401620025eb828260208701620025a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000620013108383620025c9565b600062002633825190565b808452602084018094508160051b81016200264e8560200190565b60005b84811015620025695783830388526200266c8383516200261a565b92506020820160209890980197915060010162002651565b60208152600062001310602083018462002628565b73ffffffffffffffffffffffffffffffffffffffff8116620021fd565b60208101620021ec828462002699565b600060208284031215620026dd57620026dd600080fd5b62001310838362002364565b60008060008060808587031215620027045762002704600080fd5b62002710868662002339565b935062002721866020870162002339565b9250620027328660408701620023f9565b9150620023cc8660608701620023f9565b6fffffffffffffffffffffffffffffffff8116620021fd565b608081016200276c8287620023d7565b6200277b602083018662002743565b6200278a6040830185620023d7565b620027996060830184620023d7565b95945050505050565b62ffffff8116620021fd565b60208101620021ec8284620027a2565b600080600060608486031215620027d857620027d8600080fd5b620027e485856200231d565b9250620027f585602086016200231d565b91506200244f856040860162002339565b600080604083850312156200281e576200281e600080fd5b6200282a848462002339565b91506200283b8460208501620023f9565b90509250929050565b60408101620028548285620021f2565b620013106020830184620023d7565b80151562002311565b8051806200232b8162002863565b600060208284031215620028915762002891600080fd5b6200131083836200286c565b620028aa828251620021f2565b6020810151620028be6020840182620021f2565b506040810151620028d36040840182620027a2565b506060810151620028e86060840182620021f2565b506080810151620028fd6080840182620023d7565b5060a08101516200291260a0840182620023d7565b5060c08101516200292760c0840182620023d7565b5060e081015162001a0260e084018262002699565b6101008101620021ec82846200289d565b8051806200232b8162002332565b600060208284031215620029725762002972600080fd5b6200131083836200294d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181028183828215838204831417620029ca57620029ca6200297e565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062002a165762002a16620029d3565b90049392505050565b6000620021ec620022368381565b620021fd8162002a1f565b6040810162002a488285620021f2565b62001310602083018462002a2d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168062002a9d57607f821692505b60208310810362002ab25762002ab262002a57565b5050919050565b8051806200232b8162002347565b8051806200232b81620023ee565b61ffff811662002311565b8051806200232b8162002ad5565b60ff811662002311565b8051806200232b8162002aee565b600080600080600080600060e0888a03121562002b265762002b26600080fd5b62002b32898962002ab9565b965062002b438960208a0162002ac7565b955062002b548960408a0162002ae0565b945062002b658960608a0162002ae0565b935062002b768960808a0162002ae0565b925062002b878960a08a0162002af8565b915062002b988960c08a016200286c565b905092959891949750929550565b600062002bb1825190565b8362002bc2828260208701620025a3565b019392505050565b62002bd6818462002458565b6000620024f7600483018462002ba6565b600062001310828462002ba6565b6200231181620021d2565b8051806200232b8162002bf5565b60006020828403121562002c255762002c25600080fd5b62001310838362002c00565b73ffffffffffffffffffffffffffffffffffffffff828116828216039081908111156200232b576200232b6200297e565b73ffffffffffffffffffffffffffffffffffffffff828116828216019081908111156200232b576200232b6200297e565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262002cc1565b600060ff8216620021ec565b620021fd8162002cfd565b60608152600062002d286060830162002c93565b828103602084015262002d3b8162002cca565b915050620021ec604083018462002d09565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262002cc1565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262002cc1565b60608152600062002dc76060830162002d4d565b828103602084015262002d3b8162002d80565b6080810162002dea8287620021f2565b62002df96020830186620021f2565b62002e086040830185620027a2565b62002799606083018462002699565b600062002e248260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362002e565762002e566200297e565b60000392915050565b600062002e6c8260020b90565b62002e778460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff821317156200232b576200232b6200297e565b600062002ec38260020b90565b62002ece8460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217156200232b576200232b6200297e565b602081526000620013106020830184620025c9565b60006020828403121562002f385762002f38600080fd5b62001310838362002ac7565b620021fd8160020b90565b6040810162002f5f828562002f44565b62001310602083018462002f44565b62002f7b828251620021f2565b602081015162002f8f6020840182620021f2565b50604081015162002fa46040840182620027a2565b50606081015162002fb9606084018262002f44565b50608081015162002fce608084018262002f44565b5060a081015162002fe360a0840182620023d7565b5060c081015162002ff860c0840182620023d7565b5060e08101516200300d60e0840182620023d7565b5061010081015162003024610100840182620023d7565b506101208101516200303b610120840182620021f2565b5061014081015162001a02610140840182620023d7565b6101608101620021ec828462002f6e565b6fffffffffffffffffffffffffffffffff811662002311565b8051806200232b8162003063565b60008060008060808587031215620030a557620030a5600080fd5b620030b186866200294d565b9350620030c286602087016200307c565b9250620030d386604087016200294d565b9150620023cc86606087016200294d56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220e63bb3ee50a1e4bca5b62995fdc7eb1756375381dbdc6a7ad839e857f345b06364736f6c63430008160033", + "object": "0x60806040523480156200001157600080fd5b5060043610620001f55760003560e01c806385226c811162000119578063d21220a711620000af578063e1c7392a116200007a578063e1c7392a14620004b4578063e20c9f7114620004be578063e3baf41a14620004c8578063fa7626d414620004df57600080fd5b8063d21220a7146200041c578063d6f13002146200043d578063ddca3f431462000466578063df791e50146200049d57600080fd5b8063a54a72b711620000f0578063a54a72b714620003d0578063b5508aa914620003f1578063ba414fa614620003fb578063c578d91d146200040557600080fd5b806385226c811462000394578063916a17c614620003ad578063a035b1fe14620003b757600080fd5b80633f7286f4116200018f57806366d9a9a0116200016657806366d9a9a0146200031b57806367e368fc14620003345780636e008a0314620003695780637303e913146200037357600080fd5b80633f7286f414620002d45780634a09d3dd14620002de57806353486e2f146200030457600080fd5b80631bf6c21b11620001d05780631bf6c21b146200026f5780631ed7831c14620002905780632b3297f914620002a95780633e5e3c2314620002ca57600080fd5b80630a9254e414620001fa5780630dfe1681146200020657806316f0115b146200023f575b600080fd5b6200020462000506565b005b600554620002279073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000236919062002203565b60405180910390f35b600254620002609073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000236919062002277565b600454620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200029a62000512565b604051620002369190620022e4565b600154620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200029a62000583565b6200029a620005f2565b620002f5620002ef36600462002372565b62000661565b604051620002369190620023de565b620002046200031536600462002407565b6200080a565b620003256200086a565b60405162000236919062002575565b6006546200035a9074010000000000000000000000000000000000000000900460ff1681565b60405162000236919062002593565b620002046200097f565b600054620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200039e62000a5c565b60405162000236919062002684565b6200032562000b36565b620003c162000c42565b604051620002369190620026b6565b600354620002609073ffffffffffffffffffffffffffffffffffffffff1681565b6200039e62000ce5565b6200035a62000dbf565b6200020462000416366004620026c6565b62000f79565b600654620002279073ffffffffffffffffffffffffffffffffffffffff1681565b620004546200044e366004620026e9565b620011d3565b6040516200023694939291906200275c565b6002546200048e9074010000000000000000000000000000000000000000900462ffffff1681565b604051620002369190620027ae565b620002f5620004ae366004620027be565b620011f9565b6200020462001317565b6200029a620018c4565b62000204620004d936600462002806565b62001933565b6006546200035a907501000000000000000000000000000000000000000000900460ff1681565b6200051062001317565b565b606060138054806020026020016040519081016040528092919081815260200182805480156200057957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620006be921690879060040162002844565b6020604051808303816000875af1158015620006de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200070491906200287a565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620007ba9084906004016200293c565b6020604051808303816000875af1158015620007da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080091906200295b565b9695505050505050565b600060026200082285670de0b6b3a7640000620029ad565b6200082e919062002a02565b9050600060026200084386620f4240620029ad565b6200084f919062002a02565b90506200085f82828686620011d3565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200097657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200095d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620009095790505b505050505081525050815260200190600101906200088e565b50505050905090565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620009e1903090670de0b6b3a76400009060040162002a38565b600060405180830381600087803b158015620009fc57600080fd5b505af115801562000a11573d6000803e3d6000fd5b50506003546004546000935062000a4c925073ffffffffffffffffffffffffffffffffffffffff9182169116670de0b6b3a7640000620011f9565b905062000a598162001a07565b50565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200097657838290600052602060002001805462000aa29062002a86565b80601f016020809104026020016040519081016040528092919081815260200182805462000ad09062002a86565b801562000b215780601f1062000af55761010080835404028352916020019162000b21565b820191906000526020600020905b81548152906001019060200180831162000b0357829003601f168201915b50505050508152602001906001019062000a80565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200097657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000c2957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000bd55790505b5050505050815250508152602001906001019062000b5a565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd9919062002b06565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b828210156200097657838290600052602060002001805462000d2b9062002a86565b80601f016020809104026020016040519081016040528092919081815260200182805462000d599062002a86565b801562000daa5780601f1062000d7e5761010080835404028352916020019162000daa565b820191906000526020600020905b81548152906001019060200180831162000d8c57829003601f168201915b50505050508152602001906001019062000d09565b600654600090760100000000000000000000000000000000000000000000900460ff161562000e0c5750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562000f7457604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49062000e9a9083907f6661696c656400000000000000000000000000000000000000000000000000009060200162002844565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000ed8929160200162002bca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000f129162002be7565b6000604051808303816000865af19150503d806000811462000f51576040519150601f19603f3d011682016040523d82523d6000602084013e62000f56565b606091505b509150508080602001905181019062000f7091906200287a565b9150505b919050565b62000fb96040518060400160405280600b81526020017f73776170546f507269636500000000000000000000000000000000000000000081525062001a9a565b62000fda8173ffffffffffffffffffffffffffffffffffffffff1662001a07565b600062000fe662000c42565b9050620010098173ffffffffffffffffffffffffffffffffffffffff1662001a07565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001041575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620010965760065473ffffffffffffffffffffffffffffffffffffffff16620010b0565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620011075760065473ffffffffffffffffffffffffffffffffffffffff1662001121565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f199062001189903090859060040162002844565b600060405180830381600087803b158015620011a457600080fd5b505af1158015620011b9573d6000803e3d6000fd5b50505050620011cb8383838862000661565b505050505050565b600080600080620011e78888888862001b2d565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001290919062002c0e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614620012ea57620012e4600173fffd8963efd1fc6a506488495d951d5263988d2662002c31565b620012fc565b620012fc6401000276a3600162002c62565b90506200130c8585858462000661565b9150505b9392505050565b60126040516200132790620021c4565b62001333919062002d14565b604051809103906000f08015801562001350573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d454800000000000000000000000000000000000000000000000000000000006020820152620013d49062001a9a565b600354620013f89073ffffffffffffffffffffffffffffffffffffffff1662002110565b60066040516200140890620021c4565b62001414919062002db3565b604051809103906000f08015801562001431573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f55535844000000000000000000000000000000000000000000000000000000006020820152620014b59062001a9a565b600454620014d99073ffffffffffffffffffffffffffffffffffffffff1662002110565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff910416620015ae5760035473ffffffffffffffffffffffffffffffffffffffff16620015c8565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff166200164f5760045473ffffffffffffffffffffffffffffffffffffffff1662001669565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff16620016e4576910c6f7a0b5ed8d36b4c7620016f5565b6e0f42400000000000000000000000005b90506200171b604051806080016040528060538152602001620042e26053913962001a9a565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead56294620017a294908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162002dda565b6020604051808303816000875af1158015620017c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e8919062002c0e565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c0000000000000000000000000000000000000000000000000060208201526200186c9062001a9a565b600254620018909073ffffffffffffffffffffffffffffffffffffffff1662002110565b62000a59629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003158162002e17565b60606012805480602002602001604051908101604052809291908181526020018280548015620005795760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116200054d575050505050905090565b60008160020b136200194457600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620019b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019db919062002b06565b505050505091505062001a02838383620019f6919062002e5f565b62000315858562002eb6565b505050565b62000a598160405160240162001a1e9190620023de565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526200219e565b62000a598160405160240162001ab1919062002f0c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526200219e565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f199062001b909030908c9060040162002844565b600060405180830381600087803b15801562001bab57600080fd5b505af115801562001bc0573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b3935062001c2392909116908c9060040162002844565b6020604051808303816000875af115801562001c43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c6991906200287a565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f199162001cc39130918c910162002844565b600060405180830381600087803b15801562001cde57600080fd5b505af115801562001cf3573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b3945062001d569391909216918c910162002844565b6020604051808303816000875af115801562001d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d9c91906200287a565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001e0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e34919062002f21565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062001e8b908a90859060040162002f4f565b602060405180830381865af415801562001ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ecf919062002f21565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062001f26908990859060040162002f4f565b602060405180830381865af415801562001f44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f6a919062002f21565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620020419185910162003052565b6080604051808303816000875af115801562002061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200208791906200308a565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620020d09062001a9a565b620020ed856fffffffffffffffffffffffffffffffff1662001a07565b620020f88462001a07565b620021038362001a07565b5050945094509450949050565b62000a598160405160240162002127919062002203565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000a598180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd80620030e583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b620021fd81620021d2565b82525050565b60208101620021ec8284620021f2565b6000620021ec73ffffffffffffffffffffffffffffffffffffffff831662002239565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000620021ec8262002213565b6000620021ec8262002252565b620021fd816200225f565b60208101620021ec82846200226c565b620022938282620021f2565b5060200190565b6000620022a5825190565b808452602093840193830160005b82811015620022da57620022c986835162002287565b9550602082019150600101620022b3565b5093949350505050565b6020815260006200131060208301846200229a565b6000620021ec82620021d2565b6200231181620022f9565b811462000a5957600080fd5b8035806200232b8162002306565b5092915050565b8062002311565b8035806200232b8162002332565b73ffffffffffffffffffffffffffffffffffffffff811662002311565b8035806200232b8162002347565b600080600080608085870312156200238d576200238d600080fd5b6200239986866200231d565b9350620023aa86602087016200231d565b9250620023bb866040870162002339565b9150620023cc866060870162002364565b905092959194509250565b80620021fd565b60208101620021ec8284620023d7565b620023118160020b90565b8035806200232b81620023ee565b600080600060608486031215620024215762002421600080fd5b6200242d858562002339565b92506200243e8560208601620023f9565b91506200244f8560408601620023f9565b90509250925092565b7fffffffff000000000000000000000000000000000000000000000000000000008116620021fd565b62002293828262002458565b600062002498825190565b808452602093840193830160005b82811015620022da57620024bc86835162002481565b9550602082019150600101620024a6565b620024da828251620021f2565b6000602082015160406020850152620024f760408501826200248d565b949350505050565b6000620013108383620024cd565b600062002518825190565b808452602084018094508160051b8101620025338560200190565b60005b848110156200256957838303885262002551838351620024ff565b92506020820160209890980197915060010162002536565b50909695505050505050565b6020815260006200131060208301846200250d565b801515620021fd565b60208101620021ec82846200258a565b60005b83811015620025c0578181015183820152602001620025a6565b50506000910152565b6000620025d4825190565b80845260208401620025eb828260208701620025a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000620013108383620025c9565b600062002633825190565b808452602084018094508160051b81016200264e8560200190565b60005b84811015620025695783830388526200266c8383516200261a565b92506020820160209890980197915060010162002651565b60208152600062001310602083018462002628565b73ffffffffffffffffffffffffffffffffffffffff8116620021fd565b60208101620021ec828462002699565b600060208284031215620026dd57620026dd600080fd5b62001310838362002364565b60008060008060808587031215620027045762002704600080fd5b62002710868662002339565b935062002721866020870162002339565b9250620027328660408701620023f9565b9150620023cc8660608701620023f9565b6fffffffffffffffffffffffffffffffff8116620021fd565b608081016200276c8287620023d7565b6200277b602083018662002743565b6200278a6040830185620023d7565b620027996060830184620023d7565b95945050505050565b62ffffff8116620021fd565b60208101620021ec8284620027a2565b600080600060608486031215620027d857620027d8600080fd5b620027e485856200231d565b9250620027f585602086016200231d565b91506200244f856040860162002339565b600080604083850312156200281e576200281e600080fd5b6200282a848462002339565b91506200283b8460208501620023f9565b90509250929050565b60408101620028548285620021f2565b620013106020830184620023d7565b80151562002311565b8051806200232b8162002863565b600060208284031215620028915762002891600080fd5b6200131083836200286c565b620028aa828251620021f2565b6020810151620028be6020840182620021f2565b506040810151620028d36040840182620027a2565b506060810151620028e86060840182620021f2565b506080810151620028fd6080840182620023d7565b5060a08101516200291260a0840182620023d7565b5060c08101516200292760c0840182620023d7565b5060e081015162001a0260e084018262002699565b6101008101620021ec82846200289d565b8051806200232b8162002332565b600060208284031215620029725762002972600080fd5b6200131083836200294d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181028183828215838204831417620029ca57620029ca6200297e565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062002a165762002a16620029d3565b90049392505050565b6000620021ec620022368381565b620021fd8162002a1f565b6040810162002a488285620021f2565b62001310602083018462002a2d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168062002a9d57607f821692505b60208310810362002ab25762002ab262002a57565b5050919050565b8051806200232b8162002347565b8051806200232b81620023ee565b61ffff811662002311565b8051806200232b8162002ad5565b60ff811662002311565b8051806200232b8162002aee565b600080600080600080600060e0888a03121562002b265762002b26600080fd5b62002b32898962002ab9565b965062002b438960208a0162002ac7565b955062002b548960408a0162002ae0565b945062002b658960608a0162002ae0565b935062002b768960808a0162002ae0565b925062002b878960a08a0162002af8565b915062002b988960c08a016200286c565b905092959891949750929550565b600062002bb1825190565b8362002bc2828260208701620025a3565b019392505050565b62002bd6818462002458565b6000620024f7600483018462002ba6565b600062001310828462002ba6565b6200231181620021d2565b8051806200232b8162002bf5565b60006020828403121562002c255762002c25600080fd5b62001310838362002c00565b73ffffffffffffffffffffffffffffffffffffffff828116828216039081908111156200232b576200232b6200297e565b73ffffffffffffffffffffffffffffffffffffffff828116828216019081908111156200232b576200232b6200297e565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262002cc1565b600060ff8216620021ec565b620021fd8162002cfd565b60608152600062002d286060830162002c93565b828103602084015262002d3b8162002cca565b915050620021ec604083018462002d09565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262002cc1565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262002cc1565b60608152600062002dc76060830162002d4d565b828103602084015262002d3b8162002d80565b6080810162002dea8287620021f2565b62002df96020830186620021f2565b62002e086040830185620027a2565b62002799606083018462002699565b600062002e248260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362002e565762002e566200297e565b60000392915050565b600062002e6c8260020b90565b62002e778460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff821317156200232b576200232b6200297e565b600062002ec38260020b90565b62002ece8460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217156200232b576200232b6200297e565b602081526000620013106020830184620025c9565b60006020828403121562002f385762002f38600080fd5b62001310838362002ac7565b620021fd8160020b90565b6040810162002f5f828562002f44565b62001310602083018462002f44565b62002f7b828251620021f2565b602081015162002f8f6020840182620021f2565b50604081015162002fa46040840182620027a2565b50606081015162002fb9606084018262002f44565b50608081015162002fce608084018262002f44565b5060a081015162002fe360a0840182620023d7565b5060c081015162002ff860c0840182620023d7565b5060e08101516200300d60e0840182620023d7565b5061010081015162003024610100840182620023d7565b506101208101516200303b610120840182620021f2565b5061014081015162001a02610140840182620023d7565b6101608101620021ec828462002f6e565b6fffffffffffffffffffffffffffffffff811662002311565b8051806200232b8162003063565b60008060008060808587031215620030a557620030a5600080fd5b620030b186866200294d565b9350620030c286602087016200307c565b9250620030d386604087016200294d565b9150620023cc86606087016200294d56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca264697066735822122013c3b1a97809fe96c102f8c4b8d469a43bae3102b478789040bbf3abf68c758464736f6c63430008160033", "sourceMap": "199:261:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;246:47;;;:::i;:::-;;877:21:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;769:26;;;;;;;;;;;;;;;;:::i;851:20::-;;;;;;;;;2170:134:7;;;:::i;:::-;;;;;;;:::i;705:58:63:-;;;;;;;;;2939:133:7;;;:::i;2640:141::-;;;:::i;5079:824:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2667:221::-;;;;;;:::i;:::-;;:::i;2456:178:7:-;;;:::i;:::-;;;;;;;:::i;988:20:63:-;;;;;;;;;;;;;;;;;;;:::i;300:158:67:-;;;:::i;612:87:63:-;;;;;;;;;2310:140:7;;;:::i;:::-;;;;;;;:::i;2787:146::-;;;:::i;5909:112:63:-;;;:::i;:::-;;;;;;;:::i;824:21::-;;;;;;;;;1875:141:7;;;:::i;1819:584:0:-;;;:::i;6027:683:63:-;;;;;;:::i;:::-;;:::i;961:21::-;;;;;;;;;2895:279;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;801:17::-;;;;;;;;;;;;;;;;;;;:::i;4784:289::-;;;;;;:::i;:::-;;:::i;1349:1125::-;;;:::i;2022:142:7:-;;;:::i;2481:179:63:-;;;;;;:::i;:::-;;:::i;1572:26:0:-;;;;;;;;;;;;246:47:67;280:6;:4;:6::i;:::-;246:47::o;2170:134:7:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;5079:824:63:-;5246:7;;5222:43;;;;;5193:17;;5222:15;;;;;;;:43;;5246:7;;5256:8;;5222:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5688:159:63;;;;;;;;;;;;;;;;;;;;;5773:3;;;;;;;5688:159;;;;5778:10;5688:159;;;;5790:15;5688:159;;;;;;;;;;-1:-1:-1;5688:159:63;;;;;;;;;;;5864:7;;:32;;;;;5688:159;;5864:7;;:24;;:32;;5688:159;;5864:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5857:39;5079:824;-1:-1:-1;;;;;;5079:824:63:o;2667:221::-;2741:18;2780:1;2762:15;:6;2771;2762:15;:::i;:::-;:19;;;;:::i;:::-;2741:40;-1:-1:-1;2791:17:63;2828:1;2811:14;:6;2820:5;2811:14;:::i;:::-;:18;;;;:::i;:::-;2791:38;;2839:42;2845:10;2857:9;2868:5;2875;2839;:42::i;:::-;;;;;2731:157;;2667:221;;;:::o;2456:178:7:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;300:158:67:-;337:4;;:36;;;;;:4;;;;;:9;;:36;;355:4;;362:10;;337:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;402:4:67;;408:3;;383:11;;-1:-1:-1;397:27:67;;-1:-1:-1;402:4:67;;;;;408:3;413:10;397:4;:27::i;:::-;383:41;;434:17;447:3;434:12;:17::i;:::-;327:131;300:158::o;2310:140:7:-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2787:146;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5909:112:63;6002:4;;:12;;;;;;;;5947:20;;6002:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5979:35:63;;5909:112;-1:-1:-1;;;;;;5909:112:63:o;1875:141:7:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:0;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:0;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;2023:20;;1671:64;;2135:34;;2196:43;;1671:64;;2221:17;;2196:43;;;:::i;:::-;;;;;;;;;;;;;;;2086:175;;;2196:43;2086:175;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:0:o;6027:683:63:-;6092:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;6129:31;6142:17;6129:31;;:12;:31::i;:::-;6170:16;6189:7;:5;:7::i;:::-;6170:26;;6206:22;6219:8;6206:22;;:12;:22::i;:::-;6254:17;6242:29;;:8;:29;;;6238:55;;6286:7;6027:683;:::o;6238:55::-;6302:17;6333;6322:28;;:8;:28;;;:68;;6383:6;;;;6322:68;;;6363:6;;;;6322:68;6302:88;;6400:18;6432:17;6421:28;;:8;:28;;;:68;;6482:6;;;;6421:68;;;6462:6;;;;6421:68;6612:33;;;;;6400:89;;-1:-1:-1;6596:6:63;;6612:12;;;;;;:33;;6633:4;;6596:6;;6612:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6655:48;6660:7;6669:8;6679:4;6685:17;6655:4;:48::i;:::-;;6082:628;;;;6027:683;:::o;2895:279::-;3004:15;3029:17;3056:15;3081;3124:43;3131:10;3143:9;3154:5;3161;3124:6;:43::i;:::-;3117:50;;;;-1:-1:-1;3117:50:63;-1:-1:-1;3117:50:63;;-1:-1:-1;2895:279:63;-1:-1:-1;;;;;2895:279:63:o;4784:289::-;4871:17;4900:13;4936:4;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4916:33;;4924:7;4916:33;;;:93;;4982:27;5008:1;997:49:38;4982:27:63;:::i;:::-;4916:93;;;4952:27;817:10:38;4978:1:63;4952:27;:::i;:::-;4900:109;;5026:40;5031:7;5040:8;5050;5060:5;5026:4;:40::i;:::-;5019:47;;;4784:289;;;;;;:::o;1349:1125::-;1436:2;1389:50;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:4:63;:57;;;;;;;;;;;;;;;1449:19;;;;;;;;;;;;;;;;;;;:12;:19::i;:::-;1499:4;;1478:27;;1499:4;;1478:12;:27::i;:::-;1563:1;1521:44;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1515:3:63;:50;;;;;;;;;;;;;;;1575:20;;;;;;;;;;;;;;;;;;;:12;:20::i;:::-;1626:3;;1605:26;;1626:3;;1605:12;:26::i;:::-;1641:3;:9;;;;;;;;1695:3;;1679:4;;1660:8;:39;;;;1641:9;1695:3;;;;1679:4;;;;1671:28;;;;1660:39;;;;;;;;;;;1718:8;;;:39;;1752:4;;;;1718:39;;;1737:3;;;;1718:39;1709:6;:48;;;;;;;;;;;;;;;1776:8;;;;;;;:39;;1811:3;;;;1776:39;;;1795:4;;;;1776:39;1767:6;:48;;;;;;;;;;;;;;;;;-1:-1:-1;;1848:8:63;;;;;:90;;1914:23;1848:90;;;1867:35;1848:90;1825:113;;1957:99;;;;;;;;;;;;;;;;;;:12;:99::i;:::-;2188:4;;2228:6;;2236;;2244:3;;2188:74;;;;;:4;;;;;:39;;:74;;2228:6;;;;2236;;;2244:3;;;;;;;2249:12;;2188:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2166:4;:97;;;;;;;;;;;;;;;2273:23;;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2327:4;;2306:27;;2327:4;;2306:12;:27::i;:::-;2412:55;2418:10;477:7:38;637:9;477:7;637:9;:::i;2022:142:7:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;2481:179:63:-;2556:1;2550:5;:7;;;2542:16;;;;;;2594:4;;:12;;;;;;;;2571:10;;2594:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2568:38;;;;;;;;2616:37;2622:6;2635:5;2630:4;:10;;;;:::i;:::-;2642;2647:5;2642:4;:10;:::i;2616:37::-;2532:128;2481:179;;:::o;6356:116:16:-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6405:15;:60::i;6598:121::-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;3180:1597:63:-;3516:4;;:36;;;;;3291:15;;;;;;;;3516:4;;;;;:9;;:36;;3534:4;;3541:10;;3516:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3562:4:63;;;3583;3562:39;;;;;:4;;;;;-1:-1:-1;3562:12:63;;-1:-1:-1;3562:39:63;;3583:4;;;;3590:10;;3562:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3650:3:63;;;:34;;;;;:3;;;;;:8;;:34;;3667:4;;3674:9;;3650:34;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3694:3:63;;;;3714:4;3694:37;;;;;:3;;;;;-1:-1:-1;3694:11:63;;-1:-1:-1;3694:37:63;;3714:4;;;;;3721:9;;3694:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4240:4:63;;:18;;;;;;;;4229:8;;4240:4;;;:16;;:18;;;;;;;;;;;;;;:4;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4276:25;;;;;4229:29;;-1:-1:-1;4276:4:63;;:14;;:25;;4291:5;;4229:29;;4276:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4319;;;;;4268:33;;-1:-1:-1;4319:4:63;;:14;;:25;;4334:5;;4341:2;;4319:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4409:166;;;;;;;;4469:4;;;;;;4409:166;;4484:3;;;;;4409:166;;;;4490:3;;;;;;;;4409:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4409:166:63;;;;;;4469:4;4409:166;;;;;4538:10;4409:166;;;;4550:15;4409:166;;;;4626:4;:17;;;;;4409:166;;-1:-1:-1;4409:166:63;;4626:4;;;:9;;:17;;4409:166;;4626:17;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4653:22;;;;;;;;;;;;;;;;;4585:58;;-1:-1:-1;4585:58:63;;-1:-1:-1;4585:58:63;-1:-1:-1;4585:58:63;-1:-1:-1;4653:22:63;;:12;:22::i;:::-;4685:23;4698:9;4685:23;;:12;:23::i;:::-;4718:21;4731:7;4718:12;:21::i;:::-;4749;4762:7;4749:12;:21::i;:::-;3394:1383;;3180:1597;;;;;;;;;:::o;6841:116:16:-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;147:96:69:-;182:7;93:42;82:54;;215:22;204:33;147:96;-1:-1:-1;;147:96:69:o;248:95::-;314:22;330:5;314:22;:::i;:::-;309:3;302:35;;;248:95::o;348:189::-;482:2;467:18;;494:37;471:9;513:6;494:37;:::i;599:138::-;645:9;682:49;93:42;82:54;;698:32;542:52;707:22;587:5;542:52;698:32;93:42;82:54;;14:128;742:122;788:9;825:33;852:5;825:33;:::i;869:138::-;931:9;968:33;995:5;968:33;:::i;1012:138::-;1094:49;1137:5;1094:49;:::i;1155:229::-;1313:2;1298:18;;1325:53;1302:9;1360:6;1325:53;:::i;2343:164::-;2422:42;2460:3;2452:6;2422:42;:::i;:::-;-1:-1:-1;2496:4:69;2487:14;;2343:164::o;2605:506::-;2658:3;2690:37;2721:5;1957:12;;1884:87;2690:37;2074:19;;;2126:4;2117:14;;;;2211;;2882:1;2892:194;2906:6;2903:1;2900:13;2892:194;;;2962:48;3006:3;2997:6;2991:13;2962:48;:::i;:::-;2955:55;-1:-1:-1;2220:4:69;2211:14;;3023:53;-1:-1:-1;2928:1:69;2921:9;2892:194;;;-1:-1:-1;3102:3:69;;2605:506;-1:-1:-1;;;;2605:506:69:o;3116:261::-;3295:2;3284:9;3277:21;3258:4;3315:56;3367:2;3356:9;3352:18;3344:6;3315:56;:::i;4001:107::-;4047:7;4080:22;4096:5;4080:22;:::i;4113:144::-;4199:33;4226:5;4199:33;:::i;:::-;4192:5;4189:44;4179:72;;4247:1;4244;4237:12;4262:194;4352:20;;;4406:44;4352:20;4406:44;:::i;:::-;;4262:194;;;;:::o;4533:122::-;4624:5;4608:22;542:52;4660:172;4739:20;;;4793:33;4739:20;4793:33;:::i;4837:122::-;93:42;82:54;;4912:22;14:128;4964:172;5043:20;;;5097:33;5043:20;5097:33;:::i;5141:600::-;5265:6;5273;5281;5289;5342:3;5330:9;5321:7;5317:23;5313:33;5310:148;;;5369:79;199:261:67;;;5369:79:69;5477:49;5518:7;5507:9;5477:49;:::i;:::-;5467:59;;5545:58;5595:7;5590:2;5579:9;5575:18;5545:58;:::i;:::-;5535:68;;5622:47;5661:7;5656:2;5645:9;5641:18;5622:47;:::i;:::-;5612:57;;5688:47;5727:7;5722:2;5711:9;5707:18;5688:47;:::i;:::-;5678:57;;5141:600;;;;;;;:::o;5746:106::-;5839:5;5823:22;542:52;5857:200;5991:2;5976:18;;6003:48;5980:9;6033:6;6003:48;:::i;6159:118::-;6232:20;6246:5;6139:1;6128:20;;6062:92;6282:168;6359:20;;;6413:31;6359:20;6413:31;:::i;6455:448::-;6528:6;6536;6544;6597:2;6585:9;6576:7;6572:23;6568:32;6565:147;;;6623:79;199:261:67;;;6623:79:69;6731:38;6761:7;6750:9;6731:38;:::i;:::-;6721:48;;6788:45;6825:7;6820:2;6809:9;6805:18;6788:45;:::i;:::-;6778:55;;6852:45;6889:7;6884:2;6873:9;6869:18;6852:45;:::i;:::-;6842:55;;6455:448;;;;;:::o;7793:93::-;7715:66;7704:78;;7858:21;7637:151;7891;7969:30;7995:3;7987:6;7969:30;:::i;8139:500::-;8191:3;8223:36;8253:5;1957:12;;1884:87;8223:36;2074:19;;;2126:4;2117:14;;;;2211;;8412:1;8422:192;8436:6;8433:1;8430:13;8422:192;;;8492:47;8535:3;8526:6;8520:13;8492:47;:::i;:::-;8485:54;-1:-1:-1;2220:4:69;2211:14;;8552:52;-1:-1:-1;8458:1:69;8451:9;8422:192;;8644:289;8717:48;8761:3;8753:5;8747:12;8717:48;:::i;:::-;8699:3;8811:4;8804:5;8800:16;8794:23;8849:4;8842;8837:3;8833:14;8826:28;8870:57;8921:4;8916:3;8912:14;8898:12;8870:57;:::i;:::-;8863:64;8644:289;-1:-1:-1;;;;8644:289:69:o;8938:154::-;9004:10;9043:43;9082:3;9074:6;9043:43;:::i;9202:731::-;9267:3;9299:49;9342:5;1957:12;;1884:87;9299:49;2074:19;;;2126:4;2117:14;;9457:5;9450:12;;9501:6;9498:1;9494:14;9487:5;9483:26;9532:51;9577:5;2220:4;2211:14;;2142:85;9532:51;9601:1;9611:296;9625:6;9622:1;9619:13;9611:296;;;9696:5;9690:4;9686:16;9681:3;9674:29;9724:61;9780:4;9771:6;9765:13;9724:61;:::i;:::-;9716:69;-1:-1:-1;2220:4:69;2211:14;;9892:4;9883:14;;;;;9798:65;-1:-1:-1;9647:1:69;9640:9;9611:296;;;-1:-1:-1;9923:4:69;;9202:731;-1:-1:-1;;;;;;9202:731:69:o;9938:333::-;10177:2;10166:9;10159:21;10140:4;10197:68;10261:2;10250:9;10246:18;10238:6;10197:68;:::i;10373:89::-;10348:13;;10341:21;10436:19;10276:92;10467:180;10595:2;10580:18;;10607:34;10584:9;10623:6;10607:34;:::i;11818:250::-;11903:1;11913:113;11927:6;11924:1;11921:13;11913:113;;;12003:11;;;11997:18;11984:11;;;11977:39;11949:2;11942:10;11913:113;;;-1:-1:-1;;12060:1:69;12042:16;;12035:27;11818:250::o;12240:317::-;12293:3;12325:26;12345:5;1957:12;;1884:87;12325:26;2074:19;;;2126:4;2117:14;;12430:67;12490:6;12483:5;12476:4;12469:5;12465:16;12430:67;:::i;:::-;12162:66;12157:2;12146:14;;12142:87;12513:38;;12240:317;-1:-1:-1;;;;12240:317:69:o;12562:139::-;12615:10;12654:41;12691:3;12683:6;12654:41;:::i;12798:653::-;12850:3;12882:36;12912:5;1957:12;;1884:87;12882:36;2074:19;;;2126:4;2117:14;;13014:5;13007:12;;13058:6;13055:1;13051:14;13044:5;13040:26;13089:38;13121:5;2220:4;2211:14;;2142:85;13089:38;13145:1;13155:270;13169:6;13166:1;13163:13;13155:270;;;13240:5;13234:4;13230:16;13225:3;13218:29;13268:48;13311:4;13302:6;13296:13;13268:48;:::i;:::-;13260:56;-1:-1:-1;2220:4:69;2211:14;;13410:4;13401:14;;;;;13329:52;-1:-1:-1;13191:1:69;13184:9;13155:270;;13456:280;13655:2;13644:9;13637:21;13618:4;13675:55;13726:2;13715:9;13711:18;13703:6;13675:55;:::i;13741:106::-;93:42;82:54;;13818:22;14:128;13852:200;13986:2;13971:18;;13998:48;13975:9;14028:6;13998:48;:::i;14057:290::-;14116:6;14169:2;14157:9;14148:7;14144:23;14140:32;14137:147;;;14195:79;199:261:67;;;14195:79:69;14303:38;14333:7;14322:9;14303:38;:::i;14352:532::-;14434:6;14442;14450;14458;14511:3;14499:9;14490:7;14486:23;14482:33;14479:148;;;14538:79;199:261:67;;;14538:79:69;14646:38;14676:7;14665:9;14646:38;:::i;:::-;14636:48;;14703:47;14742:7;14737:2;14726:9;14722:18;14703:47;:::i;:::-;14693:57;;14769:45;14806:7;14801:2;14790:9;14786:18;14769:45;:::i;:::-;14759:55;;14833:45;14870:7;14865:2;14854:9;14850:18;14833:45;:::i;15014:95::-;14968:34;14957:46;;15080:22;14889:120;15114:472;15332:3;15317:19;;15345:48;15321:9;15375:6;15345:48;:::i;:::-;15402:46;15444:2;15433:9;15429:18;15421:6;15402:46;:::i;:::-;15457:57;15510:2;15499:9;15495:18;15487:6;15457:57;:::i;:::-;15523;15576:2;15565:9;15561:18;15553:6;15523:57;:::i;:::-;15114:472;;;;;;;:::o;15689:93::-;15669:8;15658:20;;15754:21;15591:93;15787:186;15919:2;15904:18;;15931:36;15908:9;15949:6;15931:36;:::i;15978:516::-;16093:6;16101;16109;16162:2;16150:9;16141:7;16137:23;16133:32;16130:147;;;16188:79;199:261:67;;;16188:79:69;16296:49;16337:7;16326:9;16296:49;:::i;:::-;16286:59;;16364:58;16414:7;16409:2;16398:9;16394:18;16364:58;:::i;:::-;16354:68;;16441:47;16480:7;16475:2;16464:9;16460:18;16441:47;:::i;16499:369::-;16565:6;16573;16626:2;16614:9;16605:7;16601:23;16597:32;16594:147;;;16652:79;199:261:67;;;16652:79:69;16760:38;16790:7;16779:9;16760:38;:::i;:::-;16750:48;;16817:45;16854:7;16849:2;16838:9;16834:18;16817:45;:::i;:::-;16807:55;;16499:369;;;;;:::o;16873:283::-;17035:2;17020:18;;17047:37;17024:9;17066:6;17047:37;:::i;:::-;17093:57;17146:2;17135:9;17131:18;17123:6;17093:57;:::i;17161:116::-;10348:13;;10341:21;17233:19;10276:92;17282:170;17369:13;;;17416:30;17369:13;17416:30;:::i;17457:306::-;17524:6;17577:2;17565:9;17556:7;17552:23;17548:32;17545:147;;;17603:79;199:261:67;;;17603:79:69;17711:46;17749:7;17738:9;17711:46;:::i;18076:948::-;18152:48;18196:3;18188:5;18182:12;18152:48;:::i;:::-;18246:4;18239:5;18235:16;18229:23;18261:59;18314:4;18309:3;18305:14;18291:12;18261:59;:::i;:::-;;18368:4;18361:5;18357:16;18351:23;18383:59;18436:4;18431:3;18427:14;18411;18383:59;:::i;:::-;;18490:4;18483:5;18479:16;18473:23;18505:61;18560:4;18555:3;18551:14;18535;18505:61;:::i;:::-;;18614:4;18607:5;18603:16;18597:23;18629:50;18673:4;18668:3;18664:14;18648;18629:50;:::i;:::-;;18727:4;18720:5;18716:16;18710:23;18742:50;18786:4;18781:3;18777:14;18761;18742:50;:::i;:::-;;18840:4;18833:5;18829:16;18823:23;18855:50;18899:4;18894:3;18890:14;18874;18855:50;:::i;:::-;;18953:4;18946:5;18942:16;18936:23;18968:50;19012:4;19007:3;19003:14;18987;18968:50;:::i;19029:294::-;19245:3;19230:19;;19258:59;19234:9;19299:6;19258:59;:::i;19328:176::-;19418:13;;;19465:33;19418:13;19465:33;:::i;19509:312::-;19579:6;19632:2;19620:9;19611:7;19607:23;19603:32;19600:147;;;19658:79;199:261:67;;;19658:79:69;19766:49;19807:7;19796:9;19766:49;:::i;19826:184::-;19878:77;19875:1;19868:88;19975:4;19972:1;19965:15;19999:4;19996:1;19989:15;20015:308;20186:13;;;20104:1;20142;20186:13;20251:11;;20272:19;;;20264:28;;20248:45;20238:79;;20297:18;;:::i;:::-;20238:79;;;20015:308;;;;:::o;20328:184::-;20380:77;20377:1;20370:88;20477:4;20474:1;20467:15;20501:4;20498:1;20491:15;20517:202;20557:1;20600;20638;20659:3;20649:37;;20666:18;;:::i;:::-;20700:13;;;20517:202;-1:-1:-1;;;20517:202:69:o;20802:148::-;20852:9;20889:55;20905:38;20936:5;20905:38;542:52;20955:125;21036:37;21067:5;21036:37;:::i;21085:313::-;21273:2;21258:18;;21285:37;21262:9;21304:6;21285:37;:::i;:::-;21331:61;21388:2;21377:9;21373:18;21365:6;21331:61;:::i;21403:184::-;21455:77;21452:1;21445:88;21552:4;21549:1;21542:15;21576:4;21573:1;21566:15;21592:318;21677:1;21673:12;;;;;;21747;;;21768:63;;21824:4;21814:8;21810:19;21800:29;;21768:63;21877:2;21869:6;21866:14;21846:18;21843:38;21840:64;;21884:18;;:::i;:::-;21840:64;;21592:318;;;:::o;21915:176::-;22005:13;;;22052:33;22005:13;22052:33;:::i;22096:172::-;22184:13;;;22231:31;22184:13;22231:31;:::i;22357:120::-;22343:6;22332:18;;22431:21;22273:79;22482:174;22571:13;;;22618:32;22571:13;22618:32;:::i;22742:118::-;22730:4;22719:16;;22815:20;22661:76;22865:172;22953:13;;;23000:31;22953:13;23000:31;:::i;23042:860::-;23156:6;23164;23172;23180;23188;23196;23204;23257:3;23245:9;23236:7;23232:23;23228:33;23225:148;;;23284:79;199:261:67;;;23284:79:69;23392:49;23433:7;23422:9;23392:49;:::i;:::-;23382:59;;23460:56;23508:7;23503:2;23492:9;23488:18;23460:56;:::i;:::-;23450:66;;23535:57;23584:7;23579:2;23568:9;23564:18;23535:57;:::i;:::-;23525:67;;23611:57;23660:7;23655:2;23644:9;23640:18;23611:57;:::i;:::-;23601:67;;23687:58;23737:7;23731:3;23720:9;23716:19;23687:58;:::i;:::-;23677:68;;23764:57;23813:7;23807:3;23796:9;23792:19;23764:57;:::i;:::-;23754:67;;23840:56;23888:7;23882:3;23871:9;23867:19;23840:56;:::i;:::-;23830:66;;23042:860;;;;;;;;;;:::o;24774:301::-;24815:3;24847:25;24866:5;1957:12;;1884:87;24847:25;24947:3;24968:67;25028:6;25021:5;25014:4;25007:5;25003:16;24968:67;:::i;:::-;25051:18;;24774:301;-1:-1:-1;;;24774:301:69:o;25080:290::-;25253:58;25307:3;25299:6;25253:58;:::i;:::-;25235:3;25327:37;25361:1;25356:3;25352:11;25344:6;25327:37;:::i;25375:189::-;25504:3;25529:29;25554:3;25546:6;25529:29;:::i;25569:122::-;25644:22;25660:5;25644:22;:::i;25696:176::-;25786:13;;;25833:33;25786:13;25833:33;:::i;25877:312::-;25947:6;26000:2;25988:9;25979:7;25975:23;25971:32;25968:147;;;26026:79;199:261:67;;;26026:79:69;26134:49;26175:7;26164:9;26134:49;:::i;26194:257::-;93:42;82:54;;;;;;26305:28;;;;26368:54;;26365:80;;;26425:18;;:::i;26456:252::-;93:42;82:54;;;;;;26565:28;;;;26626:53;;26623:79;;;26682:18;;:::i;27049:272::-;27178:2;2074:19;;27096:3;2126:4;2117:14;;27013:24;26998:40;;27190:95;27312:2;27301:14;;27049:272;-1:-1:-1;;27049:272:69:o;27466:271::-;27595:1;2074:19;;27513:3;2126:4;2117:14;;27453:5;27438:21;;27606:95;27326:135;27818:146;27870:9;22730:4;22719:16;;27907:51;22661:76;27969:125;28048:39;28081:5;28048:39;:::i;28099:600::-;28437:2;28426:9;28419:21;28400:4;28463:49;28508:2;28497:9;28493:18;28463:49;:::i;:::-;28560:9;28552:6;28548:22;28543:2;28532:9;28528:18;28521:50;28588:37;28618:6;28588:37;:::i;:::-;28580:45;;;28634:59;28689:2;28678:9;28674:18;28666:6;28634:59;:::i;28869:272::-;28998:2;2074:19;;28916:3;2126:4;2117:14;;28839:18;28824:34;;29010:95;28704:160;29287:271;29416:1;2074:19;;29334:3;2126:4;2117:14;;29273:6;29258:22;;29427:95;29146:136;29907:590;30244:2;30233:9;30226:21;30207:4;30270:49;30315:2;30304:9;30300:18;30270:49;:::i;:::-;30367:9;30359:6;30355:22;30350:2;30339:9;30335:18;30328:50;30395:37;30425:6;30395:37;:::i;30502:447::-;30718:3;30703:19;;30731:37;30707:9;30750:6;30731:37;:::i;:::-;30777:46;30819:2;30808:9;30804:18;30796:6;30777:46;:::i;:::-;30832:45;30873:2;30862:9;30858:18;30850:6;30832:45;:::i;:::-;30886:57;30939:2;30928:9;30924:18;30916:6;30886:57;:::i;30954:238::-;30988:3;31021:20;31035:5;6139:1;6128:20;;6062:92;31021:20;31065:66;31056:7;31053:79;31050:105;;31135:18;;:::i;:::-;31175:1;31171:15;;30954:238;-1:-1:-1;;30954:238:69:o;31197:303::-;31235:4;31265:16;31279:1;6139;6128:20;;6062:92;31265:16;31313;31327:1;6139;6128:20;;6062:92;31313:16;31304:26;;;-1:-1:-1;31304:26:69;31380:66;31368:79;;31461:8;31449:21;;31365:106;31362:132;;;31474:18;;:::i;31505:297::-;31543:3;31572:16;31586:1;6139;6128:20;;6062:92;31572:16;31619;31633:1;6139;6128:20;;6062:92;31619:16;31610:26;;-1:-1:-1;31610:26:69;31683:8;31672:20;;31705:66;31694:78;;31669:104;31666:130;;;31776:18;;:::i;32128:220::-;32277:2;32266:9;32259:21;32240:4;32297:45;32338:2;32327:9;32323:18;32315:6;32297:45;:::i;32353:308::-;32421:6;32474:2;32462:9;32453:7;32449:23;32445:32;32442:147;;;32500:79;199:261:67;;;32500:79:69;32608:47;32647:7;32636:9;32608:47;:::i;32666:91::-;32730:20;32744:5;6139:1;6128:20;;6062:92;32762:268;32924:2;32909:18;;32936:35;32913:9;32953:6;32936:35;:::i;:::-;32980:44;33020:2;33009:9;33005:18;32997:6;32980:44;:::i;33140:1301::-;33204:48;33248:3;33240:5;33234:12;33204:48;:::i;:::-;33298:4;33291:5;33287:16;33281:23;33313:59;33366:4;33361:3;33357:14;33343:12;33313:59;:::i;:::-;;33420:4;33413:5;33409:16;33403:23;33435:59;33488:4;33483:3;33479:14;33463;33435:59;:::i;:::-;;33542:4;33535:5;33531:16;33525:23;33557:57;33608:4;33603:3;33599:14;33583;33557:57;:::i;:::-;;33662:4;33655:5;33651:16;33645:23;33677:57;33728:4;33723:3;33719:14;33703;33677:57;:::i;:::-;;33782:4;33775:5;33771:16;33765:23;33797:50;33841:4;33836:3;33832:14;33816;33797:50;:::i;:::-;;33895:4;33888:5;33884:16;33878:23;33910:50;33954:4;33949:3;33945:14;33929;33910:50;:::i;:::-;;34008:4;34001:5;33997:16;33991:23;34023:50;34067:4;34062:3;34058:14;34042;34023:50;:::i;:::-;;34121:6;34114:5;34110:18;34104:25;34138:52;34182:6;34177:3;34173:16;34157:14;34138:52;:::i;:::-;;34238:6;34231:5;34227:18;34221:25;34255:63;34310:6;34305:3;34301:16;34285:14;34255:63;:::i;:::-;;34366:6;34359:5;34355:18;34349:25;34383:52;34427:6;34422:3;34418:16;34402:14;34383:52;:::i;34446:258::-;34638:3;34623:19;;34651:47;34627:9;34680:6;34651:47;:::i;34709:122::-;14968:34;14957:46;;34784:22;14889:120;34836:176;34926:13;;;34973:33;34926:13;34973:33;:::i;35017:595::-;35114:6;35122;35130;35138;35191:3;35179:9;35170:7;35166:23;35162:33;35159:148;;;35218:79;199:261:67;;;35218:79:69;35326:49;35367:7;35356:9;35326:49;:::i;:::-;35316:59;;35394:58;35444:7;35439:2;35428:9;35424:18;35394:58;:::i;:::-;35384:68;;35471:58;35521:7;35516:2;35505:9;35501:18;35471:58;:::i;:::-;35461:68;;35548:58;35598:7;35593:2;35582:9;35578:18;35548:58;:::i", "linkReferences": { "src/Util.sol": { @@ -903,7 +903,7 @@ "token0()": "0dfe1681", "token1()": "d21220a7" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestSinglePool.sol\":\"TestSinglePool\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]},\"test/TestSinglePool.sol\":{\"keccak256\":\"0xb0d65a3f8eff4b86bfd9951afa86c71e1183702fd0faa34e45ff372fc2466388\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://62f74e787e077710558649ce87444c8a2d3ee7459aa14af31046ed3ca27d89f5\",\"dweb:/ipfs/QmPCerhkT98jauXF55HhoMiS9TVKbD1kpcqwC2sMz2XNrt\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestSinglePool.sol\":\"TestSinglePool\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]},\"test/TestSinglePool.sol\":{\"keccak256\":\"0xb0d65a3f8eff4b86bfd9951afa86c71e1183702fd0faa34e45ff372fc2466388\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://62f74e787e077710558649ce87444c8a2d3ee7459aa14af31046ed3ca27d89f5\",\"dweb:/ipfs/QmPCerhkT98jauXF55HhoMiS9TVKbD1kpcqwC2sMz2XNrt\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -2158,10 +2158,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -2202,10 +2202,10 @@ }, "ast": { "absolutePath": "test/TestSinglePool.sol", - "id": 51760, + "id": 51757, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "Context": [ 43777 @@ -2289,10 +2289,10 @@ 45794 ], "MockERC20": [ - 46478 + 46475 ], "MockEnv": [ - 50069 + 50066 ], "PoolAddress": [ 45892 @@ -2325,13 +2325,13 @@ 2357 ], "TestSinglePool": [ - 51759 + 51756 ], "TickMath": [ 45059 ], "Util": [ - 48904 + 48901 ], "Vm": [ 13464 @@ -2362,7 +2362,7 @@ "src": "65:396:67", "nodes": [ { - "id": 51707, + "id": 51704, "nodeType": "PragmaDirective", "src": "65:24:67", "nodes": [], @@ -2374,7 +2374,7 @@ ] }, { - "id": 51708, + "id": 51705, "nodeType": "PragmaDirective", "src": "90:19:67", "nodes": [], @@ -2384,56 +2384,56 @@ ] }, { - "id": 51709, + "id": 51706, "nodeType": "ImportDirective", "src": "111:32:67", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 51760, + "scope": 51757, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 51710, + "id": 51707, "nodeType": "ImportDirective", "src": "144:28:67", "nodes": [], "absolutePath": "lib/forge-std/src/Test.sol", "file": "forge-std/Test.sol", "nameLocation": "-1:-1:-1", - "scope": 51760, + "scope": 51757, "sourceUnit": 11938, "symbolAliases": [], "unitAlias": "" }, { - "id": 51711, + "id": 51708, "nodeType": "ImportDirective", "src": "173:23:67", "nodes": [], "absolutePath": "test/MockEnv.sol", "file": "./MockEnv.sol", "nameLocation": "-1:-1:-1", - "scope": 51760, - "sourceUnit": 50070, + "scope": 51757, + "sourceUnit": 50067, "symbolAliases": [], "unitAlias": "" }, { - "id": 51759, + "id": 51756, "nodeType": "ContractDefinition", "src": "199:261:67", "nodes": [ { - "id": 51722, + "id": 51719, "nodeType": "FunctionDefinition", "src": "246:47:67", "nodes": [], "body": { - "id": 51721, + "id": 51718, "nodeType": "Block", "src": "270:23:67", "nodes": [], @@ -2443,18 +2443,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 51718, + "id": 51715, "name": "init", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49634, + "referencedDeclaration": 49631, "src": "280:4:67", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 51719, + "id": 51716, "isConstant": false, "isLValue": false, "isPure": false, @@ -2470,7 +2470,7 @@ "typeString": "tuple()" } }, - "id": 51720, + "id": 51717, "nodeType": "ExpressionStatement", "src": "280:6:67" } @@ -2483,29 +2483,29 @@ "name": "setUp", "nameLocation": "255:5:67", "parameters": { - "id": 51716, + "id": 51713, "nodeType": "ParameterList", "parameters": [], "src": "260:2:67" }, "returnParameters": { - "id": 51717, + "id": 51714, "nodeType": "ParameterList", "parameters": [], "src": "270:0:67" }, - "scope": 51759, + "scope": 51756, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 51758, + "id": 51755, "nodeType": "FunctionDefinition", "src": "300:158:67", "nodes": [], "body": { - "id": 51757, + "id": 51754, "nodeType": "Block", "src": "327:131:67", "nodes": [], @@ -2516,14 +2516,14 @@ { "arguments": [ { - "id": 51730, + "id": 51727, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "355:4:67", "typeDescriptions": { - "typeIdentifier": "t_contract$_TestSinglePool_$51759", + "typeIdentifier": "t_contract$_TestSinglePool_$51756", "typeString": "contract TestSinglePool" } } @@ -2531,11 +2531,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_TestSinglePool_$51759", + "typeIdentifier": "t_contract$_TestSinglePool_$51756", "typeString": "contract TestSinglePool" } ], - "id": 51729, + "id": 51726, "isConstant": false, "isLValue": false, "isPure": true, @@ -2547,14 +2547,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51728, + "id": 51725, "name": "address", "nodeType": "ElementaryTypeName", "src": "347:7:67", "typeDescriptions": {} } }, - "id": 51731, + "id": 51728, "isConstant": false, "isLValue": false, "isPure": false, @@ -2575,14 +2575,14 @@ "typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000" }, - "id": 51736, + "id": 51733, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "31", - "id": 51732, + "id": 51729, "isConstant": false, "isLValue": false, "isPure": true, @@ -2603,14 +2603,14 @@ "typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000" }, - "id": 51735, + "id": 51732, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 51733, + "id": 51730, "isConstant": false, "isLValue": false, "isPure": true, @@ -2628,7 +2628,7 @@ "operator": "**", "rightExpression": { "hexValue": "3138", - "id": 51734, + "id": 51731, "isConstant": false, "isLValue": false, "isPure": true, @@ -2667,18 +2667,18 @@ } ], "expression": { - "id": 51725, + "id": 51722, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "337:4:67", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, - "id": 51727, + "id": 51724, "isConstant": false, "isLValue": false, "isPure": false, @@ -2686,14 +2686,14 @@ "memberLocation": "342:4:67", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 46477, + "referencedDeclaration": 46474, "src": "337:9:67", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 51737, + "id": 51734, "isConstant": false, "isLValue": false, "isPure": false, @@ -2709,23 +2709,23 @@ "typeString": "tuple()" } }, - "id": 51738, + "id": 51735, "nodeType": "ExpressionStatement", "src": "337:36:67" }, { "assignments": [ - 51740 + 51737 ], "declarations": [ { "constant": false, - "id": 51740, + "id": 51737, "mutability": "mutable", "name": "usd", "nameLocation": "391:3:67", "nodeType": "VariableDeclaration", - "scope": 51757, + "scope": 51754, "src": "383:11:67", "stateVariable": false, "storageLocation": "default", @@ -2734,7 +2734,7 @@ "typeString": "uint256" }, "typeName": { - "id": 51739, + "id": 51736, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "383:7:67", @@ -2746,30 +2746,30 @@ "visibility": "internal" } ], - "id": 51750, + "id": 51747, "initialValue": { "arguments": [ { - "id": 51742, + "id": 51739, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49475, + "referencedDeclaration": 49472, "src": "402:4:67", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { - "id": 51743, + "id": 51740, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49478, + "referencedDeclaration": 49475, "src": "408:3:67", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, @@ -2778,14 +2778,14 @@ "typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000" }, - "id": 51748, + "id": 51745, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "31", - "id": 51744, + "id": 51741, "isConstant": false, "isLValue": false, "isPure": true, @@ -2806,14 +2806,14 @@ "typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000" }, - "id": 51747, + "id": 51744, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 51745, + "id": 51742, "isConstant": false, "isLValue": false, "isPure": true, @@ -2831,7 +2831,7 @@ "operator": "**", "rightExpression": { "hexValue": "3138", - "id": 51746, + "id": 51743, "isConstant": false, "isLValue": false, "isPure": true, @@ -2861,11 +2861,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { - "typeIdentifier": "t_contract$_MockERC20_$46478", + "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { @@ -2873,21 +2873,21 @@ "typeString": "int_const 1000000000000000000" } ], - "id": 51741, + "id": 51738, "name": "swap", "nodeType": "Identifier", "overloadedDeclarations": [ - 49914, - 49970 + 49911, + 49967 ], - "referencedDeclaration": 49914, + "referencedDeclaration": 49911, "src": "397:4:67", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_MockERC20_$46478_$_t_contract$_MockERC20_$46478_$_t_uint256_$returns$_t_uint256_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_MockERC20_$46475_$_t_contract$_MockERC20_$46475_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (contract MockERC20,contract MockERC20,uint256) returns (uint256)" } }, - "id": 51749, + "id": 51746, "isConstant": false, "isLValue": false, "isPure": false, @@ -2910,11 +2910,11 @@ "expression": { "arguments": [ { - "id": 51754, + "id": 51751, "name": "usd", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51740, + "referencedDeclaration": 51737, "src": "447:3:67", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2930,7 +2930,7 @@ } ], "expression": { - "id": 51751, + "id": 51748, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2941,7 +2941,7 @@ "typeString": "type(library console2)" } }, - "id": 51753, + "id": 51750, "isConstant": false, "isLValue": false, "isPure": false, @@ -2956,7 +2956,7 @@ "typeString": "function (uint256) pure" } }, - "id": 51755, + "id": 51752, "isConstant": false, "isLValue": false, "isPure": false, @@ -2972,7 +2972,7 @@ "typeString": "tuple()" } }, - "id": 51756, + "id": 51753, "nodeType": "ExpressionStatement", "src": "434:17:67" } @@ -2985,18 +2985,18 @@ "name": "testSwap", "nameLocation": "309:8:67", "parameters": { - "id": 51723, + "id": 51720, "nodeType": "ParameterList", "parameters": [], "src": "317:2:67" }, "returnParameters": { - "id": 51724, + "id": 51721, "nodeType": "ParameterList", "parameters": [], "src": "327:0:67" }, - "scope": 51759, + "scope": 51756, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -3006,22 +3006,22 @@ "baseContracts": [ { "baseName": { - "id": 51712, + "id": 51709, "name": "MockEnv", "nameLocations": [ "226:7:67" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 50069, + "referencedDeclaration": 50066, "src": "226:7:67" }, - "id": 51713, + "id": 51710, "nodeType": "InheritanceSpecifier", "src": "226:7:67" }, { "baseName": { - "id": 51714, + "id": 51711, "name": "Test", "nameLocations": [ "235:4:67" @@ -3030,14 +3030,14 @@ "referencedDeclaration": 11937, "src": "235:4:67" }, - "id": 51715, + "id": 51712, "nodeType": "InheritanceSpecifier", "src": "235:4:67" } ], "canonicalName": "TestSinglePool", "contractDependencies": [ - 46478 + 46475 ], "contractKind": "contract", "fullyImplemented": true, @@ -3045,7 +3045,7 @@ "21582": 1 }, "linearizedBaseContracts": [ - 51759, + 51756, 11937, 2357, 2354, @@ -3056,11 +3056,11 @@ 4516, 3823, 2291, - 50069 + 50066 ], "name": "TestSinglePool", "nameLocation": "208:14:67", - "scope": 51760, + "scope": 51757, "usedErrors": [], "usedEvents": [ 5, diff --git a/deployment/alpha/out/TestVault.sol/TestVault.json b/deployment/alpha/out/TestVault.sol/TestVault.json index 50d3eba..ab85d98 100644 --- a/deployment/alpha/out/TestVault.sol/TestVault.json +++ b/deployment/alpha/out/TestVault.sol/TestVault.json @@ -560,12 +560,12 @@ } ], "bytecode": { - "object": "0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b506164968061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a7c71c5d1161008c578063c45a015511610066578063c45a01551461017e578063e20c9f71146101ab578063fa7626d4146101b3578063fbfa77cf146101c057600080fd5b8063a7c71c5d14610159578063b5508aa914610161578063ba414fa61461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f57806366d9a9a01461012757806385226c811461013c578063916a17c61461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101e0565b005b6101016103ec565b60405161010e9190610e0a565b60405180910390f35b61010161045b565b6101016104c8565b61012f610535565b60405161010e9190610f26565b610144610646565b60405161010e919061100d565b61012f610716565b6100f761081e565b61014461089e565b61017161096e565b60405161010e9190611028565b601b5461019e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405161010e9190611055565b610101610af0565b6000546101719060ff1681565b601c5461019e9073ffffffffffffffffffffffffffffffffffffffff1681565b6040516101ec90610d7a565b604051809103906000f080158015610208573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f666163746f727900000000000000000000000000000000000000000000000000602082015261028b90610b5d565b601b546102ad9073ffffffffffffffffffffffffffffffffffffffff16610bec565b601b546040517f5eb512e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635eb512e790610303903090600401611063565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611098565b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600581527f7661756c7400000000000000000000000000000000000000000000000000000060208201526103c890610b5d565b601c546103ea9073ffffffffffffffffffffffffffffffffffffffff16610bec565b565b6060600d80548060200260200160405190810160405280929190818152602001828054801561045157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575b5050505050905090565b6060600f8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561063d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561062557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105d25790505b50505050508152505081526020019060010190610559565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561063d578382906000526020600020018054610689906110e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106b5906110e6565b80156107025780601f106106d757610100808354040283529160200191610702565b820191906000526020600020905b8154815290600101906020018083116106e557829003601f168201915b50505050508152602001906001019061066a565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561063d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561080657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107b35790505b5050505050815250508152602001906001019061073a565b601c546108409073ffffffffffffffffffffffffffffffffffffffff16610bec565b601b546000906108669073ffffffffffffffffffffffffffffffffffffffff1630610c7b565b905061087181610bec565b601c5473ffffffffffffffffffffffffffffffffffffffff82811691161461089b5761089b611115565b50565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561063d5783829060005260206000200180546108e1906110e6565b80601f016020809104026020016040519081016040528092919081815260200182805461090d906110e6565b801561095a5780601f1061092f5761010080835404028352916020019161095a565b820191906000526020600020905b81548152906001019060200180831161093d57829003601f168201915b5050505050815260200190600101906108c2565b60008054610100900460ff161561098e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610aeb57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490610a199083907f6661696c656400000000000000000000000000000000000000000000000000009060200161114a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a55929160200161118d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a8d916111a6565b6000604051808303816000865af19150503d8060008114610aca576040519150601f19603f3d011682016040523d82523d6000602084013e610acf565b606091505b5091505080806020019051810190610ae791906111c6565b9150505b919050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b61089b81604051602401610b7191906111e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610c92565b61089b81604051602401610c009190611063565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610c92565b6000610c8983836000610c9b565b90505b92915050565b61089b81610d59565b6000808383604051602001610cb1929190611238565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020918201209250610d1a91879184917f139fb90057cc44dea7209d8e9f5b28de2998f4d6d89adbc03951a7e813904e0b9101611258565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af806112b283390190565b600073ffffffffffffffffffffffffffffffffffffffff8216610c8c565b610dae81610d87565b82525050565b610dbe8282610da5565b5060200190565b6000610dcf825190565b808452602093840193830160005b82811015610e0057610df0868351610db4565b9550602082019150600101610ddd565b5093949350505050565b602081526000610c896020830184610dc5565b7fffffffff000000000000000000000000000000000000000000000000000000008116610dae565b610dbe8282610e1d565b6000610e59825190565b808452602093840193830160005b82811015610e0057610e7a868351610e45565b9550602082019150600101610e67565b610e95828251610da5565b6000602082015160406020850152610eb06040850182610e4f565b949350505050565b6000610c898383610e8a565b6000610ece825190565b808452602084018094508160051b8101610ee88560200190565b60005b84811015610f1a578383038852610f03838351610eb8565b925060208201602098909801979150600101610eeb565b50909695505050505050565b602081526000610c896020830184610ec4565b60005b83811015610f54578181015183820152602001610f3c565b50506000910152565b6000610f67825190565b80845260208401610f7c828260208701610f39565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000610c898383610f5d565b6000610fc1825190565b808452602084018094508160051b8101610fdb8560200190565b60005b84811015610f1a578383038852610ff6838351610fab565b925060208201602098909801979150600101610fde565b602081526000610c896020830184610fb7565b801515610dae565b60208101610c8c8284611020565b6000610c8c82610d87565b6000610c8c82611036565b610dae81611041565b60208101610c8c828461104c565b60208101610c8c8284610da5565b61107a81610d87565b811461089b57600080fd5b80518061109181611071565b5092915050565b6000602082840312156110ad576110ad600080fd5b610c898383611085565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c9081908316806110fc57607f821692505b60208310810361110e5761110e6110b7565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b80610dae565b604081016111588285610da5565b6111656020830184611144565b9392505050565b6000611176825190565b83611185828260208701610f39565b019392505050565b6111978184610e1d565b6000610eb0600483018461116c565b6000610c89828461116c565b80151561107a565b805180611091816111b2565b6000602082840312156111db576111db600080fd5b610c8983836111ba565b602081526000610c896020830184610f5d565b6000610c8c8260601b90565b6000610c8c826111f8565b610dae61121b82610d87565b611204565b6000610c8c8260f81b90565b610dae60ff8216611220565b611242818461120f565b61124f601482018361122c565b60150192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260006001820161128b818761120f565b6112986014820186611144565b6112a56034820185611144565b6054019594505050505056fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c63430008160033a2646970667358221220f733b429f96741477b68732e907f3bf393f377ec25259397ede3508aa189eb6b64736f6c63430008160033", + "object": "0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b506164968061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a7c71c5d1161008c578063c45a015511610066578063c45a01551461017e578063e20c9f71146101ab578063fa7626d4146101b3578063fbfa77cf146101c057600080fd5b8063a7c71c5d14610159578063b5508aa914610161578063ba414fa61461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f57806366d9a9a01461012757806385226c811461013c578063916a17c61461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101e0565b005b6101016103ec565b60405161010e9190610e0a565b60405180910390f35b61010161045b565b6101016104c8565b61012f610535565b60405161010e9190610f26565b610144610646565b60405161010e919061100d565b61012f610716565b6100f761081e565b61014461089e565b61017161096e565b60405161010e9190611028565b601b5461019e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405161010e9190611055565b610101610af0565b6000546101719060ff1681565b601c5461019e9073ffffffffffffffffffffffffffffffffffffffff1681565b6040516101ec90610d7a565b604051809103906000f080158015610208573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f666163746f727900000000000000000000000000000000000000000000000000602082015261028b90610b5d565b601b546102ad9073ffffffffffffffffffffffffffffffffffffffff16610bec565b601b546040517f5eb512e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635eb512e790610303903090600401611063565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611098565b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600581527f7661756c7400000000000000000000000000000000000000000000000000000060208201526103c890610b5d565b601c546103ea9073ffffffffffffffffffffffffffffffffffffffff16610bec565b565b6060600d80548060200260200160405190810160405280929190818152602001828054801561045157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575b5050505050905090565b6060600f8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561063d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561062557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105d25790505b50505050508152505081526020019060010190610559565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561063d578382906000526020600020018054610689906110e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106b5906110e6565b80156107025780601f106106d757610100808354040283529160200191610702565b820191906000526020600020905b8154815290600101906020018083116106e557829003601f168201915b50505050508152602001906001019061066a565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561063d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561080657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107b35790505b5050505050815250508152602001906001019061073a565b601c546108409073ffffffffffffffffffffffffffffffffffffffff16610bec565b601b546000906108669073ffffffffffffffffffffffffffffffffffffffff1630610c7b565b905061087181610bec565b601c5473ffffffffffffffffffffffffffffffffffffffff82811691161461089b5761089b611115565b50565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561063d5783829060005260206000200180546108e1906110e6565b80601f016020809104026020016040519081016040528092919081815260200182805461090d906110e6565b801561095a5780601f1061092f5761010080835404028352916020019161095a565b820191906000526020600020905b81548152906001019060200180831161093d57829003601f168201915b5050505050815260200190600101906108c2565b60008054610100900460ff161561098e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610aeb57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490610a199083907f6661696c656400000000000000000000000000000000000000000000000000009060200161114a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a55929160200161118d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a8d916111a6565b6000604051808303816000865af19150503d8060008114610aca576040519150601f19603f3d011682016040523d82523d6000602084013e610acf565b606091505b5091505080806020019051810190610ae791906111c6565b9150505b919050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b61089b81604051602401610b7191906111e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610c92565b61089b81604051602401610c009190611063565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610c92565b6000610c8983836000610c9b565b90505b92915050565b61089b81610d59565b6000808383604051602001610cb1929190611238565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020918201209250610d1a91879184917f7f4ec23b80574c0e16ed393051b3518409fd65d40c3018b0df7b07c8e70a0abb9101611258565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af806112b283390190565b600073ffffffffffffffffffffffffffffffffffffffff8216610c8c565b610dae81610d87565b82525050565b610dbe8282610da5565b5060200190565b6000610dcf825190565b808452602093840193830160005b82811015610e0057610df0868351610db4565b9550602082019150600101610ddd565b5093949350505050565b602081526000610c896020830184610dc5565b7fffffffff000000000000000000000000000000000000000000000000000000008116610dae565b610dbe8282610e1d565b6000610e59825190565b808452602093840193830160005b82811015610e0057610e7a868351610e45565b9550602082019150600101610e67565b610e95828251610da5565b6000602082015160406020850152610eb06040850182610e4f565b949350505050565b6000610c898383610e8a565b6000610ece825190565b808452602084018094508160051b8101610ee88560200190565b60005b84811015610f1a578383038852610f03838351610eb8565b925060208201602098909801979150600101610eeb565b50909695505050505050565b602081526000610c896020830184610ec4565b60005b83811015610f54578181015183820152602001610f3c565b50506000910152565b6000610f67825190565b80845260208401610f7c828260208701610f39565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000610c898383610f5d565b6000610fc1825190565b808452602084018094508160051b8101610fdb8560200190565b60005b84811015610f1a578383038852610ff6838351610fab565b925060208201602098909801979150600101610fde565b602081526000610c896020830184610fb7565b801515610dae565b60208101610c8c8284611020565b6000610c8c82610d87565b6000610c8c82611036565b610dae81611041565b60208101610c8c828461104c565b60208101610c8c8284610da5565b61107a81610d87565b811461089b57600080fd5b80518061109181611071565b5092915050565b6000602082840312156110ad576110ad600080fd5b610c898383611085565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c9081908316806110fc57607f821692505b60208310810361110e5761110e6110b7565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b80610dae565b604081016111588285610da5565b6111656020830184611144565b9392505050565b6000611176825190565b83611185828260208701610f39565b019392505050565b6111978184610e1d565b6000610eb0600483018461116c565b6000610c89828461116c565b80151561107a565b805180611091816111b2565b6000602082840312156111db576111db600080fd5b610c8983836111ba565b602081526000610c896020830184610f5d565b6000610c8c8260601b90565b6000610c8c826111f8565b610dae61121b82610d87565b611204565b6000610c8c8260f81b90565b610dae60ff8216611220565b611242818461120f565b61124f601482018361122c565b60150192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260006001820161128b818761120f565b6112986014820186611144565b6112a56034820185611144565b6054019594505050505056fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c63430008160033a2646970667358221220174cd8097bf67cb6d279e3fcb0f692879a3e05038471a6203334d93036c6165d64736f6c63430008160033", "sourceMap": "237:597:68:-:0;;;1572:26:0;;;1594:4;-1:-1:-1;;1572:26:0;;;;;;;;3126:44:4;;;;;;;;;;;237:597:68;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a7c71c5d1161008c578063c45a015511610066578063c45a01551461017e578063e20c9f71146101ab578063fa7626d4146101b3578063fbfa77cf146101c057600080fd5b8063a7c71c5d14610159578063b5508aa914610161578063ba414fa61461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f57806366d9a9a01461012757806385226c811461013c578063916a17c61461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101e0565b005b6101016103ec565b60405161010e9190610e0a565b60405180910390f35b61010161045b565b6101016104c8565b61012f610535565b60405161010e9190610f26565b610144610646565b60405161010e919061100d565b61012f610716565b6100f761081e565b61014461089e565b61017161096e565b60405161010e9190611028565b601b5461019e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405161010e9190611055565b610101610af0565b6000546101719060ff1681565b601c5461019e9073ffffffffffffffffffffffffffffffffffffffff1681565b6040516101ec90610d7a565b604051809103906000f080158015610208573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f666163746f727900000000000000000000000000000000000000000000000000602082015261028b90610b5d565b601b546102ad9073ffffffffffffffffffffffffffffffffffffffff16610bec565b601b546040517f5eb512e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635eb512e790610303903090600401611063565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611098565b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600581527f7661756c7400000000000000000000000000000000000000000000000000000060208201526103c890610b5d565b601c546103ea9073ffffffffffffffffffffffffffffffffffffffff16610bec565b565b6060600d80548060200260200160405190810160405280929190818152602001828054801561045157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575b5050505050905090565b6060600f8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561063d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561062557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105d25790505b50505050508152505081526020019060010190610559565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561063d578382906000526020600020018054610689906110e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106b5906110e6565b80156107025780601f106106d757610100808354040283529160200191610702565b820191906000526020600020905b8154815290600101906020018083116106e557829003601f168201915b50505050508152602001906001019061066a565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561063d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561080657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107b35790505b5050505050815250508152602001906001019061073a565b601c546108409073ffffffffffffffffffffffffffffffffffffffff16610bec565b601b546000906108669073ffffffffffffffffffffffffffffffffffffffff1630610c7b565b905061087181610bec565b601c5473ffffffffffffffffffffffffffffffffffffffff82811691161461089b5761089b611115565b50565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561063d5783829060005260206000200180546108e1906110e6565b80601f016020809104026020016040519081016040528092919081815260200182805461090d906110e6565b801561095a5780601f1061092f5761010080835404028352916020019161095a565b820191906000526020600020905b81548152906001019060200180831161093d57829003601f168201915b5050505050815260200190600101906108c2565b60008054610100900460ff161561098e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610aeb57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490610a199083907f6661696c656400000000000000000000000000000000000000000000000000009060200161114a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a55929160200161118d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a8d916111a6565b6000604051808303816000865af19150503d8060008114610aca576040519150601f19603f3d011682016040523d82523d6000602084013e610acf565b606091505b5091505080806020019051810190610ae791906111c6565b9150505b919050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b61089b81604051602401610b7191906111e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610c92565b61089b81604051602401610c009190611063565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610c92565b6000610c8983836000610c9b565b90505b92915050565b61089b81610d59565b6000808383604051602001610cb1929190611238565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020918201209250610d1a91879184917f139fb90057cc44dea7209d8e9f5b28de2998f4d6d89adbc03951a7e813904e0b9101611258565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af806112b283390190565b600073ffffffffffffffffffffffffffffffffffffffff8216610c8c565b610dae81610d87565b82525050565b610dbe8282610da5565b5060200190565b6000610dcf825190565b808452602093840193830160005b82811015610e0057610df0868351610db4565b9550602082019150600101610ddd565b5093949350505050565b602081526000610c896020830184610dc5565b7fffffffff000000000000000000000000000000000000000000000000000000008116610dae565b610dbe8282610e1d565b6000610e59825190565b808452602093840193830160005b82811015610e0057610e7a868351610e45565b9550602082019150600101610e67565b610e95828251610da5565b6000602082015160406020850152610eb06040850182610e4f565b949350505050565b6000610c898383610e8a565b6000610ece825190565b808452602084018094508160051b8101610ee88560200190565b60005b84811015610f1a578383038852610f03838351610eb8565b925060208201602098909801979150600101610eeb565b50909695505050505050565b602081526000610c896020830184610ec4565b60005b83811015610f54578181015183820152602001610f3c565b50506000910152565b6000610f67825190565b80845260208401610f7c828260208701610f39565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000610c898383610f5d565b6000610fc1825190565b808452602084018094508160051b8101610fdb8560200190565b60005b84811015610f1a578383038852610ff6838351610fab565b925060208201602098909801979150600101610fde565b602081526000610c896020830184610fb7565b801515610dae565b60208101610c8c8284611020565b6000610c8c82610d87565b6000610c8c82611036565b610dae81611041565b60208101610c8c828461104c565b60208101610c8c8284610da5565b61107a81610d87565b811461089b57600080fd5b80518061109181611071565b5092915050565b6000602082840312156110ad576110ad600080fd5b610c898383611085565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c9081908316806110fc57607f821692505b60208310810361110e5761110e6110b7565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b80610dae565b604081016111588285610da5565b6111656020830184611144565b9392505050565b6000611176825190565b83611185828260208701610f39565b019392505050565b6111978184610e1d565b6000610eb0600483018461116c565b6000610c89828461116c565b80151561107a565b805180611091816111b2565b6000602082840312156111db576111db600080fd5b610c8983836111ba565b602081526000610c896020830184610f5d565b6000610c8c8260601b90565b6000610c8c826111f8565b610dae61121b82610d87565b611204565b6000610c8c8260f81b90565b610dae60ff8216611220565b611242818461120f565b61124f601482018361122c565b60150192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260006001820161128b818761120f565b6112986014820186611144565b6112a56034820185611144565b6054019594505050505056fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c63430008160033a2646970667358221220f733b429f96741477b68732e907f3bf393f377ec25259397ede3508aa189eb6b64736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a7c71c5d1161008c578063c45a015511610066578063c45a01551461017e578063e20c9f71146101ab578063fa7626d4146101b3578063fbfa77cf146101c057600080fd5b8063a7c71c5d14610159578063b5508aa914610161578063ba414fa61461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f57806366d9a9a01461012757806385226c811461013c578063916a17c61461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101e0565b005b6101016103ec565b60405161010e9190610e0a565b60405180910390f35b61010161045b565b6101016104c8565b61012f610535565b60405161010e9190610f26565b610144610646565b60405161010e919061100d565b61012f610716565b6100f761081e565b61014461089e565b61017161096e565b60405161010e9190611028565b601b5461019e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405161010e9190611055565b610101610af0565b6000546101719060ff1681565b601c5461019e9073ffffffffffffffffffffffffffffffffffffffff1681565b6040516101ec90610d7a565b604051809103906000f080158015610208573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f666163746f727900000000000000000000000000000000000000000000000000602082015261028b90610b5d565b601b546102ad9073ffffffffffffffffffffffffffffffffffffffff16610bec565b601b546040517f5eb512e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635eb512e790610303903090600401611063565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611098565b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600581527f7661756c7400000000000000000000000000000000000000000000000000000060208201526103c890610b5d565b601c546103ea9073ffffffffffffffffffffffffffffffffffffffff16610bec565b565b6060600d80548060200260200160405190810160405280929190818152602001828054801561045157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575b5050505050905090565b6060600f8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561063d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561062557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105d25790505b50505050508152505081526020019060010190610559565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561063d578382906000526020600020018054610689906110e6565b80601f01602080910402602001604051908101604052809291908181526020018280546106b5906110e6565b80156107025780601f106106d757610100808354040283529160200191610702565b820191906000526020600020905b8154815290600101906020018083116106e557829003601f168201915b50505050508152602001906001019061066a565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561063d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561080657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107b35790505b5050505050815250508152602001906001019061073a565b601c546108409073ffffffffffffffffffffffffffffffffffffffff16610bec565b601b546000906108669073ffffffffffffffffffffffffffffffffffffffff1630610c7b565b905061087181610bec565b601c5473ffffffffffffffffffffffffffffffffffffffff82811691161461089b5761089b611115565b50565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561063d5783829060005260206000200180546108e1906110e6565b80601f016020809104026020016040519081016040528092919081815260200182805461090d906110e6565b801561095a5780601f1061092f5761010080835404028352916020019161095a565b820191906000526020600020905b81548152906001019060200180831161093d57829003601f168201915b5050505050815260200190600101906108c2565b60008054610100900460ff161561098e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610aeb57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490610a199083907f6661696c656400000000000000000000000000000000000000000000000000009060200161114a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a55929160200161118d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a8d916111a6565b6000604051808303816000865af19150503d8060008114610aca576040519150601f19603f3d011682016040523d82523d6000602084013e610acf565b606091505b5091505080806020019051810190610ae791906111c6565b9150505b919050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156104515760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610426575050505050905090565b61089b81604051602401610b7191906111e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610c92565b61089b81604051602401610c009190611063565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc200000000000000000000000000000000000000000000000000000000179052610c92565b6000610c8983836000610c9b565b90505b92915050565b61089b81610d59565b6000808383604051602001610cb1929190611238565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905280516020918201209250610d1a91879184917f7f4ec23b80574c0e16ed393051b3518409fd65d40c3018b0df7b07c8e70a0abb9101611258565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af806112b283390190565b600073ffffffffffffffffffffffffffffffffffffffff8216610c8c565b610dae81610d87565b82525050565b610dbe8282610da5565b5060200190565b6000610dcf825190565b808452602093840193830160005b82811015610e0057610df0868351610db4565b9550602082019150600101610ddd565b5093949350505050565b602081526000610c896020830184610dc5565b7fffffffff000000000000000000000000000000000000000000000000000000008116610dae565b610dbe8282610e1d565b6000610e59825190565b808452602093840193830160005b82811015610e0057610e7a868351610e45565b9550602082019150600101610e67565b610e95828251610da5565b6000602082015160406020850152610eb06040850182610e4f565b949350505050565b6000610c898383610e8a565b6000610ece825190565b808452602084018094508160051b8101610ee88560200190565b60005b84811015610f1a578383038852610f03838351610eb8565b925060208201602098909801979150600101610eeb565b50909695505050505050565b602081526000610c896020830184610ec4565b60005b83811015610f54578181015183820152602001610f3c565b50506000910152565b6000610f67825190565b80845260208401610f7c828260208701610f39565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000610c898383610f5d565b6000610fc1825190565b808452602084018094508160051b8101610fdb8560200190565b60005b84811015610f1a578383038852610ff6838351610fab565b925060208201602098909801979150600101610fde565b602081526000610c896020830184610fb7565b801515610dae565b60208101610c8c8284611020565b6000610c8c82610d87565b6000610c8c82611036565b610dae81611041565b60208101610c8c828461104c565b60208101610c8c8284610da5565b61107a81610d87565b811461089b57600080fd5b80518061109181611071565b5092915050565b6000602082840312156110ad576110ad600080fd5b610c898383611085565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c9081908316806110fc57607f821692505b60208310810361110e5761110e6110b7565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b80610dae565b604081016111588285610da5565b6111656020830184611144565b9392505050565b6000611176825190565b83611185828260208701610f39565b019392505050565b6111978184610e1d565b6000610eb0600483018461116c565b6000610c89828461116c565b80151561107a565b805180611091816111b2565b6000602082840312156111db576111db600080fd5b610c8983836111ba565b602081526000610c896020830184610f5d565b6000610c8c8260601b90565b6000610c8c826111f8565b610dae61121b82610d87565b611204565b6000610c8c8260f81b90565b610dae60ff8216611220565b611242818461120f565b61124f601482018361122c565b60150192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260006001820161128b818761120f565b6112986014820186611144565b6112a56034820185611144565b6054019594505050505056fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a264697066735822122005ffd8df3ac22fcf78ed4c9b957484a9cfc8d0b4bcb952b1b8ea4453c4964f2e64736f6c63430008160033a2646970667358221220174cd8097bf67cb6d279e3fcb0f692879a3e05038471a6203334d93036c6165d64736f6c63430008160033", "sourceMap": "237:597:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:265;;;:::i;:::-;;2170:134:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;2456:178::-;;;:::i;:::-;;;;;;;:::i;2310:140::-;;;:::i;:::-;;;;;;;:::i;2787:146::-;;;:::i;595:237:68:-;;;:::i;1875:141:7:-;;;:::i;1819:584:0:-;;;:::i;:::-;;;;;;;:::i;271:22:68:-;;;;;;;;;;;;;;;;:::i;2022:142:7:-;;;:::i;1572:26:0:-;;;;;;;;;299:18:68;;;;;;;;;324:265;368:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;358:7:68;:23;;;;;;;;;;;;;;;391;;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;445:7;;424:30;;445:7;;424:12;:30::i;:::-;478:7;;:34;;;;;:7;;;;;:19;;:34;;506:4;;478:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;464:5;:49;;;;;;;;;;;;;;;523:21;;;;;;;;;;;;;;;;;;;:12;:21::i;:::-;575:5;;554:28;;575:5;;554:12;:28::i;:::-;324:265::o;2170:134:7:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;2456:178::-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;2310:140::-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2787:146;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;595:237:68;674:5;;653:28;;674:5;;653:12;:28::i;:::-;739:7;;691:9;;703:60;;739:7;;757:4;703:27;:60::i;:::-;691:72;;773:15;786:1;773:12;:15::i;:::-;813:5;;805:19;;;;813:5;;805:19;798:27;;;;:::i;:::-;643:189;595:237::o;1875:141:7:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:0;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:0;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;2023:20;;1671:64;;2135:34;;2196:43;;1671:64;;2221:17;;2196:43;;;:::i;:::-;;;;;;;;;;;;;;;2086:175;;;2196:43;2086:175;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:0:o;2022:142:7:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;6598:121:16:-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;6841:116::-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6890:15;:60::i;849:151:60:-;928:13;960:33;975:7;984:5;991:1;960:14;:33::i;:::-;953:40;;849:151;;;;;:::o;868:133:16:-;939:55;986:7;965:19;939:55::i;1006:501:60:-;1096:13;1121:12;1163:5;1169:3;1146:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;1136:38;;1146:27;1136:38;;;;;-1:-1:-1;1277:180:60;;1352:7;;1136:38;;437:66;;1277:180;;:::i;:::-;;;;;;;;;;;;;;1246:229;;1277:180;1246:229;;;;;1006:501;-1:-1:-1;;;;;1006:501:60:o;1007:380:16:-;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;495:96:69:-;530:7;441:42;430:54;;563:22;362:128;596:106;673:22;689:5;673:22;:::i;:::-;668:3;661:35;;;596:106::o;707:164::-;786:42;824:3;816:6;786:42;:::i;:::-;-1:-1:-1;860:4:69;851:14;;707:164::o;969:506::-;1022:3;1054:37;1085:5;87:12;;14:87;1054:37;204:19;;;256:4;247:14;;;;341;;1246:1;1256:194;1270:6;1267:1;1264:13;1256:194;;;1326:48;1370:3;1361:6;1355:13;1326:48;:::i;:::-;1319:55;-1:-1:-1;350:4:69;341:14;;1387:53;-1:-1:-1;1292:1:69;1285:9;1256:194;;;-1:-1:-1;1466:3:69;;969:506;-1:-1:-1;;;;969:506:69:o;1480:261::-;1659:2;1648:9;1641:21;1622:4;1679:56;1731:2;1720:9;1716:18;1708:6;1679:56;:::i;2631:93::-;2553:66;2542:78;;2696:21;2475:151;2729;2807:30;2833:3;2825:6;2807:30;:::i;2977:500::-;3029:3;3061:36;3091:5;87:12;;14:87;3061:36;204:19;;;256:4;247:14;;;;341;;3250:1;3260:192;3274:6;3271:1;3268:13;3260:192;;;3330:47;3373:3;3364:6;3358:13;3330:47;:::i;:::-;3323:54;-1:-1:-1;350:4:69;341:14;;3390:52;-1:-1:-1;3296:1:69;3289:9;3260:192;;3482:289;3555:48;3599:3;3591:5;3585:12;3555:48;:::i;:::-;3537:3;3649:4;3642:5;3638:16;3632:23;3687:4;3680;3675:3;3671:14;3664:28;3708:57;3759:4;3754:3;3750:14;3736:12;3708:57;:::i;:::-;3701:64;3482:289;-1:-1:-1;;;;3482:289:69:o;3776:154::-;3842:10;3881:43;3920:3;3912:6;3881:43;:::i;4040:731::-;4105:3;4137:49;4180:5;87:12;;14:87;4137:49;204:19;;;256:4;247:14;;4295:5;4288:12;;4339:6;4336:1;4332:14;4325:5;4321:26;4370:51;4415:5;350:4;341:14;;272:85;4370:51;4439:1;4449:296;4463:6;4460:1;4457:13;4449:296;;;4534:5;4528:4;4524:16;4519:3;4512:29;4562:61;4618:4;4609:6;4603:13;4562:61;:::i;:::-;4554:69;-1:-1:-1;350:4:69;341:14;;4730:4;4721:14;;;;;4636:65;-1:-1:-1;4485:1:69;4478:9;4449:296;;;-1:-1:-1;4761:4:69;;4040:731;-1:-1:-1;;;;;;4040:731:69:o;4776:333::-;5015:2;5004:9;4997:21;4978:4;5035:68;5099:2;5088:9;5084:18;5076:6;5035:68;:::i;5695:250::-;5780:1;5790:113;5804:6;5801:1;5798:13;5790:113;;;5880:11;;;5874:18;5861:11;;;5854:39;5826:2;5819:10;5790:113;;;-1:-1:-1;;5937:1:69;5919:16;;5912:27;5695:250::o;6117:317::-;6170:3;6202:26;6222:5;87:12;;14:87;6202:26;204:19;;;256:4;247:14;;6307:67;6367:6;6360:5;6353:4;6346:5;6342:16;6307:67;:::i;:::-;6039:66;6034:2;6023:14;;6019:87;6390:38;;6117:317;-1:-1:-1;;;;6117:317:69:o;6439:139::-;6492:10;6531:41;6568:3;6560:6;6531:41;:::i;6675:653::-;6727:3;6759:36;6789:5;87:12;;14:87;6759:36;204:19;;;256:4;247:14;;6891:5;6884:12;;6935:6;6932:1;6928:14;6921:5;6917:26;6966:38;6998:5;350:4;341:14;;272:85;6966:38;7022:1;7032:270;7046:6;7043:1;7040:13;7032:270;;;7117:5;7111:4;7107:16;7102:3;7095:29;7145:48;7188:4;7179:6;7173:13;7145:48;:::i;:::-;7137:56;-1:-1:-1;350:4:69;341:14;;7287:4;7278:14;;;;;7206:52;-1:-1:-1;7068:1:69;7061:9;7032:270;;7333:280;7532:2;7521:9;7514:21;7495:4;7552:55;7603:2;7592:9;7588:18;7580:6;7552:55;:::i;7715:89::-;7690:13;;7683:21;7778:19;7618:92;7809:180;7937:2;7922:18;;7949:34;7926:9;7965:6;7949:34;:::i;8194:122::-;8240:9;8277:33;8304:5;8277:33;:::i;8321:131::-;8376:9;8413:33;8440:5;8413:33;:::i;8457:124::-;8532:42;8568:5;8532:42;:::i;8586:215::-;8737:2;8722:18;;8749:46;8726:9;8777:6;8749:46;:::i;9548:189::-;9682:2;9667:18;;9694:37;9671:9;9713:6;9694:37;:::i;9965:138::-;10048:30;10072:5;10048:30;:::i;:::-;10041:5;10038:41;10028:69;;10093:1;10090;10083:12;10108:192;10206:13;;;10253:41;10206:13;10253:41;:::i;:::-;;10108:192;;;;:::o;10305:328::-;10383:6;10436:2;10424:9;10415:7;10411:23;10407:32;10404:147;;;10462:79;237:597:68;;;10462:79:69;10570:57;10619:7;10608:9;10570:57;:::i;10638:184::-;10690:77;10687:1;10680:88;10787:4;10784:1;10777:15;10811:4;10808:1;10801:15;10827:318;10912:1;10908:12;;;;;;10982;;;11003:63;;11059:4;11049:8;11045:19;11035:29;;11003:63;11112:2;11104:6;11101:14;11081:18;11078:38;11075:64;;11119:18;;:::i;:::-;11075:64;;10827:318;;;:::o;11150:184::-;11202:77;11199:1;11192:88;11299:4;11296:1;11289:15;11323:4;11320:1;11313:15;11411:106;11504:5;11488:22;7994:52;11522:283;11684:2;11669:18;;11696:37;11673:9;11715:6;11696:37;:::i;:::-;11742:57;11795:2;11784:9;11780:18;11772:6;11742:57;:::i;:::-;11522:283;;;;;:::o;12228:301::-;12269:3;12301:25;12320:5;87:12;;14:87;12301:25;12401:3;12422:67;12482:6;12475:5;12468:4;12461:5;12457:16;12422:67;:::i;:::-;12505:18;;12228:301;-1:-1:-1;;;12228:301:69:o;12534:290::-;12707:58;12761:3;12753:6;12707:58;:::i;:::-;12689:3;12781:37;12815:1;12810:3;12806:11;12798:6;12781:37;:::i;12829:189::-;12958:3;12983:29;13008:3;13000:6;12983:29;:::i;13023:116::-;7690:13;;7683:21;13095:19;7618:92;13144:170;13231:13;;;13278:30;13231:13;13278:30;:::i;13319:306::-;13386:6;13439:2;13427:9;13418:7;13414:23;13410:32;13407:147;;;13465:79;237:597:68;;;13465:79:69;13573:46;13611:7;13600:9;13573:46;:::i;14116:220::-;14265:2;14254:9;14247:21;14228:4;14285:45;14326:2;14315:9;14311:18;14303:6;14285:45;:::i;14419:81::-;14456:7;14481:17;14492:5;14402:2;14398:14;;14341:73;14505:100;14542:7;14575:24;14593:5;14575:24;:::i;14610:143::-;14705:41;14723:22;14739:5;14723:22;:::i;:::-;14705:41;:::i;14922:95::-;14957:7;14990:21;15005:5;14904:3;14900:15;;14839:78;15022:108;15086:37;14827:4;14816:16;;15086:37;:::i;15135:294::-;15288:60;15344:3;15336:6;15288:60;:::i;:::-;15357:38;15391:2;15386:3;15382:12;15374:6;15357:38;:::i;:::-;15420:2;15411:12;;15135:294;-1:-1:-1;;15135:294:69:o;16245:542::-;15691:66;15676:82;;16513:3;16039:1;16028:13;;16587:62;16643:5;16635:6;16587:62;:::i;:::-;16658:42;16696:2;16689:5;16685:14;16677:6;16658:42;:::i;:::-;16709;16747:2;16740:5;16736:14;16728:6;16709:42;:::i;:::-;16778:2;16767:14;;16245:542;-1:-1:-1;;;;;16245:542:69:o", "linkReferences": {} }, @@ -585,7 +585,7 @@ "testDeterministicAddress()": "a7c71c5d", "vault()": "fbfa77cf" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeterministicAddress\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract Vault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestVault.sol\":\"TestVault\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultAddress.sol\":{\"keccak256\":\"0xd77e6ac60a757dd7646be0da2febe56815337241baa9f409ba26edb5b0c9480e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ba067b88569ded9107ae1c2d9c7ec91e94d88715dfd892a46401ac6e1b54e2b1\",\"dweb:/ipfs/QmSix5jf1wAjNt4urYZxQSpbFxc4ozWYKNYBje9gSfxBVi\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/TestVault.sol\":{\"keccak256\":\"0x1f8b949da7ec71052acac57ead561b3af2226392666e50a58d7948e630beac34\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3db087e2f658187f52cde1523e7199bb6ad593cd9caefab0ac50616de89328ae\",\"dweb:/ipfs/QmdN9GradCAtovYBKgU74HoSNwKcjkNFs97ikeVAXKqpre\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeterministicAddress\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract Vault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestVault.sol\":\"TestVault\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultAddress.sol\":{\"keccak256\":\"0xeafbf61cd4bba0497a1b0f4d8600362f85eb674dbe5ee163ba6525ed03528c98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://40ccdd613b0bed3356189df33de8ff07034fdf344b506b0f39e6957be0f0e67a\",\"dweb:/ipfs/Qmd86i2u8TxzxzuL4j6YeXMoVHu3VoVcraYbstFBWZp61h\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/TestVault.sol\":{\"keccak256\":\"0x1f8b949da7ec71052acac57ead561b3af2226392666e50a58d7948e630beac34\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3db087e2f658187f52cde1523e7199bb6ad593cd9caefab0ac50616de89328ae\",\"dweb:/ipfs/QmdN9GradCAtovYBKgU74HoSNwKcjkNFs97ikeVAXKqpre\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -1519,10 +1519,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -1559,10 +1559,10 @@ "license": "UNLICENSED" }, "src/VaultAddress.sol": { - "keccak256": "0xd77e6ac60a757dd7646be0da2febe56815337241baa9f409ba26edb5b0c9480e", + "keccak256": "0xeafbf61cd4bba0497a1b0f4d8600362f85eb674dbe5ee163ba6525ed03528c98", "urls": [ - "bzz-raw://ba067b88569ded9107ae1c2d9c7ec91e94d88715dfd892a46401ac6e1b54e2b1", - "dweb:/ipfs/QmSix5jf1wAjNt4urYZxQSpbFxc4ozWYKNYBje9gSfxBVi" + "bzz-raw://40ccdd613b0bed3356189df33de8ff07034fdf344b506b0f39e6957be0f0e67a", + "dweb:/ipfs/Qmd86i2u8TxzxzuL4j6YeXMoVHu3VoVcraYbstFBWZp61h" ], "license": "UNLICENSED" }, @@ -1595,16 +1595,16 @@ }, "ast": { "absolutePath": "test/TestVault.sol", - "id": 51871, + "id": 51868, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "DSTest": [ 2291 ], "Factory": [ - 46430 + 46427 ], "IERC165": [ 43789 @@ -1667,10 +1667,10 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 @@ -1703,22 +1703,22 @@ 2357 ], "TestVault": [ - 51870 + 51867 ], "TransferHelper": [ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Vault": [ - 49181 + 49178 ], "VaultAddress": [ - 49317 + 49314 ], "VaultDeployer": [ - 49436 + 49433 ], "Vm": [ 13464 @@ -1749,7 +1749,7 @@ "src": "39:796:68", "nodes": [ { - "id": 51761, + "id": 51758, "nodeType": "PragmaDirective", "src": "39:24:68", "nodes": [], @@ -1761,59 +1761,59 @@ ] }, { - "id": 51762, + "id": 51759, "nodeType": "ImportDirective", "src": "91:32:68", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 51871, + "scope": 51868, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 51763, + "id": 51760, "nodeType": "ImportDirective", "src": "124:28:68", "nodes": [], "absolutePath": "src/Factory.sol", "file": "../src/Factory.sol", "nameLocation": "-1:-1:-1", - "scope": 51871, - "sourceUnit": 46431, + "scope": 51868, + "sourceUnit": 46428, "symbolAliases": [], "unitAlias": "" }, { - "id": 51764, + "id": 51761, "nodeType": "ImportDirective", "src": "153:33:68", "nodes": [], "absolutePath": "src/VaultAddress.sol", "file": "../src/VaultAddress.sol", "nameLocation": "-1:-1:-1", - "scope": 51871, - "sourceUnit": 49318, + "scope": 51868, + "sourceUnit": 49315, "symbolAliases": [], "unitAlias": "" }, { - "id": 51765, + "id": 51762, "nodeType": "ImportDirective", "src": "187:28:68", "nodes": [], "absolutePath": "lib/forge-std/src/Test.sol", "file": "forge-std/Test.sol", "nameLocation": "-1:-1:-1", - "scope": 51871, + "scope": 51868, "sourceUnit": 11938, "symbolAliases": [], "unitAlias": "" }, { - "id": 51766, + "id": 51763, "nodeType": "PragmaDirective", "src": "216:19:68", "nodes": [], @@ -1823,12 +1823,12 @@ ] }, { - "id": 51870, + "id": 51867, "nodeType": "ContractDefinition", "src": "237:597:68", "nodes": [ { - "id": 51771, + "id": 51768, "nodeType": "VariableDeclaration", "src": "271:22:68", "nodes": [], @@ -1837,37 +1837,37 @@ "mutability": "mutable", "name": "factory", "nameLocation": "286:7:68", - "scope": 51870, + "scope": 51867, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" }, "typeName": { - "id": 51770, + "id": 51767, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51769, + "id": 51766, "name": "Factory", "nameLocations": [ "271:7:68" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "271:7:68" }, - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "271:7:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, "visibility": "public" }, { - "id": 51774, + "id": 51771, "nodeType": "VariableDeclaration", "src": "299:18:68", "nodes": [], @@ -1876,62 +1876,62 @@ "mutability": "mutable", "name": "vault", "nameLocation": "312:5:68", - "scope": 51870, + "scope": 51867, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" }, "typeName": { - "id": 51773, + "id": 51770, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51772, + "id": 51769, "name": "Vault", "nameLocations": [ "299:5:68" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "299:5:68" }, - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "299:5:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, "visibility": "public" }, { - "id": 51827, + "id": 51824, "nodeType": "FunctionDefinition", "src": "324:265:68", "nodes": [], "body": { - "id": 51826, + "id": 51823, "nodeType": "Block", "src": "348:241:68", "nodes": [], "statements": [ { "expression": { - "id": 51782, + "id": 51779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 51777, + "id": 51774, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51771, + "referencedDeclaration": 51768, "src": "358:7:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, @@ -1941,7 +1941,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 51780, + "id": 51777, "isConstant": false, "isLValue": false, "isPure": false, @@ -1949,31 +1949,31 @@ "nodeType": "NewExpression", "src": "368:11:68", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46430_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46427_$", "typeString": "function () returns (contract Factory)" }, "typeName": { - "id": 51779, + "id": 51776, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 51778, + "id": 51775, "name": "Factory", "nameLocations": [ "372:7:68" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "372:7:68" }, - "referencedDeclaration": 46430, + "referencedDeclaration": 46427, "src": "372:7:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } } }, - "id": 51781, + "id": 51778, "isConstant": false, "isLValue": false, "isPure": false, @@ -1985,17 +1985,17 @@ "src": "368:13:68", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, "src": "358:23:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, - "id": 51783, + "id": 51780, "nodeType": "ExpressionStatement", "src": "358:23:68" }, @@ -2004,7 +2004,7 @@ "arguments": [ { "hexValue": "666163746f7279", - "id": 51787, + "id": 51784, "isConstant": false, "isLValue": false, "isPure": true, @@ -2027,7 +2027,7 @@ } ], "expression": { - "id": 51784, + "id": 51781, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2038,7 +2038,7 @@ "typeString": "type(library console2)" } }, - "id": 51786, + "id": 51783, "isConstant": false, "isLValue": false, "isPure": false, @@ -2053,7 +2053,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51788, + "id": 51785, "isConstant": false, "isLValue": false, "isPure": false, @@ -2069,7 +2069,7 @@ "typeString": "tuple()" } }, - "id": 51789, + "id": 51786, "nodeType": "ExpressionStatement", "src": "391:23:68" }, @@ -2079,14 +2079,14 @@ { "arguments": [ { - "id": 51795, + "id": 51792, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51771, + "referencedDeclaration": 51768, "src": "445:7:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } } @@ -2094,11 +2094,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } ], - "id": 51794, + "id": 51791, "isConstant": false, "isLValue": false, "isPure": true, @@ -2110,14 +2110,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51793, + "id": 51790, "name": "address", "nodeType": "ElementaryTypeName", "src": "437:7:68", "typeDescriptions": {} } }, - "id": 51796, + "id": 51793, "isConstant": false, "isLValue": false, "isPure": false, @@ -2142,7 +2142,7 @@ } ], "expression": { - "id": 51790, + "id": 51787, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2153,7 +2153,7 @@ "typeString": "type(library console2)" } }, - "id": 51792, + "id": 51789, "isConstant": false, "isLValue": false, "isPure": false, @@ -2168,7 +2168,7 @@ "typeString": "function (address) pure" } }, - "id": 51797, + "id": 51794, "isConstant": false, "isLValue": false, "isPure": false, @@ -2184,26 +2184,26 @@ "typeString": "tuple()" } }, - "id": 51798, + "id": 51795, "nodeType": "ExpressionStatement", "src": "424:30:68" }, { "expression": { - "id": 51809, + "id": 51806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 51799, + "id": 51796, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51774, + "referencedDeclaration": 51771, "src": "464:5:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, @@ -2216,14 +2216,14 @@ { "arguments": [ { - "id": 51805, + "id": 51802, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "506:4:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_TestVault_$51870", + "typeIdentifier": "t_contract$_TestVault_$51867", "typeString": "contract TestVault" } } @@ -2231,11 +2231,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_TestVault_$51870", + "typeIdentifier": "t_contract$_TestVault_$51867", "typeString": "contract TestVault" } ], - "id": 51804, + "id": 51801, "isConstant": false, "isLValue": false, "isPure": true, @@ -2247,14 +2247,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51803, + "id": 51800, "name": "address", "nodeType": "ElementaryTypeName", "src": "498:7:68", "typeDescriptions": {} } }, - "id": 51806, + "id": 51803, "isConstant": false, "isLValue": false, "isPure": false, @@ -2279,18 +2279,18 @@ } ], "expression": { - "id": 51801, + "id": 51798, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51771, + "referencedDeclaration": 51768, "src": "478:7:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } }, - "id": 51802, + "id": 51799, "isConstant": false, "isLValue": false, "isPure": false, @@ -2298,14 +2298,14 @@ "memberLocation": "486:11:68", "memberName": "deployVault", "nodeType": "MemberAccess", - "referencedDeclaration": 49375, + "referencedDeclaration": 49372, "src": "478:19:68", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_address_payable_$", "typeString": "function (address) external returns (address payable)" } }, - "id": 51807, + "id": 51804, "isConstant": false, "isLValue": false, "isPure": false, @@ -2329,18 +2329,18 @@ "typeString": "address payable" } ], - "id": 51800, + "id": 51797, "name": "Vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "472:5:68", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Vault_$49181_$", + "typeIdentifier": "t_type$_t_contract$_Vault_$49178_$", "typeString": "type(contract Vault)" } }, - "id": 51808, + "id": 51805, "isConstant": false, "isLValue": false, "isPure": false, @@ -2352,17 +2352,17 @@ "src": "472:41:68", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, "src": "464:49:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } }, - "id": 51810, + "id": 51807, "nodeType": "ExpressionStatement", "src": "464:49:68" }, @@ -2371,7 +2371,7 @@ "arguments": [ { "hexValue": "7661756c74", - "id": 51814, + "id": 51811, "isConstant": false, "isLValue": false, "isPure": true, @@ -2394,7 +2394,7 @@ } ], "expression": { - "id": 51811, + "id": 51808, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2405,7 +2405,7 @@ "typeString": "type(library console2)" } }, - "id": 51813, + "id": 51810, "isConstant": false, "isLValue": false, "isPure": false, @@ -2420,7 +2420,7 @@ "typeString": "function (string memory) pure" } }, - "id": 51815, + "id": 51812, "isConstant": false, "isLValue": false, "isPure": false, @@ -2436,7 +2436,7 @@ "typeString": "tuple()" } }, - "id": 51816, + "id": 51813, "nodeType": "ExpressionStatement", "src": "523:21:68" }, @@ -2446,14 +2446,14 @@ { "arguments": [ { - "id": 51822, + "id": 51819, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51774, + "referencedDeclaration": 51771, "src": "575:5:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -2461,11 +2461,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 51821, + "id": 51818, "isConstant": false, "isLValue": false, "isPure": true, @@ -2477,14 +2477,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51820, + "id": 51817, "name": "address", "nodeType": "ElementaryTypeName", "src": "567:7:68", "typeDescriptions": {} } }, - "id": 51823, + "id": 51820, "isConstant": false, "isLValue": false, "isPure": false, @@ -2509,7 +2509,7 @@ } ], "expression": { - "id": 51817, + "id": 51814, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2520,7 +2520,7 @@ "typeString": "type(library console2)" } }, - "id": 51819, + "id": 51816, "isConstant": false, "isLValue": false, "isPure": false, @@ -2535,7 +2535,7 @@ "typeString": "function (address) pure" } }, - "id": 51824, + "id": 51821, "isConstant": false, "isLValue": false, "isPure": false, @@ -2551,7 +2551,7 @@ "typeString": "tuple()" } }, - "id": 51825, + "id": 51822, "nodeType": "ExpressionStatement", "src": "554:28:68" } @@ -2564,29 +2564,29 @@ "name": "setUp", "nameLocation": "333:5:68", "parameters": { - "id": 51775, + "id": 51772, "nodeType": "ParameterList", "parameters": [], "src": "338:2:68" }, "returnParameters": { - "id": 51776, + "id": 51773, "nodeType": "ParameterList", "parameters": [], "src": "348:0:68" }, - "scope": 51870, + "scope": 51867, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 51869, + "id": 51866, "nodeType": "FunctionDefinition", "src": "595:237:68", "nodes": [], "body": { - "id": 51868, + "id": 51865, "nodeType": "Block", "src": "643:189:68", "nodes": [], @@ -2597,14 +2597,14 @@ { "arguments": [ { - "id": 51835, + "id": 51832, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51774, + "referencedDeclaration": 51771, "src": "674:5:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -2612,11 +2612,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 51834, + "id": 51831, "isConstant": false, "isLValue": false, "isPure": true, @@ -2628,14 +2628,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51833, + "id": 51830, "name": "address", "nodeType": "ElementaryTypeName", "src": "666:7:68", "typeDescriptions": {} } }, - "id": 51836, + "id": 51833, "isConstant": false, "isLValue": false, "isPure": false, @@ -2660,7 +2660,7 @@ } ], "expression": { - "id": 51830, + "id": 51827, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2671,7 +2671,7 @@ "typeString": "type(library console2)" } }, - "id": 51832, + "id": 51829, "isConstant": false, "isLValue": false, "isPure": false, @@ -2686,7 +2686,7 @@ "typeString": "function (address) pure" } }, - "id": 51837, + "id": 51834, "isConstant": false, "isLValue": false, "isPure": false, @@ -2702,23 +2702,23 @@ "typeString": "tuple()" } }, - "id": 51838, + "id": 51835, "nodeType": "ExpressionStatement", "src": "653:28:68" }, { "assignments": [ - 51840 + 51837 ], "declarations": [ { "constant": false, - "id": 51840, + "id": 51837, "mutability": "mutable", "name": "d", "nameLocation": "699:1:68", "nodeType": "VariableDeclaration", - "scope": 51868, + "scope": 51865, "src": "691:9:68", "stateVariable": false, "storageLocation": "default", @@ -2727,7 +2727,7 @@ "typeString": "address" }, "typeName": { - "id": 51839, + "id": 51836, "name": "address", "nodeType": "ElementaryTypeName", "src": "691:7:68", @@ -2740,20 +2740,20 @@ "visibility": "internal" } ], - "id": 51852, + "id": 51849, "initialValue": { "arguments": [ { "arguments": [ { - "id": 51845, + "id": 51842, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51771, + "referencedDeclaration": 51768, "src": "739:7:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } } @@ -2761,11 +2761,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Factory_$46430", + "typeIdentifier": "t_contract$_Factory_$46427", "typeString": "contract Factory" } ], - "id": 51844, + "id": 51841, "isConstant": false, "isLValue": false, "isPure": true, @@ -2777,14 +2777,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51843, + "id": 51840, "name": "address", "nodeType": "ElementaryTypeName", "src": "731:7:68", "typeDescriptions": {} } }, - "id": 51846, + "id": 51843, "isConstant": false, "isLValue": false, "isPure": false, @@ -2803,14 +2803,14 @@ { "arguments": [ { - "id": 51849, + "id": 51846, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "757:4:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_TestVault_$51870", + "typeIdentifier": "t_contract$_TestVault_$51867", "typeString": "contract TestVault" } } @@ -2818,11 +2818,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_TestVault_$51870", + "typeIdentifier": "t_contract$_TestVault_$51867", "typeString": "contract TestVault" } ], - "id": 51848, + "id": 51845, "isConstant": false, "isLValue": false, "isPure": true, @@ -2834,14 +2834,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51847, + "id": 51844, "name": "address", "nodeType": "ElementaryTypeName", "src": "749:7:68", "typeDescriptions": {} } }, - "id": 51850, + "id": 51847, "isConstant": false, "isLValue": false, "isPure": false, @@ -2870,18 +2870,18 @@ } ], "expression": { - "id": 51841, + "id": 51838, "name": "VaultAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49317, + "referencedDeclaration": 49314, "src": "703:12:68", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_VaultAddress_$49317_$", + "typeIdentifier": "t_type$_t_contract$_VaultAddress_$49314_$", "typeString": "type(library VaultAddress)" } }, - "id": 51842, + "id": 51839, "isConstant": false, "isLValue": false, "isPure": false, @@ -2889,14 +2889,14 @@ "memberLocation": "716:14:68", "memberName": "computeAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 49273, + "referencedDeclaration": 49270, "src": "703:27:68", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) pure returns (address)" } }, - "id": 51851, + "id": 51848, "isConstant": false, "isLValue": false, "isPure": false, @@ -2919,11 +2919,11 @@ "expression": { "arguments": [ { - "id": 51856, + "id": 51853, "name": "d", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51840, + "referencedDeclaration": 51837, "src": "786:1:68", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2939,7 +2939,7 @@ } ], "expression": { - "id": 51853, + "id": 51850, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2950,7 +2950,7 @@ "typeString": "type(library console2)" } }, - "id": 51855, + "id": 51852, "isConstant": false, "isLValue": false, "isPure": false, @@ -2965,7 +2965,7 @@ "typeString": "function (address) pure" } }, - "id": 51857, + "id": 51854, "isConstant": false, "isLValue": false, "isPure": false, @@ -2981,7 +2981,7 @@ "typeString": "tuple()" } }, - "id": 51858, + "id": 51855, "nodeType": "ExpressionStatement", "src": "773:15:68" }, @@ -2993,7 +2993,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 51865, + "id": 51862, "isConstant": false, "isLValue": false, "isPure": false, @@ -3001,14 +3001,14 @@ "leftExpression": { "arguments": [ { - "id": 51862, + "id": 51859, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51774, + "referencedDeclaration": 51771, "src": "813:5:68", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -3016,11 +3016,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 51861, + "id": 51858, "isConstant": false, "isLValue": false, "isPure": true, @@ -3032,14 +3032,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 51860, + "id": 51857, "name": "address", "nodeType": "ElementaryTypeName", "src": "805:7:68", "typeDescriptions": {} } }, - "id": 51863, + "id": 51860, "isConstant": false, "isLValue": false, "isPure": false, @@ -3058,11 +3058,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 51864, + "id": 51861, "name": "d", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 51840, + "referencedDeclaration": 51837, "src": "823:1:68", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3083,7 +3083,7 @@ "typeString": "bool" } ], - "id": 51859, + "id": 51856, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3094,7 +3094,7 @@ "typeString": "function (bool) pure" } }, - "id": 51866, + "id": 51863, "isConstant": false, "isLValue": false, "isPure": false, @@ -3110,7 +3110,7 @@ "typeString": "tuple()" } }, - "id": 51867, + "id": 51864, "nodeType": "ExpressionStatement", "src": "798:27:68" } @@ -3123,18 +3123,18 @@ "name": "testDeterministicAddress", "nameLocation": "604:24:68", "parameters": { - "id": 51828, + "id": 51825, "nodeType": "ParameterList", "parameters": [], "src": "628:2:68" }, "returnParameters": { - "id": 51829, + "id": 51826, "nodeType": "ParameterList", "parameters": [], "src": "643:0:68" }, - "scope": 51870, + "scope": 51867, "stateMutability": "view", "virtual": false, "visibility": "public" @@ -3144,7 +3144,7 @@ "baseContracts": [ { "baseName": { - "id": 51767, + "id": 51764, "name": "Test", "nameLocations": [ "259:4:68" @@ -3153,14 +3153,14 @@ "referencedDeclaration": 11937, "src": "259:4:68" }, - "id": 51768, + "id": 51765, "nodeType": "InheritanceSpecifier", "src": "259:4:68" } ], "canonicalName": "TestVault", "contractDependencies": [ - 46430 + 46427 ], "contractKind": "contract", "fullyImplemented": true, @@ -3168,7 +3168,7 @@ "21582": 1 }, "linearizedBaseContracts": [ - 51870, + 51867, 11937, 2357, 2354, @@ -3182,7 +3182,7 @@ ], "name": "TestVault", "nameLocation": "246:9:68", - "scope": 51871, + "scope": 51868, "usedErrors": [], "usedEvents": [ 5, diff --git a/deployment/alpha/out/UniswapSwapper.sol/UniswapSwapper.json b/deployment/alpha/out/UniswapSwapper.sol/UniswapSwapper.json index 4fb8f56..6e1b659 100644 --- a/deployment/alpha/out/UniswapSwapper.sol/UniswapSwapper.json +++ b/deployment/alpha/out/UniswapSwapper.sol/UniswapSwapper.json @@ -1,17 +1,17 @@ { "abi": [], "bytecode": { - "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a27cf458e71d491c56b05a642c37c070db77fa0153230bf969e78582e04e833d64736f6c63430008160033", + "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056be2ebce76e4290720561f253dc753a19ee8769db9f15ec48ecc4a27ee349dd64736f6c63430008160033", "sourceMap": "255:5831:56:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;255:5831:56;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a27cf458e71d491c56b05a642c37c070db77fa0153230bf969e78582e04e833d64736f6c63430008160033", + "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056be2ebce76e4290720561f253dc753a19ee8769db9f15ec48ecc4a27ee349dd64736f6c63430008160033", "sourceMap": "255:5831:56:-:0;;;;;;;;", "linkReferences": {} }, "methodIdentifiers": {}, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/UniswapSwapper.sol\":\"UniswapSwapper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/UniswapSwapper.sol\":\"UniswapSwapper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -196,10 +196,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -216,10 +216,10 @@ }, "ast": { "absolutePath": "src/UniswapSwapper.sol", - "id": 48848, + "id": 48845, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "IERC165": [ 43789 @@ -267,7 +267,7 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "console2": [ 29653 @@ -277,7 +277,7 @@ "src": "39:6048:56", "nodes": [ { - "id": 48322, + "id": 48319, "nodeType": "PragmaDirective", "src": "39:24:56", "nodes": [], @@ -289,7 +289,7 @@ ] }, { - "id": 48323, + "id": 48320, "nodeType": "PragmaDirective", "src": "64:19:56", "nodes": [], @@ -299,64 +299,64 @@ ] }, { - "id": 48324, + "id": 48321, "nodeType": "ImportDirective", "src": "85:25:56", "nodes": [], "absolutePath": "src/Constants.sol", "file": "./Constants.sol", "nameLocation": "-1:-1:-1", - "scope": 48848, - "sourceUnit": 46265, + "scope": 48845, + "sourceUnit": 46262, "symbolAliases": [], "unitAlias": "" }, { - "id": 48325, + "id": 48322, "nodeType": "ImportDirective", "src": "111:56:56", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 48848, + "scope": 48845, "sourceUnit": 43557, "symbolAliases": [], "unitAlias": "" }, { - "id": 48326, + "id": 48323, "nodeType": "ImportDirective", "src": "168:51:56", "nodes": [], "absolutePath": "lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol", "file": "v3-periphery/libraries/TransferHelper.sol", "nameLocation": "-1:-1:-1", - "scope": 48848, + "scope": 48845, "sourceUnit": 46064, "symbolAliases": [], "unitAlias": "" }, { - "id": 48327, + "id": 48324, "nodeType": "ImportDirective", "src": "220:32:56", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 48848, + "scope": 48845, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 48847, + "id": 48844, "nodeType": "ContractDefinition", "src": "255:5831:56", "nodes": [ { - "id": 48342, + "id": 48339, "nodeType": "StructDefinition", "src": "285:293:56", "nodes": [], @@ -364,12 +364,12 @@ "members": [ { "constant": false, - "id": 48329, + "id": 48326, "mutability": "mutable", "name": "pool", "nameLocation": "321:4:56", "nodeType": "VariableDeclaration", - "scope": 48342, + "scope": 48339, "src": "313:12:56", "stateVariable": false, "storageLocation": "default", @@ -378,7 +378,7 @@ "typeString": "address" }, "typeName": { - "id": 48328, + "id": 48325, "name": "address", "nodeType": "ElementaryTypeName", "src": "313:7:56", @@ -392,12 +392,12 @@ }, { "constant": false, - "id": 48331, + "id": 48328, "mutability": "mutable", "name": "tokenIn", "nameLocation": "343:7:56", "nodeType": "VariableDeclaration", - "scope": 48342, + "scope": 48339, "src": "335:15:56", "stateVariable": false, "storageLocation": "default", @@ -406,7 +406,7 @@ "typeString": "address" }, "typeName": { - "id": 48330, + "id": 48327, "name": "address", "nodeType": "ElementaryTypeName", "src": "335:7:56", @@ -420,12 +420,12 @@ }, { "constant": false, - "id": 48333, + "id": 48330, "mutability": "mutable", "name": "tokenOut", "nameLocation": "368:8:56", "nodeType": "VariableDeclaration", - "scope": 48342, + "scope": 48339, "src": "360:16:56", "stateVariable": false, "storageLocation": "default", @@ -434,7 +434,7 @@ "typeString": "address" }, "typeName": { - "id": 48332, + "id": 48329, "name": "address", "nodeType": "ElementaryTypeName", "src": "360:7:56", @@ -448,12 +448,12 @@ }, { "constant": false, - "id": 48335, + "id": 48332, "mutability": "mutable", "name": "recipient", "nameLocation": "394:9:56", "nodeType": "VariableDeclaration", - "scope": 48342, + "scope": 48339, "src": "386:17:56", "stateVariable": false, "storageLocation": "default", @@ -462,7 +462,7 @@ "typeString": "address" }, "typeName": { - "id": 48334, + "id": 48331, "name": "address", "nodeType": "ElementaryTypeName", "src": "386:7:56", @@ -476,12 +476,12 @@ }, { "constant": false, - "id": 48337, + "id": 48334, "mutability": "mutable", "name": "fee", "nameLocation": "509:3:56", "nodeType": "VariableDeclaration", - "scope": 48342, + "scope": 48339, "src": "502:10:56", "stateVariable": false, "storageLocation": "default", @@ -490,7 +490,7 @@ "typeString": "uint24" }, "typeName": { - "id": 48336, + "id": 48333, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "502:6:56", @@ -503,12 +503,12 @@ }, { "constant": false, - "id": 48339, + "id": 48336, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:56", "nodeType": "VariableDeclaration", - "scope": 48342, + "scope": 48339, "src": "522:14:56", "stateVariable": false, "storageLocation": "default", @@ -517,7 +517,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48338, + "id": 48335, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:56", @@ -530,12 +530,12 @@ }, { "constant": false, - "id": 48341, + "id": 48338, "mutability": "mutable", "name": "sqrtPriceLimitX96", "nameLocation": "554:17:56", "nodeType": "VariableDeclaration", - "scope": 48342, + "scope": 48339, "src": "546:25:56", "stateVariable": false, "storageLocation": "default", @@ -544,7 +544,7 @@ "typeString": "uint160" }, "typeName": { - "id": 48340, + "id": 48337, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "546:7:56", @@ -558,16 +558,16 @@ ], "name": "SwapParams", "nameLocation": "292:10:56", - "scope": 48847, + "scope": 48844, "visibility": "public" }, { - "id": 48532, + "id": 48529, "nodeType": "FunctionDefinition", "src": "584:1981:56", "nodes": [], "body": { - "id": 48531, + "id": 48528, "nodeType": "Block", "src": "693:1872:56", "nodes": [], @@ -577,7 +577,7 @@ "arguments": [ { "hexValue": "737761704578616374496e70757420617070726f76652e2e2e", - "id": 48355, + "id": 48352, "isConstant": false, "isLValue": false, "isPure": true, @@ -600,7 +600,7 @@ } ], "expression": { - "id": 48352, + "id": 48349, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -611,7 +611,7 @@ "typeString": "type(library console2)" } }, - "id": 48354, + "id": 48351, "isConstant": false, "isLValue": false, "isPure": false, @@ -626,7 +626,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48356, + "id": 48353, "isConstant": false, "isLValue": false, "isPure": false, @@ -642,7 +642,7 @@ "typeString": "tuple()" } }, - "id": 48357, + "id": 48354, "nodeType": "ExpressionStatement", "src": "1065:41:56" }, @@ -652,14 +652,14 @@ { "arguments": [ { - "id": 48363, + "id": 48360, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1137:4:56", "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapSwapper_$48847", + "typeIdentifier": "t_contract$_UniswapSwapper_$48844", "typeString": "library UniswapSwapper" } } @@ -667,11 +667,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_UniswapSwapper_$48847", + "typeIdentifier": "t_contract$_UniswapSwapper_$48844", "typeString": "library UniswapSwapper" } ], - "id": 48362, + "id": 48359, "isConstant": false, "isLValue": false, "isPure": true, @@ -683,14 +683,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48361, + "id": 48358, "name": "address", "nodeType": "ElementaryTypeName", "src": "1129:7:56", "typeDescriptions": {} } }, - "id": 48364, + "id": 48361, "isConstant": false, "isLValue": false, "isPure": false, @@ -715,7 +715,7 @@ } ], "expression": { - "id": 48358, + "id": 48355, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -726,7 +726,7 @@ "typeString": "type(library console2)" } }, - "id": 48360, + "id": 48357, "isConstant": false, "isLValue": false, "isPure": false, @@ -741,7 +741,7 @@ "typeString": "function (address) pure" } }, - "id": 48365, + "id": 48362, "isConstant": false, "isLValue": false, "isPure": false, @@ -757,7 +757,7 @@ "typeString": "tuple()" } }, - "id": 48366, + "id": 48363, "nodeType": "ExpressionStatement", "src": "1116:27:56" }, @@ -766,18 +766,18 @@ "arguments": [ { "expression": { - "id": 48370, + "id": 48367, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1166:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48371, + "id": 48368, "isConstant": false, "isLValue": true, "isPure": false, @@ -785,7 +785,7 @@ "memberLocation": "1173:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "1166:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -801,7 +801,7 @@ } ], "expression": { - "id": 48367, + "id": 48364, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -812,7 +812,7 @@ "typeString": "type(library console2)" } }, - "id": 48369, + "id": 48366, "isConstant": false, "isLValue": false, "isPure": false, @@ -827,7 +827,7 @@ "typeString": "function (address) pure" } }, - "id": 48372, + "id": 48369, "isConstant": false, "isLValue": false, "isPure": false, @@ -843,7 +843,7 @@ "typeString": "tuple()" } }, - "id": 48373, + "id": 48370, "nodeType": "ExpressionStatement", "src": "1153:28:56" }, @@ -852,18 +852,18 @@ "arguments": [ { "expression": { - "id": 48377, + "id": 48374, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1204:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48378, + "id": 48375, "isConstant": false, "isLValue": true, "isPure": false, @@ -871,7 +871,7 @@ "memberLocation": "1211:8:56", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 48333, + "referencedDeclaration": 48330, "src": "1204:15:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -887,7 +887,7 @@ } ], "expression": { - "id": 48374, + "id": 48371, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -898,7 +898,7 @@ "typeString": "type(library console2)" } }, - "id": 48376, + "id": 48373, "isConstant": false, "isLValue": false, "isPure": false, @@ -913,7 +913,7 @@ "typeString": "function (address) pure" } }, - "id": 48379, + "id": 48376, "isConstant": false, "isLValue": false, "isPure": false, @@ -929,7 +929,7 @@ "typeString": "tuple()" } }, - "id": 48380, + "id": 48377, "nodeType": "ExpressionStatement", "src": "1191:29:56" }, @@ -940,18 +940,18 @@ "arguments": [ { "expression": { - "id": 48386, + "id": 48383, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1248:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48387, + "id": 48384, "isConstant": false, "isLValue": true, "isPure": false, @@ -959,7 +959,7 @@ "memberLocation": "1255:3:56", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 48337, + "referencedDeclaration": 48334, "src": "1248:10:56", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -974,7 +974,7 @@ "typeString": "uint24" } ], - "id": 48385, + "id": 48382, "isConstant": false, "isLValue": false, "isPure": true, @@ -986,14 +986,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 48384, + "id": 48381, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1243:4:56", "typeDescriptions": {} } }, - "id": 48388, + "id": 48385, "isConstant": false, "isLValue": false, "isPure": false, @@ -1018,7 +1018,7 @@ } ], "expression": { - "id": 48381, + "id": 48378, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1029,7 +1029,7 @@ "typeString": "type(library console2)" } }, - "id": 48383, + "id": 48380, "isConstant": false, "isLValue": false, "isPure": false, @@ -1044,7 +1044,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48389, + "id": 48386, "isConstant": false, "isLValue": false, "isPure": false, @@ -1060,7 +1060,7 @@ "typeString": "tuple()" } }, - "id": 48390, + "id": 48387, "nodeType": "ExpressionStatement", "src": "1230:30:56" }, @@ -1071,18 +1071,18 @@ "arguments": [ { "expression": { - "id": 48396, + "id": 48393, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1291:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48397, + "id": 48394, "isConstant": false, "isLValue": true, "isPure": false, @@ -1090,7 +1090,7 @@ "memberLocation": "1298:9:56", "memberName": "recipient", "nodeType": "MemberAccess", - "referencedDeclaration": 48335, + "referencedDeclaration": 48332, "src": "1291:16:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1105,7 +1105,7 @@ "typeString": "address" } ], - "id": 48395, + "id": 48392, "isConstant": false, "isLValue": false, "isPure": true, @@ -1117,14 +1117,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48394, + "id": 48391, "name": "address", "nodeType": "ElementaryTypeName", "src": "1283:7:56", "typeDescriptions": {} } }, - "id": 48398, + "id": 48395, "isConstant": false, "isLValue": false, "isPure": false, @@ -1149,7 +1149,7 @@ } ], "expression": { - "id": 48391, + "id": 48388, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1160,7 +1160,7 @@ "typeString": "type(library console2)" } }, - "id": 48393, + "id": 48390, "isConstant": false, "isLValue": false, "isPure": false, @@ -1175,7 +1175,7 @@ "typeString": "function (address) pure" } }, - "id": 48399, + "id": 48396, "isConstant": false, "isLValue": false, "isPure": false, @@ -1191,7 +1191,7 @@ "typeString": "tuple()" } }, - "id": 48400, + "id": 48397, "nodeType": "ExpressionStatement", "src": "1270:39:56" }, @@ -1200,18 +1200,18 @@ "arguments": [ { "expression": { - "id": 48404, + "id": 48401, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1332:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48405, + "id": 48402, "isConstant": false, "isLValue": true, "isPure": false, @@ -1219,7 +1219,7 @@ "memberLocation": "1339:6:56", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 48339, + "referencedDeclaration": 48336, "src": "1332:13:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1235,7 +1235,7 @@ } ], "expression": { - "id": 48401, + "id": 48398, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1246,7 +1246,7 @@ "typeString": "type(library console2)" } }, - "id": 48403, + "id": 48400, "isConstant": false, "isLValue": false, "isPure": false, @@ -1261,7 +1261,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48406, + "id": 48403, "isConstant": false, "isLValue": false, "isPure": false, @@ -1277,7 +1277,7 @@ "typeString": "tuple()" } }, - "id": 48407, + "id": 48404, "nodeType": "ExpressionStatement", "src": "1319:27:56" }, @@ -1288,18 +1288,18 @@ "arguments": [ { "expression": { - "id": 48413, + "id": 48410, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1374:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48414, + "id": 48411, "isConstant": false, "isLValue": true, "isPure": false, @@ -1307,7 +1307,7 @@ "memberLocation": "1381:17:56", "memberName": "sqrtPriceLimitX96", "nodeType": "MemberAccess", - "referencedDeclaration": 48341, + "referencedDeclaration": 48338, "src": "1374:24:56", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -1322,7 +1322,7 @@ "typeString": "uint160" } ], - "id": 48412, + "id": 48409, "isConstant": false, "isLValue": false, "isPure": true, @@ -1334,14 +1334,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 48411, + "id": 48408, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1369:4:56", "typeDescriptions": {} } }, - "id": 48415, + "id": 48412, "isConstant": false, "isLValue": false, "isPure": false, @@ -1366,7 +1366,7 @@ } ], "expression": { - "id": 48408, + "id": 48405, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1377,7 +1377,7 @@ "typeString": "type(library console2)" } }, - "id": 48410, + "id": 48407, "isConstant": false, "isLValue": false, "isPure": false, @@ -1392,7 +1392,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48416, + "id": 48413, "isConstant": false, "isLValue": false, "isPure": false, @@ -1408,7 +1408,7 @@ "typeString": "tuple()" } }, - "id": 48417, + "id": 48414, "nodeType": "ExpressionStatement", "src": "1356:44:56" }, @@ -1419,18 +1419,18 @@ "arguments": [ { "expression": { - "id": 48423, + "id": 48420, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "1431:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48424, + "id": 48421, "isConstant": false, "isLValue": false, "isPure": true, @@ -1453,7 +1453,7 @@ "typeString": "contract ISwapRouter" } ], - "id": 48422, + "id": 48419, "isConstant": false, "isLValue": false, "isPure": true, @@ -1465,14 +1465,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48421, + "id": 48418, "name": "address", "nodeType": "ElementaryTypeName", "src": "1423:7:56", "typeDescriptions": {} } }, - "id": 48425, + "id": 48422, "isConstant": false, "isLValue": false, "isPure": true, @@ -1497,7 +1497,7 @@ } ], "expression": { - "id": 48418, + "id": 48415, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1508,7 +1508,7 @@ "typeString": "type(library console2)" } }, - "id": 48420, + "id": 48417, "isConstant": false, "isLValue": false, "isPure": false, @@ -1523,7 +1523,7 @@ "typeString": "function (address) pure" } }, - "id": 48426, + "id": 48423, "isConstant": false, "isLValue": false, "isPure": false, @@ -1539,23 +1539,23 @@ "typeString": "tuple()" } }, - "id": 48427, + "id": 48424, "nodeType": "ExpressionStatement", "src": "1410:52:56" }, { "expression": { - "id": 48431, + "id": 48428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48428, + "id": 48425, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48348, + "referencedDeclaration": 48345, "src": "1473:8:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1566,18 +1566,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48429, + "id": 48426, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1484:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48430, + "id": 48427, "isConstant": false, "isLValue": true, "isPure": false, @@ -1585,7 +1585,7 @@ "memberLocation": "1491:6:56", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 48339, + "referencedDeclaration": 48336, "src": "1484:13:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1598,23 +1598,23 @@ "typeString": "uint256" } }, - "id": 48432, + "id": 48429, "nodeType": "ExpressionStatement", "src": "1473:24:56" }, { "assignments": [ - 48434 + 48431 ], "declarations": [ { "constant": false, - "id": 48434, + "id": 48431, "mutability": "mutable", "name": "balance", "nameLocation": "1515:7:56", "nodeType": "VariableDeclaration", - "scope": 48531, + "scope": 48528, "src": "1507:15:56", "stateVariable": false, "storageLocation": "default", @@ -1623,7 +1623,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48433, + "id": 48430, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1507:7:56", @@ -1635,20 +1635,20 @@ "visibility": "internal" } ], - "id": 48445, + "id": 48442, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48442, + "id": 48439, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1566:4:56", "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapSwapper_$48847", + "typeIdentifier": "t_contract$_UniswapSwapper_$48844", "typeString": "library UniswapSwapper" } } @@ -1656,11 +1656,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_UniswapSwapper_$48847", + "typeIdentifier": "t_contract$_UniswapSwapper_$48844", "typeString": "library UniswapSwapper" } ], - "id": 48441, + "id": 48438, "isConstant": false, "isLValue": false, "isPure": true, @@ -1672,14 +1672,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48440, + "id": 48437, "name": "address", "nodeType": "ElementaryTypeName", "src": "1558:7:56", "typeDescriptions": {} } }, - "id": 48443, + "id": 48440, "isConstant": false, "isLValue": false, "isPure": false, @@ -1707,18 +1707,18 @@ "arguments": [ { "expression": { - "id": 48436, + "id": 48433, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1532:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48437, + "id": 48434, "isConstant": false, "isLValue": true, "isPure": false, @@ -1726,7 +1726,7 @@ "memberLocation": "1539:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "1532:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1741,7 +1741,7 @@ "typeString": "address" } ], - "id": 48435, + "id": 48432, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1752,7 +1752,7 @@ "typeString": "type(contract IERC20)" } }, - "id": 48438, + "id": 48435, "isConstant": false, "isLValue": false, "isPure": false, @@ -1768,7 +1768,7 @@ "typeString": "contract IERC20" } }, - "id": 48439, + "id": 48436, "isConstant": false, "isLValue": false, "isPure": false, @@ -1783,7 +1783,7 @@ "typeString": "function (address) view external returns (uint256)" } }, - "id": 48444, + "id": 48441, "isConstant": false, "isLValue": false, "isPure": false, @@ -1808,17 +1808,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48448, + "id": 48445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48446, + "id": 48443, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48434, + "referencedDeclaration": 48431, "src": "1586:7:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1829,7 +1829,7 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 48447, + "id": 48444, "isConstant": false, "isLValue": false, "isPure": true, @@ -1849,11 +1849,11 @@ "typeString": "bool" } }, - "id": 48454, + "id": 48451, "nodeType": "IfStatement", "src": "1582:83:56", "trueBody": { - "id": 48453, + "id": 48450, "nodeType": "Block", "src": "1601:64:56", "statements": [ @@ -1862,7 +1862,7 @@ "arguments": [ { "hexValue": "494941", - "id": 48450, + "id": 48447, "isConstant": false, "isLValue": false, "isPure": true, @@ -1884,7 +1884,7 @@ "typeString": "literal_string \"IIA\"" } ], - "id": 48449, + "id": 48446, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1898,7 +1898,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48451, + "id": 48448, "isConstant": false, "isLValue": false, "isPure": false, @@ -1914,7 +1914,7 @@ "typeString": "tuple()" } }, - "id": 48452, + "id": 48449, "nodeType": "ExpressionStatement", "src": "1641:13:56" } @@ -1927,17 +1927,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48457, + "id": 48454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48455, + "id": 48452, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48434, + "referencedDeclaration": 48431, "src": "1678:7:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1947,11 +1947,11 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 48456, + "id": 48453, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48348, + "referencedDeclaration": 48345, "src": "1688:8:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1964,22 +1964,22 @@ "typeString": "bool" } }, - "id": 48462, + "id": 48459, "nodeType": "IfStatement", "src": "1674:55:56", "trueBody": { "expression": { - "id": 48460, + "id": 48457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48458, + "id": 48455, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48348, + "referencedDeclaration": 48345, "src": "1711:8:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1989,11 +1989,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48459, + "id": 48456, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48434, + "referencedDeclaration": 48431, "src": "1722:7:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2006,7 +2006,7 @@ "typeString": "uint256" } }, - "id": 48461, + "id": 48458, "nodeType": "ExpressionStatement", "src": "1711:18:56" } @@ -2016,18 +2016,18 @@ "arguments": [ { "expression": { - "id": 48466, + "id": 48463, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "1767:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48467, + "id": 48464, "isConstant": false, "isLValue": true, "isPure": false, @@ -2035,7 +2035,7 @@ "memberLocation": "1774:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "1767:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2046,18 +2046,18 @@ "arguments": [ { "expression": { - "id": 48470, + "id": 48467, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "1791:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48471, + "id": 48468, "isConstant": false, "isLValue": false, "isPure": true, @@ -2080,7 +2080,7 @@ "typeString": "contract ISwapRouter" } ], - "id": 48469, + "id": 48466, "isConstant": false, "isLValue": false, "isPure": true, @@ -2092,14 +2092,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48468, + "id": 48465, "name": "address", "nodeType": "ElementaryTypeName", "src": "1783:7:56", "typeDescriptions": {} } }, - "id": 48472, + "id": 48469, "isConstant": false, "isLValue": false, "isPure": true, @@ -2116,11 +2116,11 @@ } }, { - "id": 48473, + "id": 48470, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48348, + "referencedDeclaration": 48345, "src": "1823:8:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2144,7 +2144,7 @@ } ], "expression": { - "id": 48463, + "id": 48460, "name": "TransferHelper", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2155,7 +2155,7 @@ "typeString": "type(library TransferHelper)" } }, - "id": 48465, + "id": 48462, "isConstant": false, "isLValue": false, "isPure": false, @@ -2170,7 +2170,7 @@ "typeString": "function (address,address,uint256)" } }, - "id": 48474, + "id": 48471, "isConstant": false, "isLValue": false, "isPure": false, @@ -2186,7 +2186,7 @@ "typeString": "tuple()" } }, - "id": 48475, + "id": 48472, "nodeType": "ExpressionStatement", "src": "1740:92:56" }, @@ -2195,7 +2195,7 @@ "arguments": [ { "hexValue": "7377617070696e672e2e2e", - "id": 48479, + "id": 48476, "isConstant": false, "isLValue": false, "isPure": true, @@ -2218,7 +2218,7 @@ } ], "expression": { - "id": 48476, + "id": 48473, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2229,7 +2229,7 @@ "typeString": "type(library console2)" } }, - "id": 48478, + "id": 48475, "isConstant": false, "isLValue": false, "isPure": false, @@ -2244,7 +2244,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48480, + "id": 48477, "isConstant": false, "isLValue": false, "isPure": false, @@ -2260,23 +2260,23 @@ "typeString": "tuple()" } }, - "id": 48481, + "id": 48478, "nodeType": "ExpressionStatement", "src": "2019:27:56" }, { "expression": { - "id": 48504, + "id": 48501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48482, + "id": 48479, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48350, + "referencedDeclaration": 48347, "src": "2056:9:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2291,18 +2291,18 @@ "arguments": [ { "expression": { - "id": 48488, + "id": 48485, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "2173:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48489, + "id": 48486, "isConstant": false, "isLValue": true, "isPure": false, @@ -2310,7 +2310,7 @@ "memberLocation": "2180:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "2173:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2319,18 +2319,18 @@ }, { "expression": { - "id": 48490, + "id": 48487, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "2199:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48491, + "id": 48488, "isConstant": false, "isLValue": true, "isPure": false, @@ -2338,7 +2338,7 @@ "memberLocation": "2206:8:56", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 48333, + "referencedDeclaration": 48330, "src": "2199:15:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2347,18 +2347,18 @@ }, { "expression": { - "id": 48492, + "id": 48489, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "2221:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48493, + "id": 48490, "isConstant": false, "isLValue": true, "isPure": false, @@ -2366,7 +2366,7 @@ "memberLocation": "2228:3:56", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 48337, + "referencedDeclaration": 48334, "src": "2221:10:56", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -2375,18 +2375,18 @@ }, { "expression": { - "id": 48494, + "id": 48491, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "2244:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48495, + "id": 48492, "isConstant": false, "isLValue": true, "isPure": false, @@ -2394,7 +2394,7 @@ "memberLocation": "2251:9:56", "memberName": "recipient", "nodeType": "MemberAccess", - "referencedDeclaration": 48335, + "referencedDeclaration": 48332, "src": "2244:16:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2403,7 +2403,7 @@ }, { "expression": { - "id": 48496, + "id": 48493, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2414,7 +2414,7 @@ "typeString": "block" } }, - "id": 48497, + "id": 48494, "isConstant": false, "isLValue": false, "isPure": false, @@ -2429,11 +2429,11 @@ } }, { - "id": 48498, + "id": 48495, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48348, + "referencedDeclaration": 48345, "src": "2311:8:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2442,7 +2442,7 @@ }, { "hexValue": "31", - "id": 48499, + "id": 48496, "isConstant": false, "isLValue": false, "isPure": true, @@ -2458,18 +2458,18 @@ }, { "expression": { - "id": 48500, + "id": 48497, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "2361:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48501, + "id": 48498, "isConstant": false, "isLValue": true, "isPure": false, @@ -2477,7 +2477,7 @@ "memberLocation": "2368:17:56", "memberName": "sqrtPriceLimitX96", "nodeType": "MemberAccess", - "referencedDeclaration": 48341, + "referencedDeclaration": 48338, "src": "2361:24:56", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -2521,7 +2521,7 @@ } ], "expression": { - "id": 48486, + "id": 48483, "name": "ISwapRouter", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2532,7 +2532,7 @@ "typeString": "type(contract ISwapRouter)" } }, - "id": 48487, + "id": 48484, "isConstant": false, "isLValue": false, "isPure": false, @@ -2547,7 +2547,7 @@ "typeString": "type(struct ISwapRouter.ExactInputSingleParams storage pointer)" } }, - "id": 48502, + "id": 48499, "isConstant": false, "isLValue": false, "isPure": false, @@ -2591,18 +2591,18 @@ ], "expression": { "expression": { - "id": 48483, + "id": 48480, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "2068:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48484, + "id": 48481, "isConstant": false, "isLValue": false, "isPure": true, @@ -2617,7 +2617,7 @@ "typeString": "contract ISwapRouter" } }, - "id": 48485, + "id": 48482, "isConstant": false, "isLValue": false, "isPure": false, @@ -2632,7 +2632,7 @@ "typeString": "function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)" } }, - "id": 48503, + "id": 48500, "isConstant": false, "isLValue": false, "isPure": false, @@ -2654,7 +2654,7 @@ "typeString": "uint256" } }, - "id": 48505, + "id": 48502, "nodeType": "ExpressionStatement", "src": "2056:341:56" }, @@ -2663,7 +2663,7 @@ "arguments": [ { "hexValue": "73776170706564", - "id": 48509, + "id": 48506, "isConstant": false, "isLValue": false, "isPure": true, @@ -2686,7 +2686,7 @@ } ], "expression": { - "id": 48506, + "id": 48503, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2697,7 +2697,7 @@ "typeString": "type(library console2)" } }, - "id": 48508, + "id": 48505, "isConstant": false, "isLValue": false, "isPure": false, @@ -2712,7 +2712,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48510, + "id": 48507, "isConstant": false, "isLValue": false, "isPure": false, @@ -2728,7 +2728,7 @@ "typeString": "tuple()" } }, - "id": 48511, + "id": 48508, "nodeType": "ExpressionStatement", "src": "2407:23:56" }, @@ -2736,11 +2736,11 @@ "expression": { "arguments": [ { - "id": 48515, + "id": 48512, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48350, + "referencedDeclaration": 48347, "src": "2453:9:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2756,7 +2756,7 @@ } ], "expression": { - "id": 48512, + "id": 48509, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2767,7 +2767,7 @@ "typeString": "type(library console2)" } }, - "id": 48514, + "id": 48511, "isConstant": false, "isLValue": false, "isPure": false, @@ -2782,7 +2782,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48516, + "id": 48513, "isConstant": false, "isLValue": false, "isPure": false, @@ -2798,7 +2798,7 @@ "typeString": "tuple()" } }, - "id": 48517, + "id": 48514, "nodeType": "ExpressionStatement", "src": "2440:23:56" }, @@ -2807,18 +2807,18 @@ "arguments": [ { "expression": { - "id": 48521, + "id": 48518, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48345, + "referencedDeclaration": 48342, "src": "2500:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48522, + "id": 48519, "isConstant": false, "isLValue": true, "isPure": false, @@ -2826,7 +2826,7 @@ "memberLocation": "2507:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "2500:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2837,18 +2837,18 @@ "arguments": [ { "expression": { - "id": 48525, + "id": 48522, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "2524:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48526, + "id": 48523, "isConstant": false, "isLValue": false, "isPure": true, @@ -2871,7 +2871,7 @@ "typeString": "contract ISwapRouter" } ], - "id": 48524, + "id": 48521, "isConstant": false, "isLValue": false, "isPure": true, @@ -2883,14 +2883,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48523, + "id": 48520, "name": "address", "nodeType": "ElementaryTypeName", "src": "2516:7:56", "typeDescriptions": {} } }, - "id": 48527, + "id": 48524, "isConstant": false, "isLValue": false, "isPure": true, @@ -2908,7 +2908,7 @@ }, { "hexValue": "30", - "id": 48528, + "id": 48525, "isConstant": false, "isLValue": false, "isPure": true, @@ -2939,7 +2939,7 @@ } ], "expression": { - "id": 48518, + "id": 48515, "name": "TransferHelper", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2950,7 +2950,7 @@ "typeString": "type(library TransferHelper)" } }, - "id": 48520, + "id": 48517, "isConstant": false, "isLValue": false, "isPure": false, @@ -2965,7 +2965,7 @@ "typeString": "function (address,address,uint256)" } }, - "id": 48529, + "id": 48526, "isConstant": false, "isLValue": false, "isPure": false, @@ -2981,7 +2981,7 @@ "typeString": "tuple()" } }, - "id": 48530, + "id": 48527, "nodeType": "ExpressionStatement", "src": "2473:85:56" } @@ -2993,41 +2993,41 @@ "name": "swapExactInput", "nameLocation": "593:14:56", "parameters": { - "id": 48346, + "id": 48343, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48345, + "id": 48342, "mutability": "mutable", "name": "params", "nameLocation": "626:6:56", "nodeType": "VariableDeclaration", - "scope": 48532, + "scope": 48529, "src": "608:24:56", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams" }, "typeName": { - "id": 48344, + "id": 48341, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48343, + "id": 48340, "name": "SwapParams", "nameLocations": [ "608:10:56" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48342, + "referencedDeclaration": 48339, "src": "608:10:56" }, - "referencedDeclaration": 48342, + "referencedDeclaration": 48339, "src": "608:10:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_storage_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_storage_ptr", "typeString": "struct UniswapSwapper.SwapParams" } }, @@ -3037,17 +3037,17 @@ "src": "607:26:56" }, "returnParameters": { - "id": 48351, + "id": 48348, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48348, + "id": 48345, "mutability": "mutable", "name": "amountIn", "nameLocation": "660:8:56", "nodeType": "VariableDeclaration", - "scope": 48532, + "scope": 48529, "src": "652:16:56", "stateVariable": false, "storageLocation": "default", @@ -3056,7 +3056,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48347, + "id": 48344, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "652:7:56", @@ -3069,12 +3069,12 @@ }, { "constant": false, - "id": 48350, + "id": 48347, "mutability": "mutable", "name": "amountOut", "nameLocation": "678:9:56", "nodeType": "VariableDeclaration", - "scope": 48532, + "scope": 48529, "src": "670:17:56", "stateVariable": false, "storageLocation": "default", @@ -3083,7 +3083,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48349, + "id": 48346, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "670:7:56", @@ -3097,35 +3097,35 @@ ], "src": "651:37:56" }, - "scope": 48847, + "scope": 48844, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 48793, + "id": 48790, "nodeType": "FunctionDefinition", "src": "2571:3025:56", "nodes": [], "body": { - "id": 48792, + "id": 48789, "nodeType": "Block", "src": "2681:2915:56", "nodes": [], "statements": [ { "assignments": [ - 48543 + 48540 ], "declarations": [ { "constant": false, - "id": 48543, + "id": 48540, "mutability": "mutable", "name": "balance", "nameLocation": "3117:7:56", "nodeType": "VariableDeclaration", - "scope": 48792, + "scope": 48789, "src": "3109:15:56", "stateVariable": false, "storageLocation": "default", @@ -3134,7 +3134,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48542, + "id": 48539, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3109:7:56", @@ -3146,20 +3146,20 @@ "visibility": "internal" } ], - "id": 48554, + "id": 48551, "initialValue": { "arguments": [ { "arguments": [ { - "id": 48551, + "id": 48548, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3168:4:56", "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapSwapper_$48847", + "typeIdentifier": "t_contract$_UniswapSwapper_$48844", "typeString": "library UniswapSwapper" } } @@ -3167,11 +3167,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_UniswapSwapper_$48847", + "typeIdentifier": "t_contract$_UniswapSwapper_$48844", "typeString": "library UniswapSwapper" } ], - "id": 48550, + "id": 48547, "isConstant": false, "isLValue": false, "isPure": true, @@ -3183,14 +3183,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48549, + "id": 48546, "name": "address", "nodeType": "ElementaryTypeName", "src": "3160:7:56", "typeDescriptions": {} } }, - "id": 48552, + "id": 48549, "isConstant": false, "isLValue": false, "isPure": false, @@ -3218,18 +3218,18 @@ "arguments": [ { "expression": { - "id": 48545, + "id": 48542, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "3134:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48546, + "id": 48543, "isConstant": false, "isLValue": true, "isPure": false, @@ -3237,7 +3237,7 @@ "memberLocation": "3141:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "3134:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3252,7 +3252,7 @@ "typeString": "address" } ], - "id": 48544, + "id": 48541, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3263,7 +3263,7 @@ "typeString": "type(contract IERC20)" } }, - "id": 48547, + "id": 48544, "isConstant": false, "isLValue": false, "isPure": false, @@ -3279,7 +3279,7 @@ "typeString": "contract IERC20" } }, - "id": 48548, + "id": 48545, "isConstant": false, "isLValue": false, "isPure": false, @@ -3294,7 +3294,7 @@ "typeString": "function (address) view external returns (uint256)" } }, - "id": 48553, + "id": 48550, "isConstant": false, "isLValue": false, "isPure": false, @@ -3319,17 +3319,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48557, + "id": 48554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48555, + "id": 48552, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48543, + "referencedDeclaration": 48540, "src": "3188:7:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3340,7 +3340,7 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 48556, + "id": 48553, "isConstant": false, "isLValue": false, "isPure": true, @@ -3360,11 +3360,11 @@ "typeString": "bool" } }, - "id": 48563, + "id": 48560, "nodeType": "IfStatement", "src": "3184:83:56", "trueBody": { - "id": 48562, + "id": 48559, "nodeType": "Block", "src": "3203:64:56", "statements": [ @@ -3373,7 +3373,7 @@ "arguments": [ { "hexValue": "494941", - "id": 48559, + "id": 48556, "isConstant": false, "isLValue": false, "isPure": true, @@ -3395,7 +3395,7 @@ "typeString": "literal_string \"IIA\"" } ], - "id": 48558, + "id": 48555, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3409,7 +3409,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48560, + "id": 48557, "isConstant": false, "isLValue": false, "isPure": false, @@ -3425,7 +3425,7 @@ "typeString": "tuple()" } }, - "id": 48561, + "id": 48558, "nodeType": "ExpressionStatement", "src": "3243:13:56" } @@ -3434,17 +3434,17 @@ }, { "assignments": [ - 48565 + 48562 ], "declarations": [ { "constant": false, - "id": 48565, + "id": 48562, "mutability": "mutable", "name": "maxAmountIn", "nameLocation": "3284:11:56", "nodeType": "VariableDeclaration", - "scope": 48792, + "scope": 48789, "src": "3276:19:56", "stateVariable": false, "storageLocation": "default", @@ -3453,7 +3453,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48564, + "id": 48561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3276:7:56", @@ -3465,13 +3465,13 @@ "visibility": "internal" } ], - "id": 48567, + "id": 48564, "initialValue": { - "id": 48566, + "id": 48563, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48543, + "referencedDeclaration": 48540, "src": "3298:7:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3486,7 +3486,7 @@ "arguments": [ { "hexValue": "7377617045786163744f757470757420617070726f76652e2e2e", - "id": 48571, + "id": 48568, "isConstant": false, "isLValue": false, "isPure": true, @@ -3509,7 +3509,7 @@ } ], "expression": { - "id": 48568, + "id": 48565, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3520,7 +3520,7 @@ "typeString": "type(library console2)" } }, - "id": 48570, + "id": 48567, "isConstant": false, "isLValue": false, "isPure": false, @@ -3535,7 +3535,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48572, + "id": 48569, "isConstant": false, "isLValue": false, "isPure": false, @@ -3551,7 +3551,7 @@ "typeString": "tuple()" } }, - "id": 48573, + "id": 48570, "nodeType": "ExpressionStatement", "src": "3316:42:56" }, @@ -3561,14 +3561,14 @@ { "arguments": [ { - "id": 48579, + "id": 48576, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3389:4:56", "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapSwapper_$48847", + "typeIdentifier": "t_contract$_UniswapSwapper_$48844", "typeString": "library UniswapSwapper" } } @@ -3576,11 +3576,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_UniswapSwapper_$48847", + "typeIdentifier": "t_contract$_UniswapSwapper_$48844", "typeString": "library UniswapSwapper" } ], - "id": 48578, + "id": 48575, "isConstant": false, "isLValue": false, "isPure": true, @@ -3592,14 +3592,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48577, + "id": 48574, "name": "address", "nodeType": "ElementaryTypeName", "src": "3381:7:56", "typeDescriptions": {} } }, - "id": 48580, + "id": 48577, "isConstant": false, "isLValue": false, "isPure": false, @@ -3624,7 +3624,7 @@ } ], "expression": { - "id": 48574, + "id": 48571, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3635,7 +3635,7 @@ "typeString": "type(library console2)" } }, - "id": 48576, + "id": 48573, "isConstant": false, "isLValue": false, "isPure": false, @@ -3650,7 +3650,7 @@ "typeString": "function (address) pure" } }, - "id": 48581, + "id": 48578, "isConstant": false, "isLValue": false, "isPure": false, @@ -3666,7 +3666,7 @@ "typeString": "tuple()" } }, - "id": 48582, + "id": 48579, "nodeType": "ExpressionStatement", "src": "3368:27:56" }, @@ -3675,18 +3675,18 @@ "arguments": [ { "expression": { - "id": 48586, + "id": 48583, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "3418:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48587, + "id": 48584, "isConstant": false, "isLValue": true, "isPure": false, @@ -3694,7 +3694,7 @@ "memberLocation": "3425:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "3418:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3710,7 +3710,7 @@ } ], "expression": { - "id": 48583, + "id": 48580, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3721,7 +3721,7 @@ "typeString": "type(library console2)" } }, - "id": 48585, + "id": 48582, "isConstant": false, "isLValue": false, "isPure": false, @@ -3736,7 +3736,7 @@ "typeString": "function (address) pure" } }, - "id": 48588, + "id": 48585, "isConstant": false, "isLValue": false, "isPure": false, @@ -3752,7 +3752,7 @@ "typeString": "tuple()" } }, - "id": 48589, + "id": 48586, "nodeType": "ExpressionStatement", "src": "3405:28:56" }, @@ -3761,18 +3761,18 @@ "arguments": [ { "expression": { - "id": 48593, + "id": 48590, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "3456:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48594, + "id": 48591, "isConstant": false, "isLValue": true, "isPure": false, @@ -3780,7 +3780,7 @@ "memberLocation": "3463:8:56", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 48333, + "referencedDeclaration": 48330, "src": "3456:15:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3796,7 +3796,7 @@ } ], "expression": { - "id": 48590, + "id": 48587, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3807,7 +3807,7 @@ "typeString": "type(library console2)" } }, - "id": 48592, + "id": 48589, "isConstant": false, "isLValue": false, "isPure": false, @@ -3822,7 +3822,7 @@ "typeString": "function (address) pure" } }, - "id": 48595, + "id": 48592, "isConstant": false, "isLValue": false, "isPure": false, @@ -3838,7 +3838,7 @@ "typeString": "tuple()" } }, - "id": 48596, + "id": 48593, "nodeType": "ExpressionStatement", "src": "3443:29:56" }, @@ -3849,18 +3849,18 @@ "arguments": [ { "expression": { - "id": 48602, + "id": 48599, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "3500:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48603, + "id": 48600, "isConstant": false, "isLValue": true, "isPure": false, @@ -3868,7 +3868,7 @@ "memberLocation": "3507:3:56", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 48337, + "referencedDeclaration": 48334, "src": "3500:10:56", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -3883,7 +3883,7 @@ "typeString": "uint24" } ], - "id": 48601, + "id": 48598, "isConstant": false, "isLValue": false, "isPure": true, @@ -3895,14 +3895,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 48600, + "id": 48597, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3495:4:56", "typeDescriptions": {} } }, - "id": 48604, + "id": 48601, "isConstant": false, "isLValue": false, "isPure": false, @@ -3927,7 +3927,7 @@ } ], "expression": { - "id": 48597, + "id": 48594, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3938,7 +3938,7 @@ "typeString": "type(library console2)" } }, - "id": 48599, + "id": 48596, "isConstant": false, "isLValue": false, "isPure": false, @@ -3953,7 +3953,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48605, + "id": 48602, "isConstant": false, "isLValue": false, "isPure": false, @@ -3969,7 +3969,7 @@ "typeString": "tuple()" } }, - "id": 48606, + "id": 48603, "nodeType": "ExpressionStatement", "src": "3482:30:56" }, @@ -3980,18 +3980,18 @@ "arguments": [ { "expression": { - "id": 48612, + "id": 48609, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "3543:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48613, + "id": 48610, "isConstant": false, "isLValue": true, "isPure": false, @@ -3999,7 +3999,7 @@ "memberLocation": "3550:9:56", "memberName": "recipient", "nodeType": "MemberAccess", - "referencedDeclaration": 48335, + "referencedDeclaration": 48332, "src": "3543:16:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4014,7 +4014,7 @@ "typeString": "address" } ], - "id": 48611, + "id": 48608, "isConstant": false, "isLValue": false, "isPure": true, @@ -4026,14 +4026,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48610, + "id": 48607, "name": "address", "nodeType": "ElementaryTypeName", "src": "3535:7:56", "typeDescriptions": {} } }, - "id": 48614, + "id": 48611, "isConstant": false, "isLValue": false, "isPure": false, @@ -4058,7 +4058,7 @@ } ], "expression": { - "id": 48607, + "id": 48604, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4069,7 +4069,7 @@ "typeString": "type(library console2)" } }, - "id": 48609, + "id": 48606, "isConstant": false, "isLValue": false, "isPure": false, @@ -4084,7 +4084,7 @@ "typeString": "function (address) pure" } }, - "id": 48615, + "id": 48612, "isConstant": false, "isLValue": false, "isPure": false, @@ -4100,7 +4100,7 @@ "typeString": "tuple()" } }, - "id": 48616, + "id": 48613, "nodeType": "ExpressionStatement", "src": "3522:39:56" }, @@ -4109,18 +4109,18 @@ "arguments": [ { "expression": { - "id": 48620, + "id": 48617, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "3584:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48621, + "id": 48618, "isConstant": false, "isLValue": true, "isPure": false, @@ -4128,7 +4128,7 @@ "memberLocation": "3591:6:56", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 48339, + "referencedDeclaration": 48336, "src": "3584:13:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4144,7 +4144,7 @@ } ], "expression": { - "id": 48617, + "id": 48614, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4155,7 +4155,7 @@ "typeString": "type(library console2)" } }, - "id": 48619, + "id": 48616, "isConstant": false, "isLValue": false, "isPure": false, @@ -4170,7 +4170,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48622, + "id": 48619, "isConstant": false, "isLValue": false, "isPure": false, @@ -4186,7 +4186,7 @@ "typeString": "tuple()" } }, - "id": 48623, + "id": 48620, "nodeType": "ExpressionStatement", "src": "3571:27:56" }, @@ -4197,18 +4197,18 @@ "arguments": [ { "expression": { - "id": 48629, + "id": 48626, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "3626:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48630, + "id": 48627, "isConstant": false, "isLValue": true, "isPure": false, @@ -4216,7 +4216,7 @@ "memberLocation": "3633:17:56", "memberName": "sqrtPriceLimitX96", "nodeType": "MemberAccess", - "referencedDeclaration": 48341, + "referencedDeclaration": 48338, "src": "3626:24:56", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -4231,7 +4231,7 @@ "typeString": "uint160" } ], - "id": 48628, + "id": 48625, "isConstant": false, "isLValue": false, "isPure": true, @@ -4243,14 +4243,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 48627, + "id": 48624, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3621:4:56", "typeDescriptions": {} } }, - "id": 48631, + "id": 48628, "isConstant": false, "isLValue": false, "isPure": false, @@ -4275,7 +4275,7 @@ } ], "expression": { - "id": 48624, + "id": 48621, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4286,7 +4286,7 @@ "typeString": "type(library console2)" } }, - "id": 48626, + "id": 48623, "isConstant": false, "isLValue": false, "isPure": false, @@ -4301,7 +4301,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48632, + "id": 48629, "isConstant": false, "isLValue": false, "isPure": false, @@ -4317,7 +4317,7 @@ "typeString": "tuple()" } }, - "id": 48633, + "id": 48630, "nodeType": "ExpressionStatement", "src": "3608:44:56" }, @@ -4328,18 +4328,18 @@ "arguments": [ { "expression": { - "id": 48639, + "id": 48636, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "3683:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48640, + "id": 48637, "isConstant": false, "isLValue": false, "isPure": true, @@ -4362,7 +4362,7 @@ "typeString": "contract ISwapRouter" } ], - "id": 48638, + "id": 48635, "isConstant": false, "isLValue": false, "isPure": true, @@ -4374,14 +4374,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48637, + "id": 48634, "name": "address", "nodeType": "ElementaryTypeName", "src": "3675:7:56", "typeDescriptions": {} } }, - "id": 48641, + "id": 48638, "isConstant": false, "isLValue": false, "isPure": true, @@ -4406,7 +4406,7 @@ } ], "expression": { - "id": 48634, + "id": 48631, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4417,7 +4417,7 @@ "typeString": "type(library console2)" } }, - "id": 48636, + "id": 48633, "isConstant": false, "isLValue": false, "isPure": false, @@ -4432,7 +4432,7 @@ "typeString": "function (address) pure" } }, - "id": 48642, + "id": 48639, "isConstant": false, "isLValue": false, "isPure": false, @@ -4448,7 +4448,7 @@ "typeString": "tuple()" } }, - "id": 48643, + "id": 48640, "nodeType": "ExpressionStatement", "src": "3662:52:56" }, @@ -4457,7 +4457,7 @@ "arguments": [ { "hexValue": "617070726f7665", - "id": 48647, + "id": 48644, "isConstant": false, "isLValue": false, "isPure": true, @@ -4480,7 +4480,7 @@ } ], "expression": { - "id": 48644, + "id": 48641, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4491,7 +4491,7 @@ "typeString": "type(library console2)" } }, - "id": 48646, + "id": 48643, "isConstant": false, "isLValue": false, "isPure": false, @@ -4506,7 +4506,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48648, + "id": 48645, "isConstant": false, "isLValue": false, "isPure": false, @@ -4522,7 +4522,7 @@ "typeString": "tuple()" } }, - "id": 48649, + "id": 48646, "nodeType": "ExpressionStatement", "src": "3724:23:56" }, @@ -4530,11 +4530,11 @@ "expression": { "arguments": [ { - "id": 48653, + "id": 48650, "name": "maxAmountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48565, + "referencedDeclaration": 48562, "src": "3770:11:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4550,7 +4550,7 @@ } ], "expression": { - "id": 48650, + "id": 48647, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4561,7 +4561,7 @@ "typeString": "type(library console2)" } }, - "id": 48652, + "id": 48649, "isConstant": false, "isLValue": false, "isPure": false, @@ -4576,7 +4576,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48654, + "id": 48651, "isConstant": false, "isLValue": false, "isPure": false, @@ -4592,7 +4592,7 @@ "typeString": "tuple()" } }, - "id": 48655, + "id": 48652, "nodeType": "ExpressionStatement", "src": "3757:25:56" }, @@ -4601,18 +4601,18 @@ "arguments": [ { "expression": { - "id": 48659, + "id": 48656, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "3820:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48660, + "id": 48657, "isConstant": false, "isLValue": true, "isPure": false, @@ -4620,7 +4620,7 @@ "memberLocation": "3827:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "3820:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4631,18 +4631,18 @@ "arguments": [ { "expression": { - "id": 48663, + "id": 48660, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "3844:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48664, + "id": 48661, "isConstant": false, "isLValue": false, "isPure": true, @@ -4665,7 +4665,7 @@ "typeString": "contract ISwapRouter" } ], - "id": 48662, + "id": 48659, "isConstant": false, "isLValue": false, "isPure": true, @@ -4677,14 +4677,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48661, + "id": 48658, "name": "address", "nodeType": "ElementaryTypeName", "src": "3836:7:56", "typeDescriptions": {} } }, - "id": 48665, + "id": 48662, "isConstant": false, "isLValue": false, "isPure": true, @@ -4701,11 +4701,11 @@ } }, { - "id": 48666, + "id": 48663, "name": "maxAmountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48565, + "referencedDeclaration": 48562, "src": "3876:11:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4729,7 +4729,7 @@ } ], "expression": { - "id": 48656, + "id": 48653, "name": "TransferHelper", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4740,7 +4740,7 @@ "typeString": "type(library TransferHelper)" } }, - "id": 48658, + "id": 48655, "isConstant": false, "isLValue": false, "isPure": false, @@ -4755,7 +4755,7 @@ "typeString": "function (address,address,uint256)" } }, - "id": 48667, + "id": 48664, "isConstant": false, "isLValue": false, "isPure": false, @@ -4771,7 +4771,7 @@ "typeString": "tuple()" } }, - "id": 48668, + "id": 48665, "nodeType": "ExpressionStatement", "src": "3793:95:56" }, @@ -4780,7 +4780,7 @@ "arguments": [ { "hexValue": "7377617070696e672e2e2e", - "id": 48672, + "id": 48669, "isConstant": false, "isLValue": false, "isPure": true, @@ -4803,7 +4803,7 @@ } ], "expression": { - "id": 48669, + "id": 48666, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4814,7 +4814,7 @@ "typeString": "type(library console2)" } }, - "id": 48671, + "id": 48668, "isConstant": false, "isLValue": false, "isPure": false, @@ -4829,7 +4829,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48673, + "id": 48670, "isConstant": false, "isLValue": false, "isPure": false, @@ -4845,7 +4845,7 @@ "typeString": "tuple()" } }, - "id": 48674, + "id": 48671, "nodeType": "ExpressionStatement", "src": "4076:27:56" }, @@ -4853,23 +4853,23 @@ "clauses": [ { "block": { - "id": 48709, + "id": 48706, "nodeType": "Block", "src": "4500:80:56", "statements": [ { "expression": { - "id": 48702, + "id": 48699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48700, + "id": 48697, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48538, + "referencedDeclaration": 48535, "src": "4514:8:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4879,11 +4879,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48701, + "id": 48698, "name": "amtIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48698, + "referencedDeclaration": 48695, "src": "4525:5:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4896,23 +4896,23 @@ "typeString": "uint256" } }, - "id": 48703, + "id": 48700, "nodeType": "ExpressionStatement", "src": "4514:16:56" }, { "expression": { - "id": 48707, + "id": 48704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48704, + "id": 48701, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48540, + "referencedDeclaration": 48537, "src": "4544:9:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4923,18 +4923,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48705, + "id": 48702, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4556:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48706, + "id": 48703, "isConstant": false, "isLValue": true, "isPure": false, @@ -4942,7 +4942,7 @@ "memberLocation": "4563:6:56", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 48339, + "referencedDeclaration": 48336, "src": "4556:13:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4955,27 +4955,27 @@ "typeString": "uint256" } }, - "id": 48708, + "id": 48705, "nodeType": "ExpressionStatement", "src": "4544:25:56" } ] }, "errorName": "", - "id": 48710, + "id": 48707, "nodeType": "TryCatchClause", "parameters": { - "id": 48699, + "id": 48696, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48698, + "id": 48695, "mutability": "mutable", "name": "amtIn", "nameLocation": "4493:5:56", "nodeType": "VariableDeclaration", - "scope": 48710, + "scope": 48707, "src": "4485:13:56", "stateVariable": false, "storageLocation": "default", @@ -4984,7 +4984,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48697, + "id": 48694, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4485:7:56", @@ -5002,7 +5002,7 @@ }, { "block": { - "id": 48758, + "id": 48755, "nodeType": "Block", "src": "4625:770:56", "statements": [ @@ -5010,23 +5010,23 @@ "clauses": [ { "block": { - "id": 48746, + "id": 48743, "nodeType": "Block", "src": "5172:91:56", "statements": [ { "expression": { - "id": 48740, + "id": 48737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48738, + "id": 48735, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48538, + "referencedDeclaration": 48535, "src": "5190:8:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5036,11 +5036,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48739, + "id": 48736, "name": "maxAmountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48565, + "referencedDeclaration": 48562, "src": "5201:11:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5053,23 +5053,23 @@ "typeString": "uint256" } }, - "id": 48741, + "id": 48738, "nodeType": "ExpressionStatement", "src": "5190:22:56" }, { "expression": { - "id": 48744, + "id": 48741, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48742, + "id": 48739, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48540, + "referencedDeclaration": 48537, "src": "5230:9:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5079,11 +5079,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48743, + "id": 48740, "name": "amtOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48736, + "referencedDeclaration": 48733, "src": "5242:6:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5096,27 +5096,27 @@ "typeString": "uint256" } }, - "id": 48745, + "id": 48742, "nodeType": "ExpressionStatement", "src": "5230:18:56" } ] }, "errorName": "", - "id": 48747, + "id": 48744, "nodeType": "TryCatchClause", "parameters": { - "id": 48737, + "id": 48734, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48736, + "id": 48733, "mutability": "mutable", "name": "amtOut", "nameLocation": "5164:6:56", "nodeType": "VariableDeclaration", - "scope": 48747, + "scope": 48744, "src": "5156:14:56", "stateVariable": false, "storageLocation": "default", @@ -5125,7 +5125,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48735, + "id": 48732, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5156:7:56", @@ -5143,7 +5143,7 @@ }, { "block": { - "id": 48755, + "id": 48752, "nodeType": "Block", "src": "5305:80:56", "statements": [ @@ -5151,11 +5151,11 @@ "expression": { "arguments": [ { - "id": 48752, + "id": 48749, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48712, + "referencedDeclaration": 48709, "src": "5330:6:56", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -5170,7 +5170,7 @@ "typeString": "string memory" } ], - "id": 48751, + "id": 48748, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5184,7 +5184,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48753, + "id": 48750, "isConstant": false, "isLValue": false, "isPure": false, @@ -5200,27 +5200,27 @@ "typeString": "tuple()" } }, - "id": 48754, + "id": 48751, "nodeType": "ExpressionStatement", "src": "5323:14:56" } ] }, "errorName": "Error", - "id": 48756, + "id": 48753, "nodeType": "TryCatchClause", "parameters": { - "id": 48750, + "id": 48747, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48749, + "id": 48746, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 48756, + "scope": 48753, "src": "5289:13:56", "stateVariable": false, "storageLocation": "memory", @@ -5229,7 +5229,7 @@ "typeString": "string" }, "typeName": { - "id": 48748, + "id": 48745, "name": "string", "nodeType": "ElementaryTypeName", "src": "5289:6:56", @@ -5252,18 +5252,18 @@ "arguments": [ { "expression": { - "id": 48719, + "id": 48716, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4911:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48720, + "id": 48717, "isConstant": false, "isLValue": true, "isPure": false, @@ -5271,7 +5271,7 @@ "memberLocation": "4918:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "4911:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5280,18 +5280,18 @@ }, { "expression": { - "id": 48721, + "id": 48718, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4937:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48722, + "id": 48719, "isConstant": false, "isLValue": true, "isPure": false, @@ -5299,7 +5299,7 @@ "memberLocation": "4944:8:56", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 48333, + "referencedDeclaration": 48330, "src": "4937:15:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5308,18 +5308,18 @@ }, { "expression": { - "id": 48723, + "id": 48720, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4959:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48724, + "id": 48721, "isConstant": false, "isLValue": true, "isPure": false, @@ -5327,7 +5327,7 @@ "memberLocation": "4966:3:56", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 48337, + "referencedDeclaration": 48334, "src": "4959:10:56", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -5336,18 +5336,18 @@ }, { "expression": { - "id": 48725, + "id": 48722, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4982:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48726, + "id": 48723, "isConstant": false, "isLValue": true, "isPure": false, @@ -5355,7 +5355,7 @@ "memberLocation": "4989:9:56", "memberName": "recipient", "nodeType": "MemberAccess", - "referencedDeclaration": 48335, + "referencedDeclaration": 48332, "src": "4982:16:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5364,7 +5364,7 @@ }, { "expression": { - "id": 48727, + "id": 48724, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5375,7 +5375,7 @@ "typeString": "block" } }, - "id": 48728, + "id": 48725, "isConstant": false, "isLValue": false, "isPure": false, @@ -5390,11 +5390,11 @@ } }, { - "id": 48729, + "id": 48726, "name": "maxAmountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48565, + "referencedDeclaration": 48562, "src": "5053:11:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5403,7 +5403,7 @@ }, { "hexValue": "31", - "id": 48730, + "id": 48727, "isConstant": false, "isLValue": false, "isPure": true, @@ -5419,18 +5419,18 @@ }, { "expression": { - "id": 48731, + "id": 48728, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "5106:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48732, + "id": 48729, "isConstant": false, "isLValue": true, "isPure": false, @@ -5438,7 +5438,7 @@ "memberLocation": "5113:17:56", "memberName": "sqrtPriceLimitX96", "nodeType": "MemberAccess", - "referencedDeclaration": 48341, + "referencedDeclaration": 48338, "src": "5106:24:56", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -5482,7 +5482,7 @@ } ], "expression": { - "id": 48717, + "id": 48714, "name": "ISwapRouter", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5493,7 +5493,7 @@ "typeString": "type(contract ISwapRouter)" } }, - "id": 48718, + "id": 48715, "isConstant": false, "isLValue": false, "isPure": false, @@ -5508,7 +5508,7 @@ "typeString": "type(struct ISwapRouter.ExactInputSingleParams storage pointer)" } }, - "id": 48733, + "id": 48730, "isConstant": false, "isLValue": false, "isPure": false, @@ -5552,18 +5552,18 @@ ], "expression": { "expression": { - "id": 48714, + "id": 48711, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "4802:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48715, + "id": 48712, "isConstant": false, "isLValue": false, "isPure": true, @@ -5578,7 +5578,7 @@ "typeString": "contract ISwapRouter" } }, - "id": 48716, + "id": 48713, "isConstant": false, "isLValue": false, "isPure": false, @@ -5593,7 +5593,7 @@ "typeString": "function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)" } }, - "id": 48734, + "id": 48731, "isConstant": false, "isLValue": false, "isPure": false, @@ -5609,27 +5609,27 @@ "typeString": "uint256" } }, - "id": 48757, + "id": 48754, "nodeType": "TryStatement", "src": "4798:587:56" } ] }, "errorName": "Error", - "id": 48759, + "id": 48756, "nodeType": "TryCatchClause", "parameters": { - "id": 48713, + "id": 48710, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48712, + "id": 48709, "mutability": "mutable", "name": "reason", "nameLocation": "4616:6:56", "nodeType": "VariableDeclaration", - "scope": 48759, + "scope": 48756, "src": "4602:20:56", "stateVariable": false, "storageLocation": "memory", @@ -5638,7 +5638,7 @@ "typeString": "string" }, "typeName": { - "id": 48711, + "id": 48708, "name": "string", "nodeType": "ElementaryTypeName", "src": "4602:6:56", @@ -5661,18 +5661,18 @@ "arguments": [ { "expression": { - "id": 48680, + "id": 48677, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4224:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48681, + "id": 48678, "isConstant": false, "isLValue": true, "isPure": false, @@ -5680,7 +5680,7 @@ "memberLocation": "4231:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "4224:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5689,18 +5689,18 @@ }, { "expression": { - "id": 48682, + "id": 48679, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4250:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48683, + "id": 48680, "isConstant": false, "isLValue": true, "isPure": false, @@ -5708,7 +5708,7 @@ "memberLocation": "4257:8:56", "memberName": "tokenOut", "nodeType": "MemberAccess", - "referencedDeclaration": 48333, + "referencedDeclaration": 48330, "src": "4250:15:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5717,18 +5717,18 @@ }, { "expression": { - "id": 48684, + "id": 48681, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4272:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48685, + "id": 48682, "isConstant": false, "isLValue": true, "isPure": false, @@ -5736,7 +5736,7 @@ "memberLocation": "4279:3:56", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 48337, + "referencedDeclaration": 48334, "src": "4272:10:56", "typeDescriptions": { "typeIdentifier": "t_uint24", @@ -5745,18 +5745,18 @@ }, { "expression": { - "id": 48686, + "id": 48683, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4295:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48687, + "id": 48684, "isConstant": false, "isLValue": true, "isPure": false, @@ -5764,7 +5764,7 @@ "memberLocation": "4302:9:56", "memberName": "recipient", "nodeType": "MemberAccess", - "referencedDeclaration": 48335, + "referencedDeclaration": 48332, "src": "4295:16:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5773,7 +5773,7 @@ }, { "expression": { - "id": 48688, + "id": 48685, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5784,7 +5784,7 @@ "typeString": "block" } }, - "id": 48689, + "id": 48686, "isConstant": false, "isLValue": false, "isPure": false, @@ -5800,18 +5800,18 @@ }, { "expression": { - "id": 48690, + "id": 48687, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4363:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48691, + "id": 48688, "isConstant": false, "isLValue": true, "isPure": false, @@ -5819,7 +5819,7 @@ "memberLocation": "4370:6:56", "memberName": "amount", "nodeType": "MemberAccess", - "referencedDeclaration": 48339, + "referencedDeclaration": 48336, "src": "4363:13:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5827,11 +5827,11 @@ } }, { - "id": 48692, + "id": 48689, "name": "maxAmountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48565, + "referencedDeclaration": 48562, "src": "4395:11:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5840,18 +5840,18 @@ }, { "expression": { - "id": 48693, + "id": 48690, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "4439:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48694, + "id": 48691, "isConstant": false, "isLValue": true, "isPure": false, @@ -5859,7 +5859,7 @@ "memberLocation": "4446:17:56", "memberName": "sqrtPriceLimitX96", "nodeType": "MemberAccess", - "referencedDeclaration": 48341, + "referencedDeclaration": 48338, "src": "4439:24:56", "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -5903,7 +5903,7 @@ } ], "expression": { - "id": 48678, + "id": 48675, "name": "ISwapRouter", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5914,7 +5914,7 @@ "typeString": "type(contract ISwapRouter)" } }, - "id": 48679, + "id": 48676, "isConstant": false, "isLValue": false, "isPure": false, @@ -5929,7 +5929,7 @@ "typeString": "type(struct ISwapRouter.ExactOutputSingleParams storage pointer)" } }, - "id": 48695, + "id": 48692, "isConstant": false, "isLValue": false, "isPure": false, @@ -5973,18 +5973,18 @@ ], "expression": { "expression": { - "id": 48675, + "id": 48672, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "4117:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48676, + "id": 48673, "isConstant": false, "isLValue": false, "isPure": true, @@ -5999,7 +5999,7 @@ "typeString": "contract ISwapRouter" } }, - "id": 48677, + "id": 48674, "isConstant": false, "isLValue": false, "isPure": false, @@ -6014,7 +6014,7 @@ "typeString": "function (struct ISwapRouter.ExactOutputSingleParams memory) payable external returns (uint256)" } }, - "id": 48696, + "id": 48693, "isConstant": false, "isLValue": false, "isPure": false, @@ -6030,7 +6030,7 @@ "typeString": "uint256" } }, - "id": 48760, + "id": 48757, "nodeType": "TryStatement", "src": "4113:1282:56" }, @@ -6039,7 +6039,7 @@ "arguments": [ { "hexValue": "73776170706564", - "id": 48764, + "id": 48761, "isConstant": false, "isLValue": false, "isPure": true, @@ -6062,7 +6062,7 @@ } ], "expression": { - "id": 48761, + "id": 48758, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6073,7 +6073,7 @@ "typeString": "type(library console2)" } }, - "id": 48763, + "id": 48760, "isConstant": false, "isLValue": false, "isPure": false, @@ -6088,7 +6088,7 @@ "typeString": "function (string memory) pure" } }, - "id": 48765, + "id": 48762, "isConstant": false, "isLValue": false, "isPure": false, @@ -6104,7 +6104,7 @@ "typeString": "tuple()" } }, - "id": 48766, + "id": 48763, "nodeType": "ExpressionStatement", "src": "5405:23:56" }, @@ -6112,11 +6112,11 @@ "expression": { "arguments": [ { - "id": 48770, + "id": 48767, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48538, + "referencedDeclaration": 48535, "src": "5451:8:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6132,7 +6132,7 @@ } ], "expression": { - "id": 48767, + "id": 48764, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6143,7 +6143,7 @@ "typeString": "type(library console2)" } }, - "id": 48769, + "id": 48766, "isConstant": false, "isLValue": false, "isPure": false, @@ -6158,7 +6158,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48771, + "id": 48768, "isConstant": false, "isLValue": false, "isPure": false, @@ -6174,7 +6174,7 @@ "typeString": "tuple()" } }, - "id": 48772, + "id": 48769, "nodeType": "ExpressionStatement", "src": "5438:22:56" }, @@ -6182,11 +6182,11 @@ "expression": { "arguments": [ { - "id": 48776, + "id": 48773, "name": "amountOut", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48540, + "referencedDeclaration": 48537, "src": "5483:9:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6202,7 +6202,7 @@ } ], "expression": { - "id": 48773, + "id": 48770, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6213,7 +6213,7 @@ "typeString": "type(library console2)" } }, - "id": 48775, + "id": 48772, "isConstant": false, "isLValue": false, "isPure": false, @@ -6228,7 +6228,7 @@ "typeString": "function (uint256) pure" } }, - "id": 48777, + "id": 48774, "isConstant": false, "isLValue": false, "isPure": false, @@ -6244,7 +6244,7 @@ "typeString": "tuple()" } }, - "id": 48778, + "id": 48775, "nodeType": "ExpressionStatement", "src": "5470:23:56" }, @@ -6253,18 +6253,18 @@ "arguments": [ { "expression": { - "id": 48782, + "id": 48779, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48535, + "referencedDeclaration": 48532, "src": "5531:6:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams memory" } }, - "id": 48783, + "id": 48780, "isConstant": false, "isLValue": true, "isPure": false, @@ -6272,7 +6272,7 @@ "memberLocation": "5538:7:56", "memberName": "tokenIn", "nodeType": "MemberAccess", - "referencedDeclaration": 48331, + "referencedDeclaration": 48328, "src": "5531:14:56", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6283,18 +6283,18 @@ "arguments": [ { "expression": { - "id": 48786, + "id": 48783, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "5555:9:56", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48787, + "id": 48784, "isConstant": false, "isLValue": false, "isPure": true, @@ -6317,7 +6317,7 @@ "typeString": "contract ISwapRouter" } ], - "id": 48785, + "id": 48782, "isConstant": false, "isLValue": false, "isPure": true, @@ -6329,14 +6329,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 48784, + "id": 48781, "name": "address", "nodeType": "ElementaryTypeName", "src": "5547:7:56", "typeDescriptions": {} } }, - "id": 48788, + "id": 48785, "isConstant": false, "isLValue": false, "isPure": true, @@ -6354,7 +6354,7 @@ }, { "hexValue": "30", - "id": 48789, + "id": 48786, "isConstant": false, "isLValue": false, "isPure": true, @@ -6385,7 +6385,7 @@ } ], "expression": { - "id": 48779, + "id": 48776, "name": "TransferHelper", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6396,7 +6396,7 @@ "typeString": "type(library TransferHelper)" } }, - "id": 48781, + "id": 48778, "isConstant": false, "isLValue": false, "isPure": false, @@ -6411,7 +6411,7 @@ "typeString": "function (address,address,uint256)" } }, - "id": 48790, + "id": 48787, "isConstant": false, "isLValue": false, "isPure": false, @@ -6427,7 +6427,7 @@ "typeString": "tuple()" } }, - "id": 48791, + "id": 48788, "nodeType": "ExpressionStatement", "src": "5504:85:56" } @@ -6439,41 +6439,41 @@ "name": "swapExactOutput", "nameLocation": "2580:15:56", "parameters": { - "id": 48536, + "id": 48533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48535, + "id": 48532, "mutability": "mutable", "name": "params", "nameLocation": "2614:6:56", "nodeType": "VariableDeclaration", - "scope": 48793, + "scope": 48790, "src": "2596:24:56", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_memory_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_memory_ptr", "typeString": "struct UniswapSwapper.SwapParams" }, "typeName": { - "id": 48534, + "id": 48531, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48533, + "id": 48530, "name": "SwapParams", "nameLocations": [ "2596:10:56" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48342, + "referencedDeclaration": 48339, "src": "2596:10:56" }, - "referencedDeclaration": 48342, + "referencedDeclaration": 48339, "src": "2596:10:56", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapParams_$48342_storage_ptr", + "typeIdentifier": "t_struct$_SwapParams_$48339_storage_ptr", "typeString": "struct UniswapSwapper.SwapParams" } }, @@ -6483,17 +6483,17 @@ "src": "2595:26:56" }, "returnParameters": { - "id": 48541, + "id": 48538, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48538, + "id": 48535, "mutability": "mutable", "name": "amountIn", "nameLocation": "2648:8:56", "nodeType": "VariableDeclaration", - "scope": 48793, + "scope": 48790, "src": "2640:16:56", "stateVariable": false, "storageLocation": "default", @@ -6502,7 +6502,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48537, + "id": 48534, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2640:7:56", @@ -6515,12 +6515,12 @@ }, { "constant": false, - "id": 48540, + "id": 48537, "mutability": "mutable", "name": "amountOut", "nameLocation": "2666:9:56", "nodeType": "VariableDeclaration", - "scope": 48793, + "scope": 48790, "src": "2658:17:56", "stateVariable": false, "storageLocation": "default", @@ -6529,7 +6529,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48539, + "id": 48536, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2658:7:56", @@ -6543,18 +6543,18 @@ ], "src": "2639:37:56" }, - "scope": 48847, + "scope": 48844, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 48846, + "id": 48843, "nodeType": "FunctionDefinition", "src": "5718:365:56", "nodes": [], "body": { - "id": 48845, + "id": 48842, "nodeType": "Block", "src": "5771:312:56", "nodes": [], @@ -6565,17 +6565,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48802, + "id": 48799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48800, + "id": 48797, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48795, + "referencedDeclaration": 48792, "src": "5886:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6586,7 +6586,7 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 48801, + "id": 48798, "isConstant": false, "isLValue": false, "isPure": true, @@ -6612,17 +6612,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48807, + "id": 48804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48805, + "id": 48802, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48795, + "referencedDeclaration": 48792, "src": "5921:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6633,7 +6633,7 @@ "operator": "<=", "rightExpression": { "hexValue": "33", - "id": 48806, + "id": 48803, "isConstant": false, "isLValue": false, "isPure": true, @@ -6653,13 +6653,13 @@ "typeString": "bool" } }, - "id": 48810, + "id": 48807, "nodeType": "IfStatement", "src": "5917:20:56", "trueBody": { "expression": { "hexValue": "31", - "id": 48808, + "id": 48805, "isConstant": false, "isLValue": false, "isPure": true, @@ -6673,19 +6673,19 @@ }, "value": "1" }, - "functionReturnParameters": 48799, - "id": 48809, + "functionReturnParameters": 48796, + "id": 48806, "nodeType": "Return", "src": "5929:8:56" } }, - "id": 48811, + "id": 48808, "nodeType": "IfStatement", "src": "5882:55:56", "trueBody": { "expression": { "hexValue": "30", - "id": 48803, + "id": 48800, "isConstant": false, "isLValue": false, "isPure": true, @@ -6699,25 +6699,25 @@ }, "value": "0" }, - "functionReturnParameters": 48799, - "id": 48804, + "functionReturnParameters": 48796, + "id": 48801, "nodeType": "Return", "src": "5894:8:56" } }, { "assignments": [ - 48813 + 48810 ], "declarations": [ { "constant": false, - "id": 48813, + "id": 48810, "mutability": "mutable", "name": "z", "nameLocation": "5952:1:56", "nodeType": "VariableDeclaration", - "scope": 48845, + "scope": 48842, "src": "5947:6:56", "stateVariable": false, "storageLocation": "default", @@ -6726,7 +6726,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48812, + "id": 48809, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5947:4:56", @@ -6738,13 +6738,13 @@ "visibility": "internal" } ], - "id": 48820, + "id": 48817, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48819, + "id": 48816, "isConstant": false, "isLValue": false, "isPure": false, @@ -6756,17 +6756,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48816, + "id": 48813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48814, + "id": 48811, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48795, + "referencedDeclaration": 48792, "src": "5957:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6777,7 +6777,7 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 48815, + "id": 48812, "isConstant": false, "isLValue": false, "isPure": true, @@ -6798,7 +6798,7 @@ } } ], - "id": 48817, + "id": 48814, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -6815,7 +6815,7 @@ "operator": "/", "rightExpression": { "hexValue": "32", - "id": 48818, + "id": 48815, "isConstant": false, "isLValue": false, "isPure": true, @@ -6840,17 +6840,17 @@ }, { "expression": { - "id": 48823, + "id": 48820, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48821, + "id": 48818, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48798, + "referencedDeclaration": 48795, "src": "5977:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6860,11 +6860,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48822, + "id": 48819, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48795, + "referencedDeclaration": 48792, "src": "5981:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6877,29 +6877,29 @@ "typeString": "uint256" } }, - "id": 48824, + "id": 48821, "nodeType": "ExpressionStatement", "src": "5977:5:56" }, { "body": { - "id": 48843, + "id": 48840, "nodeType": "Block", "src": "6014:63:56", "statements": [ { "expression": { - "id": 48830, + "id": 48827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48828, + "id": 48825, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48798, + "referencedDeclaration": 48795, "src": "6028:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6909,11 +6909,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 48829, + "id": 48826, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48813, + "referencedDeclaration": 48810, "src": "6032:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6926,23 +6926,23 @@ "typeString": "uint256" } }, - "id": 48831, + "id": 48828, "nodeType": "ExpressionStatement", "src": "6028:5:56" }, { "expression": { - "id": 48841, + "id": 48838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48832, + "id": 48829, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48813, + "referencedDeclaration": 48810, "src": "6047:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6956,7 +6956,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48840, + "id": 48837, "isConstant": false, "isLValue": false, "isPure": false, @@ -6968,7 +6968,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48837, + "id": 48834, "isConstant": false, "isLValue": false, "isPure": false, @@ -6978,17 +6978,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48835, + "id": 48832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48833, + "id": 48830, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48795, + "referencedDeclaration": 48792, "src": "6052:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6998,11 +6998,11 @@ "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { - "id": 48834, + "id": 48831, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48813, + "referencedDeclaration": 48810, "src": "6056:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7018,11 +7018,11 @@ "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { - "id": 48836, + "id": 48833, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48813, + "referencedDeclaration": 48810, "src": "6060:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7036,7 +7036,7 @@ } } ], - "id": 48838, + "id": 48835, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -7053,7 +7053,7 @@ "operator": "/", "rightExpression": { "hexValue": "32", - "id": 48839, + "id": 48836, "isConstant": false, "isLValue": false, "isPure": true, @@ -7079,7 +7079,7 @@ "typeString": "uint256" } }, - "id": 48842, + "id": 48839, "nodeType": "ExpressionStatement", "src": "6047:19:56" } @@ -7090,17 +7090,17 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 48827, + "id": 48824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48825, + "id": 48822, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48813, + "referencedDeclaration": 48810, "src": "5999:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7110,11 +7110,11 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 48826, + "id": 48823, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48798, + "referencedDeclaration": 48795, "src": "6003:1:56", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7127,7 +7127,7 @@ "typeString": "bool" } }, - "id": 48844, + "id": 48841, "nodeType": "WhileStatement", "src": "5992:85:56" } @@ -7139,17 +7139,17 @@ "name": "sqrt", "nameLocation": "5727:4:56", "parameters": { - "id": 48796, + "id": 48793, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48795, + "id": 48792, "mutability": "mutable", "name": "x", "nameLocation": "5737:1:56", "nodeType": "VariableDeclaration", - "scope": 48846, + "scope": 48843, "src": "5732:6:56", "stateVariable": false, "storageLocation": "default", @@ -7158,7 +7158,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48794, + "id": 48791, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5732:4:56", @@ -7173,17 +7173,17 @@ "src": "5731:8:56" }, "returnParameters": { - "id": 48799, + "id": 48796, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48798, + "id": 48795, "mutability": "mutable", "name": "y", "nameLocation": "5768:1:56", "nodeType": "VariableDeclaration", - "scope": 48846, + "scope": 48843, "src": "5763:6:56", "stateVariable": false, "storageLocation": "default", @@ -7192,7 +7192,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48797, + "id": 48794, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5763:4:56", @@ -7206,7 +7206,7 @@ ], "src": "5762:8:56" }, - "scope": 48847, + "scope": 48844, "stateMutability": "pure", "virtual": false, "visibility": "internal" @@ -7219,11 +7219,11 @@ "contractKind": "library", "fullyImplemented": true, "linearizedBaseContracts": [ - 48847 + 48844 ], "name": "UniswapSwapper", "nameLocation": "263:14:56", - "scope": 48848, + "scope": 48845, "usedErrors": [], "usedEvents": [] } diff --git a/deployment/alpha/out/Util.sol/Util.json b/deployment/alpha/out/Util.sol/Util.json index f64ee71..e416339 100644 --- a/deployment/alpha/out/Util.sol/Util.json +++ b/deployment/alpha/out/Util.sol/Util.json @@ -132,17 +132,17 @@ }, "ast": { "absolutePath": "src/Util.sol", - "id": 48905, + "id": 48902, "exportedSymbols": { "Util": [ - 48904 + 48901 ] }, "nodeType": "SourceUnit", "src": "65:412:57", "nodes": [ { - "id": 48849, + "id": 48846, "nodeType": "PragmaDirective", "src": "65:24:57", "nodes": [], @@ -154,7 +154,7 @@ ] }, { - "id": 48850, + "id": 48847, "nodeType": "PragmaDirective", "src": "90:19:57", "nodes": [], @@ -164,34 +164,34 @@ ] }, { - "id": 48904, + "id": 48901, "nodeType": "ContractDefinition", "src": "111:365:57", "nodes": [ { - "id": 48903, + "id": 48900, "nodeType": "FunctionDefinition", "src": "130:344:57", "nodes": [], "body": { - "id": 48902, + "id": 48899, "nodeType": "Block", "src": "203:271:57", "nodes": [], "statements": [ { "assignments": [ - 48860 + 48857 ], "declarations": [ { "constant": false, - "id": 48860, + "id": 48857, "mutability": "mutable", "name": "mod", "nameLocation": "262:3:57", "nodeType": "VariableDeclaration", - "scope": 48902, + "scope": 48899, "src": "256:9:57", "stateVariable": false, "storageLocation": "default", @@ -200,7 +200,7 @@ "typeString": "int24" }, "typeName": { - "id": 48859, + "id": 48856, "name": "int24", "nodeType": "ElementaryTypeName", "src": "256:5:57", @@ -212,23 +212,23 @@ "visibility": "internal" } ], - "id": 48864, + "id": 48861, "initialValue": { "commonType": { "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48863, + "id": 48860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48861, + "id": 48858, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48852, + "referencedDeclaration": 48849, "src": "268:4:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -238,11 +238,11 @@ "nodeType": "BinaryOperation", "operator": "%", "rightExpression": { - "id": 48862, + "id": 48859, "name": "window", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48854, + "referencedDeclaration": 48851, "src": "275:6:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -264,17 +264,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48867, + "id": 48864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48865, + "id": 48862, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48852, + "referencedDeclaration": 48849, "src": "295:4:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -285,7 +285,7 @@ "operator": "<", "rightExpression": { "hexValue": "30", - "id": 48866, + "id": 48863, "isConstant": false, "isLValue": false, "isPure": true, @@ -312,17 +312,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48889, + "id": 48886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48885, + "id": 48882, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48860, + "referencedDeclaration": 48857, "src": "414:3:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -336,17 +336,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48888, + "id": 48885, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48886, + "id": 48883, "name": "window", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48854, + "referencedDeclaration": 48851, "src": "420:6:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -357,7 +357,7 @@ "operator": "/", "rightExpression": { "hexValue": "32", - "id": 48887, + "id": 48884, "isConstant": false, "isLValue": false, "isPure": true, @@ -388,17 +388,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48898, + "id": 48895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48896, + "id": 48893, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48852, + "referencedDeclaration": 48849, "src": "457:4:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -408,11 +408,11 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 48897, + "id": 48894, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48860, + "referencedDeclaration": 48857, "src": "464:3:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -425,7 +425,7 @@ "typeString": "int24" } }, - "id": 48899, + "id": 48896, "isConstant": false, "isLValue": false, "isPure": false, @@ -437,17 +437,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48895, + "id": 48892, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48890, + "id": 48887, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48852, + "referencedDeclaration": 48849, "src": "433:4:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -463,17 +463,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48893, + "id": 48890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48891, + "id": 48888, "name": "window", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48854, + "referencedDeclaration": 48851, "src": "441:6:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -483,11 +483,11 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 48892, + "id": 48889, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48860, + "referencedDeclaration": 48857, "src": "450:3:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -501,7 +501,7 @@ } } ], - "id": 48894, + "id": 48891, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -525,12 +525,12 @@ "typeString": "int24" } }, - "functionReturnParameters": 48858, - "id": 48900, + "functionReturnParameters": 48855, + "id": 48897, "nodeType": "Return", "src": "407:60:57" }, - "id": 48901, + "id": 48898, "nodeType": "IfStatement", "src": "291:176:57", "trueBody": { @@ -540,13 +540,13 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48873, + "id": 48870, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48869, + "id": 48866, "isConstant": false, "isLValue": false, "isPure": false, @@ -556,11 +556,11 @@ "prefix": true, "src": "324:5:57", "subExpression": { - "id": 48868, + "id": 48865, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48860, + "referencedDeclaration": 48857, "src": "326:3:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -579,17 +579,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48872, + "id": 48869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48870, + "id": 48867, "name": "window", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48854, + "referencedDeclaration": 48851, "src": "333:6:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -600,7 +600,7 @@ "operator": "/", "rightExpression": { "hexValue": "32", - "id": 48871, + "id": 48868, "isConstant": false, "isLValue": false, "isPure": true, @@ -631,17 +631,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48882, + "id": 48879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48877, + "id": 48874, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48852, + "referencedDeclaration": 48849, "src": "359:4:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -657,17 +657,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48880, + "id": 48877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48878, + "id": 48875, "name": "window", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48854, + "referencedDeclaration": 48851, "src": "367:6:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -677,11 +677,11 @@ "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { - "id": 48879, + "id": 48876, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48860, + "referencedDeclaration": 48857, "src": "376:3:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -695,7 +695,7 @@ } } ], - "id": 48881, + "id": 48878, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -714,7 +714,7 @@ "typeString": "int24" } }, - "id": 48883, + "id": 48880, "isConstant": false, "isLValue": false, "isPure": false, @@ -726,17 +726,17 @@ "typeIdentifier": "t_int24", "typeString": "int24" }, - "id": 48876, + "id": 48873, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 48874, + "id": 48871, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48852, + "referencedDeclaration": 48849, "src": "346:4:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -746,11 +746,11 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 48875, + "id": 48872, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48860, + "referencedDeclaration": 48857, "src": "353:3:57", "typeDescriptions": { "typeIdentifier": "t_int24", @@ -768,8 +768,8 @@ "typeString": "int24" } }, - "functionReturnParameters": 48858, - "id": 48884, + "functionReturnParameters": 48855, + "id": 48881, "nodeType": "Return", "src": "317:63:57" } @@ -783,17 +783,17 @@ "name": "roundTick", "nameLocation": "139:9:57", "parameters": { - "id": 48855, + "id": 48852, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48852, + "id": 48849, "mutability": "mutable", "name": "tick", "nameLocation": "155:4:57", "nodeType": "VariableDeclaration", - "scope": 48903, + "scope": 48900, "src": "149:10:57", "stateVariable": false, "storageLocation": "default", @@ -802,7 +802,7 @@ "typeString": "int24" }, "typeName": { - "id": 48851, + "id": 48848, "name": "int24", "nodeType": "ElementaryTypeName", "src": "149:5:57", @@ -815,12 +815,12 @@ }, { "constant": false, - "id": 48854, + "id": 48851, "mutability": "mutable", "name": "window", "nameLocation": "167:6:57", "nodeType": "VariableDeclaration", - "scope": 48903, + "scope": 48900, "src": "161:12:57", "stateVariable": false, "storageLocation": "default", @@ -829,7 +829,7 @@ "typeString": "int24" }, "typeName": { - "id": 48853, + "id": 48850, "name": "int24", "nodeType": "ElementaryTypeName", "src": "161:5:57", @@ -844,17 +844,17 @@ "src": "148:26:57" }, "returnParameters": { - "id": 48858, + "id": 48855, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48857, + "id": 48854, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 48903, + "scope": 48900, "src": "196:5:57", "stateVariable": false, "storageLocation": "default", @@ -863,7 +863,7 @@ "typeString": "int24" }, "typeName": { - "id": 48856, + "id": 48853, "name": "int24", "nodeType": "ElementaryTypeName", "src": "196:5:57", @@ -877,7 +877,7 @@ ], "src": "195:7:57" }, - "scope": 48904, + "scope": 48901, "stateMutability": "pure", "virtual": false, "visibility": "public" @@ -890,11 +890,11 @@ "contractKind": "library", "fullyImplemented": true, "linearizedBaseContracts": [ - 48904 + 48901 ], "name": "Util", "nameLocation": "119:4:57", - "scope": 48905, + "scope": 48902, "usedErrors": [], "usedEvents": [] } diff --git a/deployment/alpha/out/Vault.sol/Vault.json b/deployment/alpha/out/Vault.sol/Vault.json index cb11c4f..a6b70c8 100644 --- a/deployment/alpha/out/Vault.sol/Vault.json +++ b/deployment/alpha/out/Vault.sol/Vault.json @@ -586,22 +586,22 @@ } ], "bytecode": { - "object": "0x60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033", + "object": "0x60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033", "sourceMap": "295:2416:58:-:0;;;530:119;;;;;;;;;;581:10;-1:-1:-1;;;;;566:37:58;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;558:47:58;;;394:1:50;615:27:58;;295:2416;;339:122:69;-1:-1:-1;;;;;196:31:69;;407:5;404:33;394:61;;451:1;448;441:12;394:61;339:122;:::o;466:176::-;556:13;;;603:33;556:13;603:33;:::i;:::-;;466:176;;;;:::o;647:312::-;717:6;770:2;758:9;749:7;745:23;741:32;738:147;;;796:79;119:1;116;109:12;796:79;904:49;945:7;934:9;904:49;:::i;:::-;894:59;647:312;-1:-1:-1;;;647:312:69:o;:::-;295:2416:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033", + "object": "0x6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033", "sourceMap": "295:2416:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;744:39;761:10;773:9;744:39;;;;;;;:::i;:::-;;;;;;;;295:2416;;;;;906:123;;;;;;;;;;-1:-1:-1;906:123:58;;;;;:::i;:::-;;:::i;:::-;;796:104;;;;;;;;;;-1:-1:-1;796:104:58;;;;;:::i;:::-;;:::i;2443:182::-;;;;;;;;;;-1:-1:-1;2443:182:58;;;;;:::i;:::-;;:::i;414:30::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;1926:159;;;;;;;;;;-1:-1:-1;1926:159:58;;;;;:::i;:::-;;:::i;2257:180::-;;;;;;;;;;-1:-1:-1;2257:180:58;;;;;:::i;:::-;;:::i;2091:160::-;;;;;;;;;;-1:-1:-1;2091:160:58;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;450:30::-;;;;;;;;;;;;;;;;;;;;;;:::i;1285:130::-;;;;;;;;;;-1:-1:-1;1285:130:58;;;;;:::i;:::-;;:::i;1564:116::-;;;;;;;;;;-1:-1:-1;1648:17:58;:24;1564:116;;;;;;:::i;1758:162::-;;;;;;;;;;-1:-1:-1;1758:162:58;;;;;:::i;:::-;;:::i;1169:110::-;;;;;;;;;;-1:-1:-1;1169:110:58;;;;;:::i;:::-;;:::i;486:37::-;;;;;;;;;;-1:-1:-1;486:37:58;;;;;;;;;;;;;;;:::i;906:123::-;988:34;1004:9;1015:6;988:15;:34::i;:::-;906:123;;:::o;796:104::-;849:44;873:10;886:6;849:15;:44::i;:::-;796:104;:::o;2443:182::-;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;2512:27:::1;;;;;;;;;;;;;;;;;::::0;:12:::1;:27::i;:::-;2549:24;2562:10;2549:24;;:12;:24::i;:::-;2583:35;:10;2607::::0;2583:23:::1;:35::i;1926:159::-:0;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;2038:40:::1;:10;2062:6:::0;2070:7;2038:23:::1;:40::i;2257:180::-:0;2371:59;:10;2390:5;2397:10;2409:13;2424:5;2371:18;:59::i;:::-;2257:180;;;:::o;2091:160::-;2158:38;;:::i;:::-;2215:17;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;2208:36;;;;;;;;2215:29;;;;;;;2208:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2215:29;;2208:36;;;;2215:29;;2208:36;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2208:36:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2208:36:58;;-1:-1:-1;;2208:36:58;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:160;;;:::o;1285:130::-;1373:35;1383:5;1390:9;1401:6;1373:9;:35::i;1758:162::-;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;1840:34:::1;;;;;;;;;;;;;;;;;::::0;:12:::1;:34::i;:::-;1884:29;:10;1907:5:::0;1884:22:::1;:29::i;1169:110::-:0;1236:36;1246:5;1253:10;1265:6;1236:9;:36::i;1035:128::-;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;1131:25:::1;::::0;:17:::1;::::0;::::1;::::0;:25;::::1;;;::::0;1149:6;;1131:25:::1;::::0;;;1149:6;1131:17;:25;::::1;;;;;;;;;;;;;::::0;::::1;;;;6598:121:16::0;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;6356:116::-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6405:15;:60::i;13639:319:54:-;13724:20;13747:4;:11;;13759:10;13747:23;;;;;;;;;;:::i;:::-;;;;;;;;:29;:23;;;;;:29;;;;;-1:-1:-1;13790:5:54;:28;;;;;;;;:::i;:::-;;13786:166;;13867:23;13835:4;:11;;13847:10;13835:23;;;;;;;;;;:::i;:::-;;;;;;;;;:29;:23;;;;;:29;:55;;;;;;;;;;;;;;:::i;:::-;;;;;;13909:32;13930:10;13909:32;;;;;;:::i;:::-;;;;;;;;13714:244;13639:319;;:::o;3521:2345::-;3639:13;;3655:15;-1:-1:-1;3631:40:54;;;;;;3708:11;;;:18;3758:16;3745:29;;;;3737:38;;;;;;3785:15;;3814:7;:25;;;;;;;;:::i;:::-;;3810:364;;-1:-1:-1;412:16:54;3810:364;;;3908:30;3897:7;:41;;;;;;;;:::i;:::-;;:84;;;-1:-1:-1;3953:28:54;3942:7;:39;;;;;;;;:::i;:::-;;3897:84;3892:282;;;4015:4;:14;;:21;;;;3997:40;;4051:4;:14;;4071:51;;;;;;;;4080:7;4071:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4107:13;;4071:51;;;;;;;;;;4051:72;;;;;;;;-1:-1:-1;4051:72:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4051:72:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3892:282;;;4160:14;;;;;;;;;;:::i;:::-;;;;;;;;3892:282;4189:7;4184:1610;4206:6;:13;4202:1;:17;;;4184:1610;;;4241:22;4266:6;4273:1;4266:9;;;;;;;;;;:::i;:::-;;;;;;;4241:34;;4321:18;4297:42;;;;;;;;:::i;:::-;:11;;;;:20;:42;;;;;;;;:::i;:::-;;4289:57;;;;;;;;;;;;:::i;:::-;4578:11;;;;:18;;4610;;;;;;4560:15;4610:18;;;4560:15;4578:11;:18;;4675:23;;;;;;:::i;:::-;;;;;;;;;;4734:12;;;;4712:19;4675:23;;;;;;;4712:19;;;:34;4789:19;;;;4760:26;;;:48;;;;;;;;;;;;4845:13;;4822:36;;;;;;;;;;;;;4896:14;;;;4760:48;4872:21;;;:38;;;;;;;;;;;;;4945:11;;;;4924:32;;-1:-1:-1;4924:18:54;;:32;;4675:23;;-1:-1:-1;4945:11:54;;4924:18;;:32;;:18;;:32;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4924:32:54;;;;;;;;;;;;;;;;;;;;;4996:16;;;;4970:23;;;:42;;5063:27;;;;5026:64;;;;4970:42;;;;;;;;;5026:64;;;;;;;;;;;;;;;-1:-1:-1;5104:540:54;5121:5;:14;;;:21;5119:1;:23;5104:540;;;5168:21;;;:28;;;;;;:12;:28;;;5243:14;;;;:17;;5258:1;;5243:17;;;;;;:::i;:::-;;;;;;;5214:46;;5295:27;5325:6;:12;;:21;;5347:1;5325:24;;;;;;;;:::i;:::-;;;;;;;;5399:11;;5325:24;;;;;;5385:25;;;;;;;;;;;;;;5325:24;-1:-1:-1;5428:104:54;5445:2;:14;;;:21;5443:1;:23;5428:104;;;5494:2;:14;;5514:2;:14;;;5529:1;5514:17;;;;;;;;:::i;:::-;;;;;;;;;;;;5494:38;;;;;;;;-1:-1:-1;5494:38:54;;;;;;;;;;;;;;;;;;5514:17;;5494:38;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;5494:38:54;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5468:3:54;;5428:104;;;-1:-1:-1;;;5550:22:54;;;:30;;;;;;;;5578:1;5550:30;;;;;;;;;;;;;5598:23;;;:31;;;;;;;;;;;;;;;;;;;;5144:3;5104:540;;;-1:-1:-1;5657:12:54;;:34;;5757:26;;5705:38;5727:15;5705:38;;;5757:26;;;;;;;;;;;-1:-1:-1;4221:3:54;;-1:-1:-1;4221:3:54;;;:::i;:::-;;;;4184:1610;;;;5808:51;5827:10;5844:6;:13;5808:51;;;;;;;:::i;:::-;;;;;;;;3621:2245;;3521:2345;;;:::o;6139:5574::-;6274:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;6307:27;6328:4;6307:12;:27::i;:::-;6344:30;6362:10;6357:16;;6344:12;:30::i;:::-;6384:32;6402:12;6397:18;;6384:12;:32::i;:::-;6426:30;6459:4;:11;;6471:10;6459:23;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;6496:12:54;;;;;;:35;;;;;;;;:::i;:::-;;6492:65;;6545:12;;;;;;;;;;:::i;6492:65::-;6579:23;6605:6;:12;;:21;;6627:12;6605:35;;;;;;;;;;:::i;:::-;;;;;;;;6854:20;;;6876:21;;;6605:35;6899:18;;;:22;6819:103;;;;;6605:35;;;;;;;;-1:-1:-1;6605:35:54;;;;475:42:50;;6819:34:54;;:103;;:34;6854:20;;;;6876:21;;;;;6854:20;6899:22;;;;;6819:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6804:118;;6937:7;6932:2647;6954:19;;;:26;6950:30;;;;6932:2647;;;7001:29;7033:7;:19;;7053:1;7033:22;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;7073:15:54;;;;:38;;;;;;;;:::i;:::-;;7069:2480;;7131:31;;;;;;;;;;;;;;;;;;:12;:31::i;:::-;7180:24;7218:10;:21;;7207:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7180:78;-1:-1:-1;7276:11:54;;7290;;:16;:38;;;;;;;;:::i;:::-;;:91;;7365:11;;:16;;;7350:12;;;;:31;;7365:16;7350:12;;;;;:31;:::i;:::-;7290:91;;;7331:11;;:16;;;7290:91;7276:105;;7410:15;7403:4;:22;;;7399:60;;;7447:12;;;;;;;;;;:::i;7399:60::-;7516:18;7498:9;;;;:14;:36;;;;;;;;:::i;:::-;;:85;;7569:9;;;;;:14;;7554:12;;;;:29;;7569:14;7554:12;;;;;:29;:::i;:::-;7498:85;;;7537:2;:9;;;:14;;;7498:85;7491:92;;7612:15;7605:4;:22;;;7601:60;;;7649:12;;;;;;;;;;:::i;7601:60::-;7113:576;;7069:2480;;;7730:19;7711:15;;;;:38;;;;;;;;:::i;:::-;;7707:1842;;7769:31;;;;;;;;;;;;;;;;;;:12;:31::i;:::-;7822:12;:17;;7838:1;7822:17;7818:95;;7900:4;7885:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7862:51:54;;-1:-1:-1;;;;;;7818:95:54;7931:24;7969:10;:21;;7958:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8077:10;;;;7931:78;;-1:-1:-1;8027:28:54;;;;8073:68;;;8110:31;;;;;;;;;;:::i;8073:68::-;8333:15;;;;8372;;;;8325:24;;;;;8372:20;;;8368:269;;8536:5;8518:2;:15;;;8482:51;;8507:2;:7;;;8489:25;;:15;:25;;;;:::i;:::-;8482:51;;;;:::i;:::-;:59;;;;:::i;:::-;8470:71;;;;:::i;:::-;;;8578:1;8567:8;:12;8563:55;;;-1:-1:-1;8617:1:54;8563:55;8654:22;8667:8;8654:12;:22::i;:::-;8694:19;8707:5;8694:12;:19::i;:::-;8744:10;;8731:24;;:12;:24::i;:::-;8955:10;;8805:8;;8955:28;;;;;8978:5;8969:14;;:5;:14;;8955:28;:61;;;-1:-1:-1;8988:10:54;;8987:11;:29;;;;;9011:5;9002:14;;:5;:14;;8987:29;8951:99;;;9039:11;;;;;;;;;;:::i;8951:99::-;9072:22;;;;;:85;;-1:-1:-1;9118:10:54;;:39;;;;;9140:17;9132:25;;:5;:25;;;9118:39;9072:149;;;-1:-1:-1;9182:10:54;;9181:11;:40;;;;;9204:17;9196:25;;:5;:25;;;9181:40;9068:217;;;9280:5;9260:25;;9068:217;7751:1549;;;;7707:1842;;;9341:22;9322:15;;;;:41;;;;;;;;:::i;:::-;;9318:231;;9383:34;;;;;;;;;;;;;;;;;;:12;:34::i;:::-;9435:12;;;;;;;;;;:::i;9318:231::-;9537:12;;;;;;;;;;:::i;9318:231::-;-1:-1:-1;6982:3:54;;;;:::i;:::-;;;;6932:2647;;;;9588:32;;;;;;;;;;;;;;;;;;:12;:32::i;:::-;9643:19;;;;9630:33;;:12;:33::i;:::-;9686:16;;9673:30;;9686:16;;9673:12;:30::i;:::-;9726:26;;;;9713:40;;9726:26;;9713:12;:40::i;:::-;9763:29;9776:6;:15;;;9763:12;:29::i;:::-;9802:30;9815:6;:16;;;9802:12;:30::i;:::-;9842:50;9855:6;:22;;9878:12;9855:36;;;;;;;;;;:::i;:::-;;;;;;;;;9842:12;:50::i;:::-;9902:51;9915:6;:23;;9939:12;9915:37;;;;;;;;;;:::i;9902:51::-;10100:26;;;;9963:14;;10100:26;;:105;;10168:6;:23;;10192:12;10168:37;;;;;;;;;;:::i;:::-;;;;;;;;;10100:105;;;10129:6;:22;;10152:12;10129:36;;;;;;;;;;:::i;:::-;;;;;;;;;10100:105;10002:16;;9980:19;;;;10021:16;;9980:38;;10002:16;;;;9980:38;:::i;:::-;:57;;;;:::i;:::-;:226;;;;:::i;:::-;9963:243;;10239:22;;;;;;;;;;;;;;;;;;:12;:22::i;:::-;10271:20;10284:6;10271:12;:20::i;:::-;10301:21;;;;;;;;;;;;;;;;;;:12;:21::i;:::-;10332:31;10345:17;10332:31;;:12;:31::i;:::-;10373:21;;;;;;;;;;;;;;;;;;:12;:21::i;:::-;10404:26;10417:12;10404:26;;:12;:26::i;:::-;10552:19;;;;10484:26;;;;;;:63;;10531:6;:16;;;10484:63;;;10513:6;:15;;;10484:63;10483:88;;10474:111;;;;;;;;;;;;:::i;:::-;10638:26;;;;10595:17;;10638:26;;:63;;10685:6;:16;;;10638:63;;;10667:6;:15;;;10638:63;10615:19;;;;:87;;;;:::i;:::-;10595:107;;10712:25;;;;;;;;;;;;;;;;;;:12;:25::i;:::-;10747:23;10760:9;10747:12;:23::i;:::-;10793:9;10784:6;:18;10780:109;;;10880:9;10871:18;;10780:109;10917:1;10908:6;:10;10899:27;;;;;;;;;;;;:::i;:::-;10936:20;10949:6;10936:12;:20::i;:::-;10986:34;;;;10966:17;;10986:34;;;;;:58;;11039:4;10986:58;;;11023:5;10986:58;10966:78;;11054:23;11067:9;11054:12;:23::i;:::-;11087:16;;11175:18;11144;;;:27;;;;:49;;;;;;;:::i;:::-;;11140:236;;11232:75;11250:9;11261:6;11275:4;11281:6;11289:17;11232;:75::i;:::-;11208:99;;-1:-1:-1;11208:99:54;-1:-1:-1;11140:236:54;;;11364:12;;;;;;;;;;:::i;11140:236::-;11422:8;11403:6;:15;;;:27;;;;;;;:::i;:::-;;;;;;;;11460:9;11440:6;:16;;;:29;;;;;;;:::i;:::-;;;;;;;;11519:8;11479:6;:22;;11502:12;11479:36;;;;;;;;;;:::i;:::-;;;;;;;;;:48;;;;;;;:::i;:::-;;;;;;;;11578:9;11537:6;:23;;11561:12;11537:37;;;;;;;;;;:::i;:::-;;;;;;;;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;11602:65:54;;;;;;11621:10;;11633:12;;11647:8;;11657:9;;11602:65;:::i;:::-;;;;;;;;11677:29;11693:4;11699:6;11677:15;:29::i;:::-;6264:5449;;;;;;;;;;6139:5574;;;;;:::o;1421:137:58:-;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;1518:33:::1;::::0;;;;:14:::1;::::0;::::1;::::0;::::1;::::0;:33:::1;::::0;1533:9;;1544:6;;1518:33:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1421:137:::0;;;:::o;3289:226:54:-;3406:18;;;3422:1;3406:18;;;;;;;;;3378:25;;3406:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3378:46;;3446:5;3434:6;3441:1;3434:9;;;;;;;;:::i;:::-;;;;;;:17;;;;3468:40;3481:4;3486:6;3493:14;3468:12;:40::i;868:133:16:-;939:55;986:7;965:19;939:55::i;6841:116::-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6890:15;:60::i;6478:114::-;6526:59;6581:2;6542:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6526:15;:59::i;6725:110::-;6771:57;6824:2;6787:40;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6771:15;:57::i;11720:909:54:-;11870:16;11888:17;12063:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;12100:37;12118:17;12113:23;;12100:12;:37::i;:::-;12151:19;;;;;;12147:476;;;12240:138;;;;;;;;;;;;;;12293:13;;;;12240:138;;;;12293:13;12308:14;;;;;12240:138;;;;;;;;;;;;;;12335:11;;;:15;12293:13;12335:15;;;;12240:138;;;;;;;;;;;;;;;;;12210:169;;:29;:169::i;:::-;12186:193;;-1:-1:-1;12186:193:54;-1:-1:-1;12147:476:54;;;12473:138;;;;;;;;;;;;;;12526:13;;;;12473:138;;;;12526:13;12541:14;;;;;12473:138;;;;;;;;;;;;;;12568:11;;;:15;12526:13;12568:15;;;;12473:138;;;;;;;;;;;;;;;;;12442:170;;:30;:170::i;:::-;12418:194;;-1:-1:-1;12418:194:54;-1:-1:-1;12147:476:54;11720:909;;;;;;;;:::o;12635:706::-;12779:26;;;;12736:17;;12779:26;;:63;;12826:6;:16;;;12779:63;;;12808:6;:15;;;12779:63;12756:19;;;;:87;;;;:::i;:::-;12736:107;;12857:9;12870:1;12857:14;12853:481;;12910:12;;;:36;;;;12925:21;12910:36;;;;;412:16;13070:15;;;;;;:31;13066:86;;13136:15;;;;13119:33;;13130:4;;13136:15;;;;;13119:10;:33::i;12853:481::-;13181:15;;;;;;;412:16;13181:15;;;:31;;;;:105;;-1:-1:-1;13256:30:54;13231:15;;;;13216:14;;;:31;;:14;;13231:15;;;;;;13216:31;;;;;;:::i;:::-;;;;;;;;;;:36;;;:70;;;;;;;;:::i;:::-;;13181:105;13177:157;;;13318:15;;;;13301:33;;13312:4;;13318:15;;;;;13301:10;:33::i;1007:380:16:-;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;584:1981:56:-;652:16;670:17;1065:41;;;;;;;;;;;;;;;;;;:12;:41::i;:::-;1116:27;1137:4;1116:12;:27::i;:::-;1153:28;1166:6;:14;;;1153:12;:28::i;:::-;1191:29;1204:6;:15;;;1191:12;:29::i;:::-;1230:30;1248:6;:10;;;1243:16;;1230:12;:30::i;:::-;1270:39;1291:6;:16;;;1270:12;:39::i;:::-;1319:27;1332:6;:13;;;1319:12;:27::i;:::-;1356:44;1374:6;:24;;;1369:30;;1356:12;:44::i;:::-;1410:52;765:42:50;1410:12:56;:52::i;:::-;1484:6;:13;;;1473:24;;1507:15;1532:6;:14;;;1525:32;;;1566:4;1525:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1507:65;;1586:7;1597:1;1586:12;1582:83;;1641:13;;;;;;;;;;:::i;1582:83::-;1688:8;1678:7;:18;1674:55;;;1722:7;1711:18;;1674:55;1740:92;1767:6;:14;;;765:42:50;1823:8:56;1740:26;:92::i;:::-;2019:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;765:42:50;2068:46:56;;;2115:281;;;;;;;;2173:6;:14;;;2115:281;;;;;;2199:6;:15;;;2115:281;;;;;;2221:6;:10;;;2115:281;;;;;;2244:6;:16;;;2115:281;;;;;;2284:15;2115:281;;;;2311:8;2115:281;;;;2339:1;2115:281;;;;2361:6;:24;;;2115:281;;;;;2068:329;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2056:341;;2407:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2440;2453:9;2440:12;:23::i;:::-;2473:85;2500:6;:14;;;765:42:50;2556:1:56;2473:26;:85::i;:::-;693:1872;584:1981;;;:::o;2571:3025::-;2640:16;2658:17;3109:15;3134:6;:14;;;3127:32;;;3168:4;3127:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3109:65;;3188:7;3199:1;3188:12;3184:83;;3243:13;;;;;;;;;;:::i;3184:83::-;3316:42;;;;;;;;;;;;;;;;;3298:7;;3316:42;;:12;:42::i;:::-;3368:27;3389:4;3368:12;:27::i;:::-;3405:28;3418:6;:14;;;3405:12;:28::i;:::-;3443:29;3456:6;:15;;;3443:12;:29::i;:::-;3482:30;3500:6;:10;;;3495:16;;3482:12;:30::i;:::-;3522:39;3543:6;:16;;;3522:12;:39::i;:::-;3571:27;3584:6;:13;;;3571:12;:27::i;:::-;3608:44;3626:6;:24;;;3621:30;;3608:12;:44::i;:::-;3662:52;765:42:50;3662:12:56;:52::i;:::-;3724:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;3757:25;3770:11;3757:12;:25::i;:::-;3793:95;3820:6;:14;;;765:42:50;3876:11:56;3793:26;:95::i;:::-;4076:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;765:42:50;4117:47:56;;;4165:309;;;;;;;;4224:6;:14;;;4165:309;;;;;;4250:6;:15;;;4165:309;;;;;;4272:6;:10;;;4165:309;;;;;;4295:6;:16;;;4165:309;;;;;;4335:15;4165:309;;;;4363:6;:13;;;4165:309;;;;4395:11;4165:309;;;;4439:6;:24;;;4165:309;;;;;4117:358;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4117:358:56;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4113:1282;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;765:42:50;4802:46:56;;;4849:296;;;;;;;;4911:6;:14;;;4849:296;;;;;;4937:6;:15;;;4849:296;;;;;;4959:6;:10;;;4849:296;;;;;;4982:6;:16;;;4849:296;;;;;;5026:15;4849:296;;;;5053:11;4849:296;;;;5084:1;4849:296;;;;5106:6;:24;;;4849:296;;;;;4802:344;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4802:344:56;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4798:587;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5330:6;5323:14;;;;;;;;;;;:::i;4798:587::-;;;;;;;;;;;5201:11;5190:22;;5242:6;5230:18;;5147:116;4589:806;4113:1282;;;4556:13;;;;4525:5;;-1:-1:-1;4556:13:56;-1:-1:-1;4113:1282:56;5405:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;5438:22;5451:8;5438:12;:22::i;:::-;5470:23;5483:9;5470:12;:23::i;:::-;5504:85;5531:6;:14;;;765:42:50;5587:1:56;5504:26;:85::i;:::-;2681:2915;;2571:3025;;;:::o;13347:286:54:-;13428:22;13453:4;:14;;13468:8;13453:24;;;;;;;;;;:::i;:::-;;;;;;;;;13524:9;;13453:24;;-1:-1:-1;13505:28:54;;13524:9;;;;;;;13505:16;;;;:28;:::i;:::-;13557:16;;13487:46;;-1:-1:-1;13557:16:54;;;;;13543:83;13577:8;13575:10;;:1;:10;;;13543:83;;;13605:21;13618:4;13624:1;13605:12;:21::i;:::-;13587:3;;13543:83;;;;13418:215;;13347:286;;:::o;1873:307:47:-;1986:12;2000:17;2021:5;:10;;2055:23;;;2080:2;2084:5;2032:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:70;;;;2032:58;2021:70;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1985:106;;;;2109:7;:57;;;;-1:-1:-1;2121:11:47;;:16;;:44;;;2152:4;2141:24;;;;;;;;;;;;:::i;:::-;2101:72;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;147:96:69:-;182:7;93:42;82:54;;215:22;204:33;147:96;-1:-1:-1;;147:96:69:o;248:95::-;314:22;330:5;314:22;:::i;:::-;309:3;302:35;;;248:95::o;420:106::-;513:5;497:22;348:67;531:283;693:2;678:18;;705:37;682:9;724:6;705:37;:::i;:::-;751:57;804:2;793:9;789:18;781:6;751:57;:::i;:::-;531:283;;;;;:::o;1228:138::-;1311:30;1335:5;1311:30;:::i;:::-;1304:5;1301:41;1291:69;;1356:1;1353;1346:12;1371:188;1458:20;;;1512:41;1458:20;1512:41;:::i;:::-;;1371:188;;;;:::o;1564:122::-;1655:5;1639:22;348:67;1691:172;1770:20;;;1824:33;1770:20;1824:33;:::i;1868:389::-;1944:6;1952;2005:2;1993:9;1984:7;1980:23;1976:32;1973:147;;;2031:79;295:2416:58;;;2031:79:69;2139:46;2177:7;2166:9;2139:46;:::i;:::-;2129:56;;2204:47;2243:7;2238:2;2227:9;2223:18;2204:47;:::i;:::-;2194:57;;1868:389;;;;;:::o;2262:290::-;2321:6;2374:2;2362:9;2353:7;2349:23;2345:32;2342:147;;;2400:79;295:2416:58;;;2400:79:69;2508:38;2538:7;2527:9;2508:38;:::i;2665:120::-;2635:18;2624:30;;2739:21;2557:103;2790:170;2868:20;;;2922:32;2868:20;2922:32;:::i;2965:288::-;3023:6;3076:2;3064:9;3055:7;3051:23;3047:32;3044:147;;;3102:79;295:2416:58;;;3102:79:69;3210:37;3239:7;3228:9;3210:37;:::i;3339:91::-;3327:4;3316:16;;3403:20;3258:76;3435:183;3565:2;3550:18;;3577:35;3554:9;3594:6;3577:35;:::i;3904:184::-;3956:77;3953:1;3946:88;4053:4;4050:1;4043:15;4077:4;4074:1;4067:15;4093:246;3826:66;3821:2;3810:14;;3806:87;4172:6;4168:37;4271:6;4259:10;4256:22;4235:18;4223:10;4220:34;4217:62;4214:88;;;4282:18;;:::i;:::-;4318:2;4311:22;-1:-1:-1;;4093:246:69:o;4344:168::-;4378:6;4415:20;881:2;875:9;;819:67;4415:20;4454:8;4444:18;;4471:35;4501:4;4491:8;4471:35;:::i;:::-;;4344:168;;;:::o;4517:192::-;4586:4;4619:18;4611:6;4608:30;4605:56;;;4641:18;;:::i;:::-;-1:-1:-1;4686:1:69;4682:14;4698:4;4678:25;;4517:192::o;5360:107::-;5441:1;5434:5;5431:12;5421:40;;5457:1;5454;5447:12;5472:184;5557:20;;;5611:39;5557:20;5611:39;:::i;5759:120::-;5739:8;5728:20;;5833:21;5661:93;5884:170;5962:20;;;6016:32;5962:20;6016:32;:::i;6059:436::-;6111:5;6159:4;6147:9;6142:3;6138:19;6134:30;6131:145;;;6187:79;295:2416:58;;;6187:79:69;6300:21;6316:4;6300:21;:::i;:::-;6339:7;6330:16;;6371:40;6407:3;6396:9;6371:40;:::i;:::-;6362:7;6355:57;6446:42;6484:3;6479:2;6468:9;6464:18;6446:42;:::i;:::-;6441:2;6432:7;6428:16;6421:68;;6059:436;;;;:::o;6597:116::-;6572:13;;6565:21;6669:19;6500:92;6718:166;6794:20;;;6848:30;6794:20;6848:30;:::i;7168:120::-;7154:6;7143:18;;7242:21;7084:79;7293:170;7371:20;;;7425:32;7371:20;7425:32;:::i;7666:113::-;7753:1;7746:5;7743:12;7733:40;;7769:1;7766;7759:12;7784:196;7875:20;;;7929:45;7875:20;7929:45;:::i;8099:183::-;8147:4;8180:18;8172:6;8169:30;8166:56;;;8202:18;;:::i;:::-;-1:-1:-1;3821:2:69;3810:14;3826:66;3806:87;8271:4;8239:37;;8099:183::o;8287:150::-;8388:6;8383:3;8378;8365:30;-1:-1:-1;8429:1:69;8411:16;;8404:27;8287:150::o;8442:441::-;8506:5;8541:52;8557:35;8585:6;8557:35;:::i;:::-;8541:52;:::i;:::-;8611:7;8602:16;;8643:6;8634:7;8627:23;8683:3;8674:6;8669:3;8665:16;8662:25;8659:140;;;8710:79;295:2416:58;;;8710:79:69;8808:69;8870:6;8863:4;8854:7;8850:18;8845:3;8808:69;:::i;:::-;;8442:441;;;;;:::o;8888:315::-;8930:5;8983:3;8976:4;8968:6;8964:17;8960:27;8950:150;;9011:79;295:2416:58;;;9011:79:69;9118;9193:3;9184:6;9171:20;9164:4;9156:6;9152:17;9118:79;:::i;9208:659::-;9265:5;9313:4;9301:9;9296:3;9292:19;9288:30;9285:145;;;9341:79;295:2416:58;;;9341:79:69;9454:21;9470:4;9454:21;:::i;:::-;9493:7;9484:16;;9525:46;9567:3;9556:9;9525:46;:::i;:::-;9516:7;9509:63;9623:2;9612:9;9608:18;9595:32;9650:18;9642:6;9639:30;9636:145;;;9692:79;295:2416:58;;;9692:79:69;9815:45;9856:3;9847:6;9836:9;9832:22;9815:45;:::i;:::-;9810:2;9801:7;9797:16;9790:71;;;9208:659;;;;:::o;9872:958::-;9961:5;9996:74;10012:57;10062:6;10012:57;:::i;9996:74::-;10131:23;;;10088:7;-1:-1:-1;10227:1:69;10223:14;;;10211:27;;10183:4;10170:18;;10250:15;;;10247:130;;;10288:79;295:2416:58;;;10288:79:69;10397:6;10412:412;10428:6;10423:3;10420:15;10412:412;;;10516:3;10503:17;10552:18;10539:11;10536:35;10533:162;;;10602:79;295:2416:58;;;10602:79:69;10720:59;10775:3;10761:11;10753:6;10749:24;10720:59;:::i;:::-;10708:72;;-1:-1:-1;10809:4:69;10800:14;;;;10445;10412:412;;;10416:3;;;9872:958;;;;;:::o;10835:359::-;10899:5;10952:3;10945:4;10937:6;10933:17;10929:27;10919:150;;10980:79;295:2416:58;;;10980:79:69;11087:101;11184:3;11175:6;11162:20;11155:4;11147:6;11143:17;11087:101;:::i;11199:665::-;11253:5;11301:4;11289:9;11284:3;11280:19;11276:30;11273:145;;;11329:79;295:2416:58;;;11329:79:69;11442:21;11458:4;11442:21;:::i;:::-;11481:7;11472:16;;11513:33;11542:3;11531:9;11513:33;:::i;:::-;11504:7;11497:50;11598:2;11587:9;11583:18;11570:32;11625:18;11617:6;11614:30;11611:145;;;11667:79;295:2416:58;;;11667:79:69;11790:67;11853:3;11844:6;11833:9;11829:22;11790:67;:::i;11869:949::-;11955:5;11990:71;12006:54;12053:6;12006:54;:::i;11990:71::-;12122:23;;;12079:7;-1:-1:-1;12218:1:69;12214:14;;;12202:27;;12174:4;12161:18;;12241:15;;;12238:130;;;12279:79;295:2416:58;;;12279:79:69;12388:6;12403:409;12419:6;12414:3;12411:15;12403:409;;;12507:3;12494:17;12543:18;12530:11;12527:35;12524:162;;;12593:79;295:2416:58;;;12593:79:69;12711:56;12763:3;12749:11;12741:6;12737:24;12711:56;:::i;:::-;12699:69;;-1:-1:-1;12797:4:69;12788:14;;;;12436;12403:409;;12823:353;12884:5;12937:3;12930:4;12922:6;12918:17;12914:27;12904:150;;12965:79;295:2416:58;;;12965:79:69;13072:98;13166:3;13157:6;13144:20;13137:4;13129:6;13125:17;13072:98;:::i;13181:1149::-;13237:5;13285:6;13273:9;13268:3;13264:19;13260:32;13257:147;;;13315:79;295:2416:58;;;13315:79:69;13428:23;13444:6;13428:23;:::i;:::-;13469:7;13460:16;;13501:34;13531:3;13520:9;13501:34;:::i;:::-;13492:7;13485:51;13570:43;13609:3;13604:2;13593:9;13589:18;13570:43;:::i;:::-;13565:2;13556:7;13552:16;13545:69;13648:48;13692:3;13687:2;13676:9;13672:18;13648:48;:::i;:::-;13643:2;13634:7;13630:16;13623:74;13733:44;13773:3;13767;13756:9;13752:19;13733:44;:::i;:::-;13726:4;13717:7;13713:18;13706:72;13813:41;13850:3;13844;13833:9;13829:19;13813:41;:::i;:::-;13807:3;13798:7;13794:17;13787:68;13890:41;13927:3;13921;13910:9;13906:19;13890:41;:::i;:::-;13884:3;13875:7;13871:17;13864:68;13967:43;14006:3;14000;13989:9;13985:19;13967:43;:::i;:::-;13961:3;13952:7;13948:17;13941:70;14062:6;14051:9;14047:22;14034:36;14093:18;14085:6;14082:30;14079:145;;;14135:79;295:2416:58;;;14135:79:69;14259:64;14319:3;14310:6;14299:9;14295:22;14259:64;:::i;:::-;14253:3;14244:7;14240:17;14233:91;;;13181:1149;;;;:::o;14335:955::-;14423:5;14458:73;14474:56;14523:6;14474:56;:::i;14458:73::-;14592:23;;;14549:7;-1:-1:-1;14688:1:69;14684:14;;;14672:27;;14644:4;14631:18;;14711:15;;;14708:130;;;14749:79;295:2416:58;;;14749:79:69;14858:6;14873:411;14889:6;14884:3;14881:15;14873:411;;;14977:3;14964:17;15013:18;15000:11;14997:35;14994:162;;;15063:79;295:2416:58;;;15063:79:69;15181:58;15235:3;15221:11;15213:6;15209:24;15181:58;:::i;:::-;15169:71;;-1:-1:-1;15269:4:69;15260:14;;;;14906;14873:411;;15295:357;15358:5;15411:3;15404:4;15396:6;15392:17;15388:27;15378:150;;15439:79;295:2416:58;;;15439:79:69;15546:100;15642:3;15633:6;15620:20;15613:4;15605:6;15601:17;15546:100;:::i;15955:676::-;16089:6;16097;16150:2;16138:9;16129:7;16125:23;16121:32;16118:147;;;16176:79;295:2416:58;;;16176:79:69;16301:9;16288:23;16334:18;16326:6;16323:30;16320:145;;;16376:79;295:2416:58;;;16376:79:69;16484:70;16546:7;16537:6;16526:9;16522:22;16484:70;:::i;:::-;16474:80;;;16573:52;16617:7;16612:2;16601:9;16597:18;16573:52;:::i;16636:118::-;3327:4;3316:16;;16709:20;3258:76;16759:168;16836:20;;;16890:31;16836:20;16890:31;:::i;16932:358::-;16989:5;17037:4;17025:9;17020:3;17016:19;17012:30;17009:145;;;17065:79;295:2416:58;;;17065:79:69;17178:21;17194:4;17178:21;:::i;:::-;17217:7;17208:16;;17249:34;17279:3;17268:9;17249:34;:::i;:::-;17233:51;;16932:358;;-1:-1:-1;;16932:358:69:o;17295:489::-;17398:6;17406;17414;17467:2;17455:9;17446:7;17442:23;17438:32;17435:147;;;17493:79;295:2416:58;;;17493:79:69;17601:37;17630:7;17619:9;17601:37;:::i;:::-;17591:47;;17657:45;17694:7;17689:2;17678:9;17674:18;17657:45;:::i;:::-;17647:55;;17721:57;17770:7;17765:2;17754:9;17750:18;17721:57;:::i;:::-;17711:67;;17295:489;;;;;:::o;17900:184::-;17952:77;17949:1;17942:88;18049:4;18046:1;18039:15;18073:4;18070:1;18063:15;18089:113;18170:1;18163:5;18160:12;18150:46;;18176:18;;:::i;18207:131::-;18281:5;18295:37;18281:5;18295:37;:::i;:::-;18207:131;;;:::o;18343:121::-;18393:9;18430:28;18452:5;18430:28;:::i;18469:116::-;18541:37;18572:5;18541:37;:::i;18590:103::-;5739:8;5728:20;;18665:21;5661:93;18698:226;18757:43;18796:3;18788:5;18782:12;18757:43;:::i;:::-;18846:4;18839:5;18835:16;18829:23;18861:57;18912:4;18907:3;18903:14;18889:12;18861:57;:::i;19029:89::-;6572:13;;6565:21;19092:19;6500:92;19123:93;2635:18;2624:30;;19188:21;2557:103;19590:93;7154:6;7143:18;;19655:21;7084:79;20066:119;20153:1;20146:5;20143:12;20133:46;;20159:18;;:::i;20190:143::-;20270:5;20284:43;20270:5;20284:43;:::i;20338:133::-;20394:9;20431:34;20459:5;20431:34;:::i;20476:128::-;20554:43;20591:5;20554:43;:::i;20843:250::-;20928:1;20938:113;20952:6;20949:1;20946:13;20938:113;;;21028:11;;;21022:18;21009:11;;;21002:39;20974:2;20967:10;20938:113;;;-1:-1:-1;;21085:1:69;21067:16;;21060:27;20843:250::o;21098:314::-;21150:3;21182:25;21201:5;19301:12;;19221:94;21182:25;19425:19;;;19477:4;19468:14;;21285:67;21345:6;21338:5;21331:4;21324:5;21320:16;21285:67;:::i;:::-;3826:66;3821:2;3810:14;;3806:87;21368:38;;21098:314;-1:-1:-1;;;;21098:314:69:o;21417:288::-;21488:49;21533:3;21525:5;21519:12;21488:49;:::i;:::-;21470:3;21583:4;21576:5;21572:16;21566:23;21621:4;21614;21609:3;21605:14;21598:28;21642:57;21693:4;21688:3;21684:14;21670:12;21642:57;:::i;:::-;21635:64;21417:288;-1:-1:-1;;;;21417:288:69:o;21710:150::-;21774:10;21813:41;21850:3;21842:6;21813:41;:::i;21968:719::-;22031:3;22063:47;22104:5;19301:12;;19221:94;22063:47;19425:19;;;19477:4;19468:14;;22217:5;22210:12;;22261:6;22258:1;22254:14;22247:5;22243:26;22292:49;22335:5;19578:4;19569:14;;19493:92;22292:49;22359:1;22369:292;22383:6;22380:1;22377:13;22369:292;;;22454:5;22448:4;22444:16;22439:3;22432:29;22482:59;22536:4;22527:6;22521:13;22482:59;:::i;:::-;22474:67;-1:-1:-1;19578:4:69;19569:14;;22646:4;22637:14;;;;;22554:63;-1:-1:-1;22405:1:69;22398:9;22369:292;;;-1:-1:-1;22677:4:69;;21968:719;-1:-1:-1;;;;;;21968:719:69:o;22692:283::-;22760:36;22792:3;22784:5;22778:12;22760:36;:::i;:::-;22742:3;22842:4;22835:5;22831:16;22825:23;22880:4;22873;22868:3;22864:14;22857:28;22901:68;22963:4;22958:3;22954:14;22940:12;22901:68;:::i;22980:144::-;23041:10;23080:38;23114:3;23106:6;23080:38;:::i;23229:701::-;23289:3;23321:44;23359:5;19301:12;;19221:94;23321:44;19425:19;;;19477:4;19468:14;;23469:5;23462:12;;23513:6;23510:1;23506:14;23499:5;23495:26;23544:46;23584:5;19578:4;19569:14;;19493:92;23544:46;23608:1;23618:286;23632:6;23629:1;23626:13;23618:286;;;23703:5;23697:4;23693:16;23688:3;23681:29;23731:56;23782:4;23773:6;23767:13;23731:56;:::i;:::-;23723:64;-1:-1:-1;19578:4:69;19569:14;;23889:4;23880:14;;;;;23800:60;-1:-1:-1;23654:1:69;23647:9;23618:286;;23935:987;24005:48;24049:3;24041:5;24035:12;24005:48;:::i;:::-;23987:3;24099:4;24092:5;24088:16;24082:23;24114:59;24167:4;24162:3;24158:14;24144:12;24114:59;:::i;:::-;;24221:4;24214:5;24210:16;24204:23;24236:55;24285:4;24280:3;24276:14;24260;24236:55;:::i;:::-;;24339:4;24332:5;24328:16;24322:23;24354:50;24398:4;24393:3;24389:14;24373;24354:50;:::i;:::-;;24452:4;24445:5;24441:16;24435:23;24467:47;24508:4;24503:3;24499:14;24483;24467:47;:::i;:::-;;24562:4;24555:5;24551:16;24545:23;24577:47;24618:4;24613:3;24609:14;24593;24577:47;:::i;:::-;;24672:4;24665:5;24661:16;24655:23;24687:49;24730:4;24725:3;24721:14;24705;24687:49;:::i;:::-;;24784:4;24777:5;24773:16;24767:23;24824:6;24815;24810:3;24806:16;24799:32;24847:69;24908:6;24903:3;24899:16;24883:14;24847:69;:::i;24927:119::-;25014:1;25007:5;25004:12;24994:46;;25020:18;;:::i;25051:143::-;25131:5;25145:43;25131:5;25145:43;:::i;25199:133::-;25255:9;25292:34;25320:5;25292:34;:::i;25337:128::-;25415:43;25452:5;25415:43;:::i;25570:93::-;25548:10;25537:22;;25635:21;25470:95;26016:153;26095:31;26122:3;26114:6;26095:31;:::i;:::-;-1:-1:-1;26158:4:69;26149:14;;26016:153::o;26267:506::-;26320:3;26352:37;26383:5;19301:12;;19221:94;26352:37;19425:19;;;19477:4;19468:14;;;;19569;;26544:1;26554:194;26568:6;26565:1;26562:13;26554:194;;;26624:48;26668:3;26659:6;26653:13;26624:48;:::i;:::-;26617:55;-1:-1:-1;19578:4:69;19569:14;;26685:53;-1:-1:-1;26590:1:69;26583:9;26554:194;;;-1:-1:-1;26764:3:69;;26267:506;-1:-1:-1;;;;26267:506:69:o;26778:1142::-;26836:3;26880:5;26874:12;26907:6;26902:3;26895:19;26935:59;26986:6;26981:3;26977:16;26963:12;26935:59;:::i;:::-;26923:71;;27042:4;27035:5;27031:16;27025:23;27057:62;27113:4;27108:3;27104:14;27088;27057:62;:::i;:::-;;27167:4;27160:5;27156:16;27150:23;27182:49;27225:4;27220:3;27216:14;27200;27182:49;:::i;:::-;;27279:4;27272:5;27268:16;27262:23;27294:49;27337:4;27332:3;27328:14;27312;27294:49;:::i;:::-;;27391:4;27384:5;27380:16;27374:23;27406:50;27450:4;27445:3;27441:14;27425;27406:50;:::i;:::-;;27504:4;27497:5;27493:16;27487:23;27519:50;27563:4;27558:3;27554:14;27538;27519:50;:::i;:::-;;27617:4;27610:5;27606:16;27600:23;27665:3;27659:4;27655:14;27648:4;27643:3;27639:14;27632:38;27693:50;27738:4;27722:14;27693:50;:::i;:::-;27679:64;;;27791:4;27784:5;27780:16;27774:23;27841:3;27833:6;27829:16;27822:4;27817:3;27813:14;27806:40;27862:52;27907:6;27891:14;27862:52;:::i;:::-;27855:59;26778:1142;-1:-1:-1;;;;;26778:1142:69:o;27925:284::-;28122:2;28111:9;28104:21;28085:4;28142:61;28199:2;28188:9;28184:18;28176:6;28142:61;:::i;28214:189::-;28348:2;28333:18;;28360:37;28337:9;28379:6;28360:37;:::i;28408:104::-;28451:7;28484:22;28500:5;28484:22;:::i;28517:138::-;28600:30;28624:5;28600:30;:::i;28660:188::-;28747:20;;;28801:41;28747:20;28801:41;:::i;28853:480::-;28946:6;28954;28962;29015:2;29003:9;28994:7;28990:23;28986:32;28983:147;;;29041:79;295:2416:58;;;29041:79:69;29149:46;29187:7;29176:9;29149:46;:::i;:::-;29139:56;;29214:47;29253:7;29248:2;29237:9;29233:18;29214:47;:::i;:::-;29204:57;;29280:47;29319:7;29314:2;29303:9;29299:18;29280:47;:::i;29446:196::-;29578:2;29563:18;;29590:46;29567:9;29618:6;29590:46;:::i;29647:540::-;29734:6;29787:2;29775:9;29766:7;29762:23;29758:32;29755:147;;;29813:79;295:2416:58;;;29813:79:69;29938:9;29925:23;29971:18;29963:6;29960:30;29957:145;;;30013:79;295:2416:58;;;30013:79:69;30121:60;30173:7;30164:6;30153:9;30149:22;30121:60;:::i;30192:397::-;30276:6;30284;30337:2;30325:9;30316:7;30312:23;30308:32;30305:147;;;30363:79;295:2416:58;;;30363:79:69;30471:46;30509:7;30498:9;30471:46;:::i;30696:188::-;30824:2;30809:18;;30836:42;30813:9;30860:6;30836:42;:::i;30889:184::-;30941:77;30938:1;30931:88;31038:4;31035:1;31028:15;31062:4;31059:1;31052:15;31078:184;31130:77;31127:1;31120:88;31227:4;31224:1;31217:15;31251:4;31248:1;31241:15;31267:318;31352:1;31348:12;;;;;;31422;;;31443:63;;31499:4;31489:8;31485:19;31475:29;;31443:63;31552:2;31544:6;31541:14;31521:18;31518:38;31515:64;;31559:18;;:::i;:::-;31515:64;;31267:318;;;:::o;32137:220::-;32286:2;32275:9;32268:21;32249:4;32306:45;32347:2;32336:9;32332:18;32324:6;32306:45;:::i;32362:200::-;32496:2;32481:18;;32508:48;32485:9;32538:6;32508:48;:::i;32708:261::-;32827:1;19425:19;;32755:3;19477:4;19468:14;;32694:6;32679:22;;32838:95;32960:2;32949:14;;32708:261;-1:-1:-1;;32708:261:69:o;32974:277::-;33176:2;33165:9;33158:21;33139:4;33196:49;33241:2;33230:9;33226:18;33196:49;:::i;33395:261::-;33514:1;19425:19;;33442:3;19477:4;19468:14;;33383:4;33368:20;;33525:95;33256:134;33661:277;33863:2;33852:9;33845:21;33826:4;33883:49;33928:2;33917:9;33913:18;33883:49;:::i;34260:382::-;34329:6;34374:10;34371:1;34367:18;34406:97;34436:66;34425:9;34237:16;;34166:89;34406:97;34237:16;;;34614:21;;34602:9;;34591:21;;;;34588:48;;;;;;-1:-1:-1;;34260:382:69:o;34704:138::-;34750:9;34787:49;34803:32;34828:5;34803:32;348:67;34812:22;408:5;348:67;34917:210;35014:106;35063:56;35085:33;35112:5;35085:33;:::i;35063:56::-;35055:6;35048:4;35042:11;35014:106;:::i;:::-;35001:120;;-1:-1:-1;;34917:210:69:o;35200:156::-;35265:85;35175:3;35311:6;35305:4;35265:85;:::i;35361:187::-;35441:3;35434:5;35431:14;35423:119;;;35495:37;35530:1;35523:5;35495:37;:::i;:::-;35468:1;35457:13;35423:119;;35553:417;35654:2;35649:3;35646:11;35643:321;;;34015:1;34008:14;;;34052:4;34039:18;;34151:2;34140:14;;34137:1;34133:22;35767:8;35763:41;35835:2;35823:10;35820:18;35817:49;;;-1:-1:-1;35856:8:69;35817:49;35879:75;34151:2;34140:14;;34137:1;34133:22;35923:8;35919:34;35906:11;35879:75;:::i;36079:208::-;36123:6;36168:111;36212:66;36204:5;36201:1;36197:13;36056:16;;35975:99;36168:111;36164:116;36158:4;36154:127;36144:137;;36079:208;;;;:::o;36292:184::-;36368:4;36401:29;36426:3;36420:4;36401:29;:::i;:::-;36465:3;36462:1;36458:11;36450:6;36447:23;36439:31;;;36292:184;;;;:::o;36481:1355::-;19301:12;;36645:18;36637:6;36634:30;36631:56;;;36667:18;;:::i;:::-;36696:96;36785:6;36745:38;36777:4;36771:11;36745:38;:::i;:::-;36739:4;36696:96;:::i;:::-;36841:4;36872:2;36861:14;;36889:1;36884:695;;;;37623:1;37640:6;37637:89;;;-1:-1:-1;37692:19:69;;;37686:26;37637:89;37752:67;37812:6;37805:5;37752:67;:::i;:::-;37746:4;37739:81;;36854:976;;36884:695;34015:1;34008:14;;;34052:4;34039:18;;36932:66;36920:79;;;37096:222;37110:7;37107:1;37104:14;37096:222;;;37192:19;;;37186:26;37171:42;;37299:4;37284:20;;;;37252:1;37240:14;;;;37126:12;37096:222;;;37100:3;37346:6;37337:7;37334:19;37331:189;;;37416:9;37411:3;37407:19;37401:26;37459:46;37501:2;37493:6;37489:15;37478:9;37459:46;:::i;:::-;37451:6;37444:62;;37331:189;-1:-1:-1;;;;37566:1:69;37550:14;;;37546:22;37533:36;;-1:-1:-1;36481:1355:69:o;37841:184::-;37893:77;37890:1;37883:88;37990:4;37987:1;37980:15;38014:4;38011:1;38004:15;38030:179;38067:3;3327:4;3316:16;;38144:4;38135:7;38132:17;38129:43;;38152:18;;:::i;:::-;38201:1;38188:15;;38030:179;-1:-1:-1;;38030:179:69:o;38214:273::-;38370:2;38355:18;;38382:46;38359:9;38410:6;38382:46;:::i;:::-;38437:44;38477:2;38466:9;38462:18;38454:6;38437:44;:::i;38631:261::-;38750:1;19425:19;;38678:3;19477:4;19468:14;;38619:4;38604:20;;38761:95;38492:134;38897:277;39099:2;39088:9;39081:21;39062:4;39119:49;39164:2;39153:9;39149:18;39119:49;:::i;39277:352::-;39465:2;39450:18;;39477:37;39454:9;39496:6;39477:37;:::i;:::-;39523:46;39565:2;39554:9;39550:18;39542:6;39523:46;:::i;:::-;39578:45;39619:2;39608:9;39604:18;39596:6;39578:45;:::i;39634:176::-;39724:13;;;39771:33;39724:13;39771:33;:::i;39815:312::-;39885:6;39938:2;39926:9;39917:7;39913:23;39909:32;39906:147;;;39964:79;295:2416:58;;;39964:79:69;40072:49;40113:7;40102:9;40072:49;:::i;40244:188::-;40340:13;;;40387:39;40340:13;40387:39;:::i;40437:120::-;25548:10;25537:22;;40511:21;25470:95;40562:174;40651:13;;;40698:32;40651:13;40698:32;:::i;40741:468::-;40803:5;40851:4;40839:9;40834:3;40830:19;40826:30;40823:145;;;40879:79;295:2416:58;;;40879:79:69;40992:21;41008:4;40992:21;:::i;:::-;41031:7;41022:16;;41063:51;41110:3;41099:9;41063:51;:::i;:::-;41054:7;41047:68;41149:53;41198:3;41193:2;41182:9;41178:18;41149:53;:::i;41214:485::-;41286:5;41334:4;41322:9;41317:3;41313:19;41309:30;41306:145;;;41362:79;295:2416:58;;;41362:79:69;41475:21;41491:4;41475:21;:::i;:::-;41514:7;41505:16;;41546:49;41591:3;41580:9;41546:49;:::i;:::-;41537:7;41530:66;41632:60;41688:3;41681:4;41670:9;41666:20;41632:60;:::i;41704:360::-;41807:6;41860:3;41848:9;41839:7;41835:23;41831:33;41828:148;;;41887:79;295:2416:58;;;41887:79:69;41995:63;42050:7;42039:9;41995:63;:::i;42069:217::-;25548:10;25537:22;;;;;;42176:27;;;;42236:21;;42233:47;;;42260:18;;:::i;42430:261::-;42549:1;19425:19;;42477:3;19477:4;19468:14;;42418:4;42403:20;;42560:95;42291:134;42696:277;42898:2;42887:9;42880:21;42861:4;42918:49;42963:2;42952:9;42948:18;42918:49;:::i;43117:256::-;43231:1;19425:19;;43159:3;19477:4;19468:14;;43105:4;43090:20;;43242:95;42978:134;43378:272;43580:2;43569:9;43562:21;43543:4;43600:44;43640:2;43629:9;43625:18;43600:44;:::i;43655:122::-;93:42;82:54;;43730:22;14:128;43782:176;43872:13;;;43919:33;43872:13;43919:33;:::i;44060:118::-;44133:20;44147:5;44040:1;44029:20;;43963:92;44183:172;44271:13;;;44318:31;44271:13;44318:31;:::i;44360:174::-;44449:13;;;44496:32;44449:13;44496:32;:::i;44539:172::-;44627:13;;;44674:31;44627:13;44674:31;:::i;44716:170::-;44803:13;;;44850:30;44803:13;44850:30;:::i;44891:860::-;45005:6;45013;45021;45029;45037;45045;45053;45106:3;45094:9;45085:7;45081:23;45077:33;45074:148;;;45133:79;295:2416:58;;;45133:79:69;45241:49;45282:7;45271:9;45241:49;:::i;:::-;45231:59;;45309:56;45357:7;45352:2;45341:9;45337:18;45309:56;:::i;:::-;45299:66;;45384:57;45433:7;45428:2;45417:9;45413:18;45384:57;:::i;:::-;45374:67;;45460:57;45509:7;45504:2;45493:9;45489:18;45460:57;:::i;:::-;45450:67;;45536:58;45586:7;45580:3;45569:9;45565:19;45536:58;:::i;:::-;45526:68;;45613:57;45662:7;45656:3;45645:9;45641:19;45613:57;:::i;:::-;45603:67;;45689:56;45737:7;45731:3;45720:9;45716:19;45689:56;:::i;:::-;45679:66;;44891:860;;;;;;;;;;:::o;45855:120::-;45929:21;45944:5;45834:2;45823:21;;45756:94;45980:174;46069:13;;;46116:32;46069:13;46116:32;:::i;46159:734::-;46231:5;46279:4;46267:9;46262:3;46258:19;46254:30;46251:145;;;46307:79;295:2416:58;;;46307:79:69;46420:21;46436:4;46420:21;:::i;:::-;46459:7;46450:16;;46491:42;46529:3;46518:9;46491:42;:::i;:::-;46482:7;46475:59;46568:51;46615:3;46610:2;46599:9;46595:18;46568:51;:::i;:::-;46563:2;46554:7;46550:16;46543:77;46654:53;46703:3;46698:2;46687:9;46683:18;46654:53;:::i;:::-;46649:2;46640:7;46636:16;46629:79;46742:54;46792:3;46787:2;46776:9;46772:18;46742:54;:::i;:::-;46737:2;46728:7;46724:16;46717:80;46832:54;46882:3;46876;46865:9;46861:19;46832:54;:::i;:::-;46826:3;46817:7;46813:17;46806:81;;46159:734;;;;:::o;46898:360::-;47001:6;47054:3;47042:9;47033:7;47029:23;47025:33;47022:148;;;47081:79;295:2416:58;;;47081:79:69;47189:63;47244:7;47233:9;47189:63;:::i;47433:262::-;47552:2;19425:19;;47480:3;19477:4;19468:14;;47398:23;47383:39;;47564:95;47263:165;47700:277;47902:2;47891:9;47884:21;47865:4;47922:49;47967:2;47956:9;47952:18;47922:49;:::i;47982:218::-;48093:28;;;48068:1;48093:28;48156:15;;;48153:41;;;48174:18;;:::i;:::-;48153:41;;47982:218;;;;:::o;48276:433::-;48443:13;;;48363:1;48400;48443:13;48315:7;48502:11;;48523:66;48515:75;;48498:93;48495:119;;;48594:18;;:::i;:::-;48673:3;48662:9;48657:20;48652:3;48649:29;48643:3;48636:11;48633:46;48623:80;;48683:18;;:::i;:::-;48623:80;;;48276:433;;;;:::o;48714:184::-;48766:77;48763:1;48756:88;48863:4;48860:1;48853:15;48887:4;48884:1;48877:15;48903:392;48942:1;48984;49021;49042:3;49032:37;;49049:18;;:::i;:::-;49170:66;49165:3;49162:75;49093:66;49088:3;49085:75;49081:157;49078:183;;;49241:18;;:::i;:::-;49275:14;;;48903:392;-1:-1:-1;;;48903:392:69:o;49300:327::-;49444:13;;;49339:3;49531:11;;49497:15;;;49586:10;;49578:19;;49561:10;;49557:19;;49554:44;49551:70;;;49601:18;;:::i;49770:261::-;49889:1;19425:19;;49817:3;19477:4;19468:14;;49759:3;49744:19;;49900:95;49632:133;50036:277;50238:2;50227:9;50220:21;50201:4;50258:49;50303:2;50292:9;50288:18;50258:49;:::i;50457:261::-;50576:1;19425:19;;50504:3;19477:4;19468:14;;50445:4;50430:20;;50587:95;50318:134;50723:277;50925:2;50914:9;50907:21;50888:4;50945:49;50990:2;50979:9;50975:18;50945:49;:::i;51144:261::-;51263:1;19425:19;;51191:3;19477:4;19468:14;;51132:4;51117:20;;51274:95;51005:134;51410:277;51612:2;51601:9;51594:21;51575:4;51632:49;51677:2;51666:9;51662:18;51632:49;:::i;51692:308::-;51863:13;;;51781:1;51819;51863:13;51928:11;;51949:19;;;51941:28;;51925:45;51915:79;;51974:18;;:::i;52005:202::-;52045:1;52088;52126;52147:3;52137:37;;52154:18;;:::i;:::-;52188:13;;;52005:202;-1:-1:-1;;;52005:202:69:o;52357:261::-;52476:1;19425:19;;52404:3;19477:4;19468:14;;52339:10;52324:26;;52487:95;52212:140;52623:277;52825:2;52814:9;52807:21;52788:4;52845:49;52890:2;52879:9;52875:18;52845:49;:::i;53044:261::-;53163:1;19425:19;;53091:3;19477:4;19468:14;;53032:4;53017:20;;53174:95;52905:134;53310:277;53512:2;53501:9;53494:21;53475:4;53532:49;53577:2;53566:9;53562:18;53532:49;:::i;53592:213::-;53701:28;;;53677:1;53701:28;53762:14;;;53759:40;;;53779:18;;:::i;53810:462::-;54022:3;54007:19;;54035:46;54011:9;54063:6;54035:46;:::i;:::-;54090:44;54130:2;54119:9;54115:18;54107:6;54090:44;:::i;:::-;54143:57;54196:2;54185:9;54181:18;54173:6;54143:57;:::i;:::-;54209;54262:2;54251:9;54247:18;54239:6;54209:57;:::i;54277:306::-;54344:6;54397:2;54385:9;54376:7;54372:23;54368:32;54365:147;;;54423:79;295:2416:58;;;54423:79:69;54531:46;54569:7;54558:9;54531:46;:::i;54877:176::-;54967:13;;;55014:33;54967:13;55014:33;:::i;55058:312::-;55128:6;55181:2;55169:9;55160:7;55156:23;55152:32;55149:147;;;55207:79;295:2416:58;;;55207:79:69;55315:49;55356:7;55345:9;55315:49;:::i;55515:261::-;55634:1;19425:19;;55562:3;19477:4;19468:14;;55502:5;55487:21;;55645:95;55375:135;55781:277;55983:2;55972:9;55965:21;55946:4;56003:49;56048:2;56037:9;56033:18;56003:49;:::i;56063:95::-;93:42;82:54;;56129:22;14:128;56163:948;56239:48;56283:3;56275:5;56269:12;56239:48;:::i;:::-;56333:4;56326:5;56322:16;56316:23;56348:59;56401:4;56396:3;56392:14;56378:12;56348:59;:::i;:::-;;56455:4;56448:5;56444:16;56438:23;56470:59;56523:4;56518:3;56514:14;56498;56470:59;:::i;:::-;;56577:4;56570:5;56566:16;56560:23;56592:61;56647:4;56642:3;56638:14;56622;56592:61;:::i;:::-;;56701:4;56694:5;56690:16;56684:23;56716:50;56760:4;56755:3;56751:14;56735;56716:50;:::i;:::-;;56814:4;56807:5;56803:16;56797:23;56829:50;56873:4;56868:3;56864:14;56848;56829:50;:::i;:::-;;56927:4;56920:5;56916:16;56910:23;56942:50;56986:4;56981:3;56977:14;56961;56942:50;:::i;:::-;;57040:4;57033:5;57029:16;57023:23;57055:50;57099:4;57094:3;57090:14;57074;57055:50;:::i;57116:294::-;57332:3;57317:19;;57345:59;57321:9;57386:6;57345:59;:::i;58760:191::-;58795:3;58837:1;58819:16;58816:23;58813:132;;;58883:1;58880;58877;58862:23;-1:-1:-1;58932:1:69;58926:8;58742:3;58738:15;;58760:191::o;58956:759::-;58995:3;59037:4;59019:16;59016:26;59013:39;;;58956:759;:::o;59013:39::-;881:2;875:9;59148:66;59130:16;59126:89;59123:1;59117:4;59102:114;59245:4;59239:11;59319:16;59312:4;59304:6;59300:17;59297:39;59276:18;59268:6;59265:30;59262:75;59259:88;;;59340:5;;58956:759;:::o;59259:88::-;59377:6;59371:4;59367:17;59413:3;59407:10;59440:18;59432:6;59429:30;59426:43;;;59462:5;;;;58956:759;:::o;59426:43::-;59546:66;59527:16;59521:4;59517:27;59513:100;59506:4;59497:6;59492:3;59488:16;59484:27;59481:133;59478:146;;;59617:5;;;;58956:759;:::o;59478:146::-;59633:57;59684:4;59675:6;59667;59663:19;59659:30;59653:4;59633:57;:::i;59720:225::-;2635:18;2624:30;;;;;;59827:27;;;;59887:29;;59884:55;;;59919:18;;:::i;60071:301::-;60112:3;60144:25;60163:5;19301:12;;19221:94;60144:25;60244:3;60265:67;60325:6;60318:5;60311:4;60304:5;60300:16;60265:67;:::i;:::-;60348:18;;60071:301;-1:-1:-1;;;60071:301:69:o;60377:189::-;60506:3;60531:29;60556:3;60548:6;60531:29;:::i;60710:261::-;60829:1;19425:19;;60757:3;19477:4;19468:14;;60698:4;60683:20;;60840:95;60571:134;60976:277;61178:2;61167:9;61160:21;61141:4;61198:49;61243:2;61232:9;61228:18;61198:49;:::i", "linkReferences": {}, "immutableReferences": { - "48918": [ + "48915": [ { "start": 399, "length": 32 } ], - "48920": [ + "48917": [ { "start": 582, "length": 32 @@ -648,7 +648,7 @@ "withdrawTo(address,address,uint256)": "c3b35a7e", "withdrawTo(address,uint256)": "205c2878" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"DexorderReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"DexorderSwapCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"DexorderSwapFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startOrderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"numOrders\",\"type\":\"uint8\"}],\"name\":\"DexorderSwapPlaced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"cancelOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"tranche_index\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proof\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderLib.PriceProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numSwapOrders\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"num\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ordersInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"_ignored\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"placeOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderLib.OcoMode\",\"name\":\"ocoMode\",\"type\":\"uint8\"}],\"name\":\"placeOrders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"swapOrderStatus\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"enum OrderLib.SwapOrderState\",\"name\":\"state\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"start\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"ocoGroup\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"filledIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filledOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"trancheFilledIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"trancheFilledOut\",\"type\":\"uint256[]\"}],\"internalType\":\"struct OrderLib.SwapOrderStatus\",\"name\":\"status\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Vault.sol\":\"Vault\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"DexorderReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"DexorderSwapCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"DexorderSwapFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startOrderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"numOrders\",\"type\":\"uint8\"}],\"name\":\"DexorderSwapPlaced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"cancelOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"tranche_index\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proof\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderLib.PriceProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numSwapOrders\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"num\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ordersInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"_ignored\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"placeOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderLib.OcoMode\",\"name\":\"ocoMode\",\"type\":\"uint8\"}],\"name\":\"placeOrders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"swapOrderStatus\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"enum OrderLib.SwapOrderState\",\"name\":\"state\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"start\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"ocoGroup\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"filledIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filledOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"trancheFilledIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"trancheFilledOut\",\"type\":\"uint256[]\"}],\"internalType\":\"struct OrderLib.SwapOrderStatus\",\"name\":\"status\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Vault.sol\":\"Vault\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -1467,10 +1467,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -1511,10 +1511,10 @@ }, "ast": { "absolutePath": "src/Vault.sol", - "id": 49182, + "id": 49179, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "IERC165": [ 43789 @@ -1577,10 +1577,10 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 @@ -1589,10 +1589,10 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Vault": [ - 49181 + 49178 ], "console2": [ 29653 @@ -1602,7 +1602,7 @@ "src": "65:2647:58", "nodes": [ { - "id": 48906, + "id": 48903, "nodeType": "PragmaDirective", "src": "65:24:58", "nodes": [], @@ -1614,7 +1614,7 @@ ] }, { - "id": 48907, + "id": 48904, "nodeType": "PragmaDirective", "src": "90:19:58", "nodes": [], @@ -1624,115 +1624,115 @@ ] }, { - "id": 48908, + "id": 48905, "nodeType": "ImportDirective", "src": "111:25:58", "nodes": [], "absolutePath": "src/Constants.sol", "file": "./Constants.sol", "nameLocation": "-1:-1:-1", - "scope": 49182, - "sourceUnit": 46265, + "scope": 49179, + "sourceUnit": 46262, "symbolAliases": [], "unitAlias": "" }, { - "id": 48909, + "id": 48906, "nodeType": "ImportDirective", "src": "137:40:58", "nodes": [], "absolutePath": "src/interface/IVaultDeployer.sol", "file": "./interface/IVaultDeployer.sol", "nameLocation": "-1:-1:-1", - "scope": 49182, - "sourceUnit": 49446, + "scope": 49179, + "sourceUnit": 49443, "symbolAliases": [], "unitAlias": "" }, { - "id": 48910, + "id": 48907, "nodeType": "ImportDirective", "src": "178:56:58", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 49182, + "scope": 49179, "sourceUnit": 43557, "symbolAliases": [], "unitAlias": "" }, { - "id": 48911, + "id": 48908, "nodeType": "ImportDirective", "src": "235:24:58", "nodes": [], "absolutePath": "src/OrderLib.sol", "file": "./OrderLib.sol", "nameLocation": "-1:-1:-1", - "scope": 49182, - "sourceUnit": 47923, + "scope": 49179, + "sourceUnit": 47920, "symbolAliases": [], "unitAlias": "" }, { - "id": 48912, + "id": 48909, "nodeType": "ImportDirective", "src": "260:32:58", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 49182, + "scope": 49179, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 49181, + "id": 49178, "nodeType": "ContractDefinition", "src": "295:2416:58", "nodes": [ { - "id": 48916, + "id": 48913, "nodeType": "UsingForDirective", "src": "369:39:58", "nodes": [], "global": false, "libraryName": { - "id": 48913, + "id": 48910, "name": "OrderLib", "nameLocations": [ "375:8:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 47922, + "referencedDeclaration": 47919, "src": "375:8:58" }, "typeName": { - "id": 48915, + "id": 48912, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48914, + "id": 48911, "name": "OrderLib.OrdersInfo", "nameLocations": [ "388:8:58", "397:10:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "388:19:58" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "388:19:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } } }, { - "id": 48918, + "id": 48915, "nodeType": "VariableDeclaration", "src": "414:30:58", "nodes": [], @@ -1741,7 +1741,7 @@ "mutability": "immutable", "name": "version", "nameLocation": "437:7:58", - "scope": 49181, + "scope": 49178, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1749,7 +1749,7 @@ "typeString": "uint8" }, "typeName": { - "id": 48917, + "id": 48914, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "414:5:58", @@ -1761,7 +1761,7 @@ "visibility": "public" }, { - "id": 48920, + "id": 48917, "nodeType": "VariableDeclaration", "src": "450:30:58", "nodes": [], @@ -1770,7 +1770,7 @@ "mutability": "immutable", "name": "owner", "nameLocation": "475:5:58", - "scope": 49181, + "scope": 49178, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1778,7 +1778,7 @@ "typeString": "address" }, "typeName": { - "id": 48919, + "id": 48916, "name": "address", "nodeType": "ElementaryTypeName", "src": "450:7:58", @@ -1791,7 +1791,7 @@ "visibility": "public" }, { - "id": 48923, + "id": 48920, "nodeType": "VariableDeclaration", "src": "486:37:58", "nodes": [], @@ -1800,60 +1800,60 @@ "mutability": "mutable", "name": "ordersInfo", "nameLocation": "513:10:58", - "scope": 49181, + "scope": 49178, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage", "typeString": "struct OrderLib.OrdersInfo" }, "typeName": { - "id": 48922, + "id": 48919, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 48921, + "id": 48918, "name": "OrderLib.OrdersInfo", "nameLocations": [ "486:8:58", "495:10:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "486:19:58" }, - "referencedDeclaration": 46509, + "referencedDeclaration": 46506, "src": "486:19:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } }, "visibility": "public" }, { - "id": 48941, + "id": 48938, "nodeType": "FunctionDefinition", "src": "530:119:58", "nodes": [], "body": { - "id": 48940, + "id": 48937, "nodeType": "Block", "src": "548:101:58", "nodes": [], "statements": [ { "expression": { - "id": 48933, + "id": 48930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48926, + "id": 48923, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48920, + "referencedDeclaration": 48917, "src": "558:5:58", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1870,7 +1870,7 @@ "arguments": [ { "expression": { - "id": 48928, + "id": 48925, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1881,7 +1881,7 @@ "typeString": "msg" } }, - "id": 48929, + "id": 48926, "isConstant": false, "isLValue": false, "isPure": false, @@ -1903,18 +1903,18 @@ "typeString": "address" } ], - "id": 48927, + "id": 48924, "name": "IVaultDeployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49445, + "referencedDeclaration": 49442, "src": "566:14:58", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IVaultDeployer_$49445_$", + "typeIdentifier": "t_type$_t_contract$_IVaultDeployer_$49442_$", "typeString": "type(contract IVaultDeployer)" } }, - "id": 48930, + "id": 48927, "isConstant": false, "isLValue": false, "isPure": false, @@ -1926,11 +1926,11 @@ "src": "566:26:58", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IVaultDeployer_$49445", + "typeIdentifier": "t_contract$_IVaultDeployer_$49442", "typeString": "contract IVaultDeployer" } }, - "id": 48931, + "id": 48928, "isConstant": false, "isLValue": false, "isPure": false, @@ -1938,14 +1938,14 @@ "memberLocation": "593:10:58", "memberName": "parameters", "nodeType": "MemberAccess", - "referencedDeclaration": 49444, + "referencedDeclaration": 49441, "src": "566:37:58", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 48932, + "id": 48929, "isConstant": false, "isLValue": false, "isPure": false, @@ -1967,23 +1967,23 @@ "typeString": "address" } }, - "id": 48934, + "id": 48931, "nodeType": "ExpressionStatement", "src": "558:47:58" }, { "expression": { - "id": 48938, + "id": 48935, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 48935, + "id": 48932, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48918, + "referencedDeclaration": 48915, "src": "615:7:58", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1994,18 +1994,18 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 48936, + "id": 48933, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46264, + "referencedDeclaration": 46261, "src": "625:9:58", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Constants_$46264_$", + "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, - "id": 48937, + "id": 48934, "isConstant": false, "isLValue": false, "isPure": true, @@ -2026,7 +2026,7 @@ "typeString": "uint8" } }, - "id": 48939, + "id": 48936, "nodeType": "ExpressionStatement", "src": "615:27:58" } @@ -2038,24 +2038,24 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 48924, + "id": 48921, "nodeType": "ParameterList", "parameters": [], "src": "541:2:58" }, "returnParameters": { - "id": 48925, + "id": 48922, "nodeType": "ParameterList", "parameters": [], "src": "548:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 48947, + "id": 48944, "nodeType": "EventDefinition", "src": "655:41:58", "nodes": [], @@ -2064,18 +2064,18 @@ "name": "DexorderReceived", "nameLocation": "661:16:58", "parameters": { - "id": 48946, + "id": 48943, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48943, + "id": 48940, "indexed": false, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 48947, + "scope": 48944, "src": "678:7:58", "stateVariable": false, "storageLocation": "default", @@ -2084,7 +2084,7 @@ "typeString": "address" }, "typeName": { - "id": 48942, + "id": 48939, "name": "address", "nodeType": "ElementaryTypeName", "src": "678:7:58", @@ -2098,13 +2098,13 @@ }, { "constant": false, - "id": 48945, + "id": 48942, "indexed": false, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 48947, + "scope": 48944, "src": "687:7:58", "stateVariable": false, "storageLocation": "default", @@ -2113,7 +2113,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48944, + "id": 48941, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "687:7:58", @@ -2129,12 +2129,12 @@ } }, { - "id": 48958, + "id": 48955, "nodeType": "FunctionDefinition", "src": "702:88:58", "nodes": [], "body": { - "id": 48957, + "id": 48954, "nodeType": "Block", "src": "729:61:58", "nodes": [], @@ -2144,7 +2144,7 @@ "arguments": [ { "expression": { - "id": 48951, + "id": 48948, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2155,7 +2155,7 @@ "typeString": "msg" } }, - "id": 48952, + "id": 48949, "isConstant": false, "isLValue": false, "isPure": false, @@ -2171,7 +2171,7 @@ }, { "expression": { - "id": 48953, + "id": 48950, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2182,7 +2182,7 @@ "typeString": "msg" } }, - "id": 48954, + "id": 48951, "isConstant": false, "isLValue": false, "isPure": false, @@ -2208,18 +2208,18 @@ "typeString": "uint256" } ], - "id": 48950, + "id": 48947, "name": "DexorderReceived", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48947, + "referencedDeclaration": 48944, "src": "744:16:58", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 48955, + "id": 48952, "isConstant": false, "isLValue": false, "isPure": false, @@ -2235,7 +2235,7 @@ "typeString": "tuple()" } }, - "id": 48956, + "id": 48953, "nodeType": "EmitStatement", "src": "739:44:58" } @@ -2247,29 +2247,29 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 48948, + "id": 48945, "nodeType": "ParameterList", "parameters": [], "src": "709:2:58" }, "returnParameters": { - "id": 48949, + "id": 48946, "nodeType": "ParameterList", "parameters": [], "src": "729:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "payable", "virtual": false, "visibility": "external" }, { - "id": 48973, + "id": 48970, "nodeType": "FunctionDefinition", "src": "796:104:58", "nodes": [], "body": { - "id": 48972, + "id": 48969, "nodeType": "Block", "src": "839:61:58", "nodes": [], @@ -2281,7 +2281,7 @@ "arguments": [ { "expression": { - "id": 48966, + "id": 48963, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2292,7 +2292,7 @@ "typeString": "msg" } }, - "id": 48967, + "id": 48964, "isConstant": false, "isLValue": false, "isPure": false, @@ -2314,7 +2314,7 @@ "typeString": "address" } ], - "id": 48965, + "id": 48962, "isConstant": false, "isLValue": false, "isPure": true, @@ -2326,7 +2326,7 @@ "typeString": "type(address payable)" }, "typeName": { - "id": 48964, + "id": 48961, "name": "address", "nodeType": "ElementaryTypeName", "src": "865:8:58", @@ -2334,7 +2334,7 @@ "typeDescriptions": {} } }, - "id": 48968, + "id": 48965, "isConstant": false, "isLValue": false, "isPure": false, @@ -2351,11 +2351,11 @@ } }, { - "id": 48969, + "id": 48966, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48960, + "referencedDeclaration": 48957, "src": "886:6:58", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2374,18 +2374,18 @@ "typeString": "uint256" } ], - "id": 48963, + "id": 48960, "name": "_withdrawNative", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49002, + "referencedDeclaration": 48999, "src": "849:15:58", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$", "typeString": "function (address payable,uint256)" } }, - "id": 48970, + "id": 48967, "isConstant": false, "isLValue": false, "isPure": false, @@ -2401,7 +2401,7 @@ "typeString": "tuple()" } }, - "id": 48971, + "id": 48968, "nodeType": "ExpressionStatement", "src": "849:44:58" } @@ -2414,17 +2414,17 @@ "name": "withdraw", "nameLocation": "805:8:58", "parameters": { - "id": 48961, + "id": 48958, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48960, + "id": 48957, "mutability": "mutable", "name": "amount", "nameLocation": "822:6:58", "nodeType": "VariableDeclaration", - "scope": 48973, + "scope": 48970, "src": "814:14:58", "stateVariable": false, "storageLocation": "default", @@ -2433,7 +2433,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48959, + "id": 48956, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "814:7:58", @@ -2448,23 +2448,23 @@ "src": "813:16:58" }, "returnParameters": { - "id": 48962, + "id": 48959, "nodeType": "ParameterList", "parameters": [], "src": "839:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 48986, + "id": 48983, "nodeType": "FunctionDefinition", "src": "906:123:58", "nodes": [], "body": { - "id": 48985, + "id": 48982, "nodeType": "Block", "src": "978:51:58", "nodes": [], @@ -2473,11 +2473,11 @@ "expression": { "arguments": [ { - "id": 48981, + "id": 48978, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48975, + "referencedDeclaration": 48972, "src": "1004:9:58", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2485,11 +2485,11 @@ } }, { - "id": 48982, + "id": 48979, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48977, + "referencedDeclaration": 48974, "src": "1015:6:58", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2508,18 +2508,18 @@ "typeString": "uint256" } ], - "id": 48980, + "id": 48977, "name": "_withdrawNative", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49002, + "referencedDeclaration": 48999, "src": "988:15:58", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$", "typeString": "function (address payable,uint256)" } }, - "id": 48983, + "id": 48980, "isConstant": false, "isLValue": false, "isPure": false, @@ -2535,7 +2535,7 @@ "typeString": "tuple()" } }, - "id": 48984, + "id": 48981, "nodeType": "ExpressionStatement", "src": "988:34:58" } @@ -2548,17 +2548,17 @@ "name": "withdrawTo", "nameLocation": "915:10:58", "parameters": { - "id": 48978, + "id": 48975, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48975, + "id": 48972, "mutability": "mutable", "name": "recipient", "nameLocation": "942:9:58", "nodeType": "VariableDeclaration", - "scope": 48986, + "scope": 48983, "src": "926:25:58", "stateVariable": false, "storageLocation": "default", @@ -2567,7 +2567,7 @@ "typeString": "address payable" }, "typeName": { - "id": 48974, + "id": 48971, "name": "address", "nodeType": "ElementaryTypeName", "src": "926:15:58", @@ -2581,12 +2581,12 @@ }, { "constant": false, - "id": 48977, + "id": 48974, "mutability": "mutable", "name": "amount", "nameLocation": "961:6:58", "nodeType": "VariableDeclaration", - "scope": 48986, + "scope": 48983, "src": "953:14:58", "stateVariable": false, "storageLocation": "default", @@ -2595,7 +2595,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48976, + "id": 48973, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "953:7:58", @@ -2610,23 +2610,23 @@ "src": "925:43:58" }, "returnParameters": { - "id": 48979, + "id": 48976, "nodeType": "ParameterList", "parameters": [], "src": "978:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49002, + "id": 48999, "nodeType": "FunctionDefinition", "src": "1035:128:58", "nodes": [], "body": { - "id": 49001, + "id": 48998, "nodeType": "Block", "src": "1121:42:58", "nodes": [], @@ -2635,11 +2635,11 @@ "expression": { "arguments": [ { - "id": 48998, + "id": 48995, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48990, + "referencedDeclaration": 48987, "src": "1149:6:58", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2655,18 +2655,18 @@ } ], "expression": { - "id": 48995, + "id": 48992, "name": "reipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48988, + "referencedDeclaration": 48985, "src": "1131:8:58", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 48997, + "id": 48994, "isConstant": false, "isLValue": false, "isPure": false, @@ -2680,7 +2680,7 @@ "typeString": "function (uint256)" } }, - "id": 48999, + "id": 48996, "isConstant": false, "isLValue": false, "isPure": false, @@ -2696,7 +2696,7 @@ "typeString": "tuple()" } }, - "id": 49000, + "id": 48997, "nodeType": "ExpressionStatement", "src": "1131:25:58" } @@ -2706,16 +2706,16 @@ "kind": "function", "modifiers": [ { - "id": 48993, + "id": 48990, "kind": "modifierInvocation", "modifierName": { - "id": 48992, + "id": 48989, "name": "onlyOwner", "nameLocations": [ "1111:9:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49180, + "referencedDeclaration": 49177, "src": "1111:9:58" }, "nodeType": "ModifierInvocation", @@ -2725,17 +2725,17 @@ "name": "_withdrawNative", "nameLocation": "1044:15:58", "parameters": { - "id": 48991, + "id": 48988, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 48988, + "id": 48985, "mutability": "mutable", "name": "reipient", "nameLocation": "1076:8:58", "nodeType": "VariableDeclaration", - "scope": 49002, + "scope": 48999, "src": "1060:24:58", "stateVariable": false, "storageLocation": "default", @@ -2744,7 +2744,7 @@ "typeString": "address payable" }, "typeName": { - "id": 48987, + "id": 48984, "name": "address", "nodeType": "ElementaryTypeName", "src": "1060:15:58", @@ -2758,12 +2758,12 @@ }, { "constant": false, - "id": 48990, + "id": 48987, "mutability": "mutable", "name": "amount", "nameLocation": "1094:6:58", "nodeType": "VariableDeclaration", - "scope": 49002, + "scope": 48999, "src": "1086:14:58", "stateVariable": false, "storageLocation": "default", @@ -2772,7 +2772,7 @@ "typeString": "uint256" }, "typeName": { - "id": 48989, + "id": 48986, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1086:7:58", @@ -2787,23 +2787,23 @@ "src": "1059:42:58" }, "returnParameters": { - "id": 48994, + "id": 48991, "nodeType": "ParameterList", "parameters": [], "src": "1121:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 49018, + "id": 49015, "nodeType": "FunctionDefinition", "src": "1169:110:58", "nodes": [], "body": { - "id": 49017, + "id": 49014, "nodeType": "Block", "src": "1226:53:58", "nodes": [], @@ -2812,11 +2812,11 @@ "expression": { "arguments": [ { - "id": 49011, + "id": 49008, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49005, + "referencedDeclaration": 49002, "src": "1246:5:58", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$43556", @@ -2825,7 +2825,7 @@ }, { "expression": { - "id": 49012, + "id": 49009, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2836,7 +2836,7 @@ "typeString": "msg" } }, - "id": 49013, + "id": 49010, "isConstant": false, "isLValue": false, "isPure": false, @@ -2851,11 +2851,11 @@ } }, { - "id": 49014, + "id": 49011, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49007, + "referencedDeclaration": 49004, "src": "1265:6:58", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2878,18 +2878,18 @@ "typeString": "uint256" } ], - "id": 49010, + "id": 49007, "name": "_withdraw", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49055, + "referencedDeclaration": 49052, "src": "1236:9:58", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$43556_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 49015, + "id": 49012, "isConstant": false, "isLValue": false, "isPure": false, @@ -2905,7 +2905,7 @@ "typeString": "tuple()" } }, - "id": 49016, + "id": 49013, "nodeType": "ExpressionStatement", "src": "1236:36:58" } @@ -2918,17 +2918,17 @@ "name": "withdraw", "nameLocation": "1178:8:58", "parameters": { - "id": 49008, + "id": 49005, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49005, + "id": 49002, "mutability": "mutable", "name": "token", "nameLocation": "1194:5:58", "nodeType": "VariableDeclaration", - "scope": 49018, + "scope": 49015, "src": "1187:12:58", "stateVariable": false, "storageLocation": "default", @@ -2937,10 +2937,10 @@ "typeString": "contract IERC20" }, "typeName": { - "id": 49004, + "id": 49001, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49003, + "id": 49000, "name": "IERC20", "nameLocations": [ "1187:6:58" @@ -2960,12 +2960,12 @@ }, { "constant": false, - "id": 49007, + "id": 49004, "mutability": "mutable", "name": "amount", "nameLocation": "1209:6:58", "nodeType": "VariableDeclaration", - "scope": 49018, + "scope": 49015, "src": "1201:14:58", "stateVariable": false, "storageLocation": "default", @@ -2974,7 +2974,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49006, + "id": 49003, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1201:7:58", @@ -2989,23 +2989,23 @@ "src": "1186:30:58" }, "returnParameters": { - "id": 49009, + "id": 49006, "nodeType": "ParameterList", "parameters": [], "src": "1226:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49035, + "id": 49032, "nodeType": "FunctionDefinition", "src": "1285:130:58", "nodes": [], "body": { - "id": 49034, + "id": 49031, "nodeType": "Block", "src": "1363:52:58", "nodes": [], @@ -3014,11 +3014,11 @@ "expression": { "arguments": [ { - "id": 49029, + "id": 49026, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49021, + "referencedDeclaration": 49018, "src": "1383:5:58", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$43556", @@ -3026,11 +3026,11 @@ } }, { - "id": 49030, + "id": 49027, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49023, + "referencedDeclaration": 49020, "src": "1390:9:58", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3038,11 +3038,11 @@ } }, { - "id": 49031, + "id": 49028, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49025, + "referencedDeclaration": 49022, "src": "1401:6:58", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3065,18 +3065,18 @@ "typeString": "uint256" } ], - "id": 49028, + "id": 49025, "name": "_withdraw", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49055, + "referencedDeclaration": 49052, "src": "1373:9:58", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$43556_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 49032, + "id": 49029, "isConstant": false, "isLValue": false, "isPure": false, @@ -3092,7 +3092,7 @@ "typeString": "tuple()" } }, - "id": 49033, + "id": 49030, "nodeType": "ExpressionStatement", "src": "1373:35:58" } @@ -3105,17 +3105,17 @@ "name": "withdrawTo", "nameLocation": "1294:10:58", "parameters": { - "id": 49026, + "id": 49023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49021, + "id": 49018, "mutability": "mutable", "name": "token", "nameLocation": "1312:5:58", "nodeType": "VariableDeclaration", - "scope": 49035, + "scope": 49032, "src": "1305:12:58", "stateVariable": false, "storageLocation": "default", @@ -3124,10 +3124,10 @@ "typeString": "contract IERC20" }, "typeName": { - "id": 49020, + "id": 49017, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49019, + "id": 49016, "name": "IERC20", "nameLocations": [ "1305:6:58" @@ -3147,12 +3147,12 @@ }, { "constant": false, - "id": 49023, + "id": 49020, "mutability": "mutable", "name": "recipient", "nameLocation": "1327:9:58", "nodeType": "VariableDeclaration", - "scope": 49035, + "scope": 49032, "src": "1319:17:58", "stateVariable": false, "storageLocation": "default", @@ -3161,7 +3161,7 @@ "typeString": "address" }, "typeName": { - "id": 49022, + "id": 49019, "name": "address", "nodeType": "ElementaryTypeName", "src": "1319:7:58", @@ -3175,12 +3175,12 @@ }, { "constant": false, - "id": 49025, + "id": 49022, "mutability": "mutable", "name": "amount", "nameLocation": "1346:6:58", "nodeType": "VariableDeclaration", - "scope": 49035, + "scope": 49032, "src": "1338:14:58", "stateVariable": false, "storageLocation": "default", @@ -3189,7 +3189,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49024, + "id": 49021, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1338:7:58", @@ -3204,23 +3204,23 @@ "src": "1304:49:58" }, "returnParameters": { - "id": 49027, + "id": 49024, "nodeType": "ParameterList", "parameters": [], "src": "1363:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49055, + "id": 49052, "nodeType": "FunctionDefinition", "src": "1421:137:58", "nodes": [], "body": { - "id": 49054, + "id": 49051, "nodeType": "Block", "src": "1508:50:58", "nodes": [], @@ -3229,11 +3229,11 @@ "expression": { "arguments": [ { - "id": 49050, + "id": 49047, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49040, + "referencedDeclaration": 49037, "src": "1533:9:58", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3241,11 +3241,11 @@ } }, { - "id": 49051, + "id": 49048, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49042, + "referencedDeclaration": 49039, "src": "1544:6:58", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3265,18 +3265,18 @@ } ], "expression": { - "id": 49047, + "id": 49044, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49038, + "referencedDeclaration": 49035, "src": "1518:5:58", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$43556", "typeString": "contract IERC20" } }, - "id": 49049, + "id": 49046, "isConstant": false, "isLValue": false, "isPure": false, @@ -3291,7 +3291,7 @@ "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 49052, + "id": 49049, "isConstant": false, "isLValue": false, "isPure": false, @@ -3307,7 +3307,7 @@ "typeString": "bool" } }, - "id": 49053, + "id": 49050, "nodeType": "ExpressionStatement", "src": "1518:33:58" } @@ -3317,16 +3317,16 @@ "kind": "function", "modifiers": [ { - "id": 49045, + "id": 49042, "kind": "modifierInvocation", "modifierName": { - "id": 49044, + "id": 49041, "name": "onlyOwner", "nameLocations": [ "1498:9:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49180, + "referencedDeclaration": 49177, "src": "1498:9:58" }, "nodeType": "ModifierInvocation", @@ -3336,17 +3336,17 @@ "name": "_withdraw", "nameLocation": "1430:9:58", "parameters": { - "id": 49043, + "id": 49040, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49038, + "id": 49035, "mutability": "mutable", "name": "token", "nameLocation": "1447:5:58", "nodeType": "VariableDeclaration", - "scope": 49055, + "scope": 49052, "src": "1440:12:58", "stateVariable": false, "storageLocation": "default", @@ -3355,10 +3355,10 @@ "typeString": "contract IERC20" }, "typeName": { - "id": 49037, + "id": 49034, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49036, + "id": 49033, "name": "IERC20", "nameLocations": [ "1440:6:58" @@ -3378,12 +3378,12 @@ }, { "constant": false, - "id": 49040, + "id": 49037, "mutability": "mutable", "name": "recipient", "nameLocation": "1462:9:58", "nodeType": "VariableDeclaration", - "scope": 49055, + "scope": 49052, "src": "1454:17:58", "stateVariable": false, "storageLocation": "default", @@ -3392,7 +3392,7 @@ "typeString": "address" }, "typeName": { - "id": 49039, + "id": 49036, "name": "address", "nodeType": "ElementaryTypeName", "src": "1454:7:58", @@ -3406,12 +3406,12 @@ }, { "constant": false, - "id": 49042, + "id": 49039, "mutability": "mutable", "name": "amount", "nameLocation": "1481:6:58", "nodeType": "VariableDeclaration", - "scope": 49055, + "scope": 49052, "src": "1473:14:58", "stateVariable": false, "storageLocation": "default", @@ -3420,7 +3420,7 @@ "typeString": "uint256" }, "typeName": { - "id": 49041, + "id": 49038, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1473:7:58", @@ -3435,23 +3435,23 @@ "src": "1439:49:58" }, "returnParameters": { - "id": 49046, + "id": 49043, "nodeType": "ParameterList", "parameters": [], "src": "1508:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 49068, + "id": 49065, "nodeType": "FunctionDefinition", "src": "1564:116:58", "nodes": [], "body": { - "id": 49067, + "id": 49064, "nodeType": "Block", "src": "1624:56:58", "nodes": [], @@ -3462,18 +3462,18 @@ { "expression": { "expression": { - "id": 49062, + "id": 49059, "name": "ordersInfo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48923, + "referencedDeclaration": 48920, "src": "1648:10:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage", "typeString": "struct OrderLib.OrdersInfo storage ref" } }, - "id": 49063, + "id": 49060, "isConstant": false, "isLValue": true, "isPure": false, @@ -3481,14 +3481,14 @@ "memberLocation": "1659:6:58", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "1648:17:58", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 49064, + "id": 49061, "isConstant": false, "isLValue": false, "isPure": false, @@ -3510,7 +3510,7 @@ "typeString": "uint256" } ], - "id": 49061, + "id": 49058, "isConstant": false, "isLValue": false, "isPure": true, @@ -3522,14 +3522,14 @@ "typeString": "type(uint64)" }, "typeName": { - "id": 49060, + "id": 49057, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1641:6:58", "typeDescriptions": {} } }, - "id": 49065, + "id": 49062, "isConstant": false, "isLValue": false, "isPure": false, @@ -3545,8 +3545,8 @@ "typeString": "uint64" } }, - "functionReturnParameters": 49059, - "id": 49066, + "functionReturnParameters": 49056, + "id": 49063, "nodeType": "Return", "src": "1634:39:58" } @@ -3559,23 +3559,23 @@ "name": "numSwapOrders", "nameLocation": "1573:13:58", "parameters": { - "id": 49056, + "id": 49053, "nodeType": "ParameterList", "parameters": [], "src": "1586:2:58" }, "returnParameters": { - "id": 49059, + "id": 49056, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49058, + "id": 49055, "mutability": "mutable", "name": "num", "nameLocation": "1619:3:58", "nodeType": "VariableDeclaration", - "scope": 49068, + "scope": 49065, "src": "1612:10:58", "stateVariable": false, "storageLocation": "default", @@ -3584,7 +3584,7 @@ "typeString": "uint64" }, "typeName": { - "id": 49057, + "id": 49054, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1612:6:58", @@ -3598,18 +3598,18 @@ ], "src": "1611:12:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 49089, + "id": 49086, "nodeType": "FunctionDefinition", "src": "1758:162:58", "nodes": [], "body": { - "id": 49088, + "id": 49085, "nodeType": "Block", "src": "1830:90:58", "nodes": [], @@ -3619,7 +3619,7 @@ "arguments": [ { "hexValue": "5661756c742e706c6163654f726465722829", - "id": 49079, + "id": 49076, "isConstant": false, "isLValue": false, "isPure": true, @@ -3642,7 +3642,7 @@ } ], "expression": { - "id": 49076, + "id": 49073, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3653,7 +3653,7 @@ "typeString": "type(library console2)" } }, - "id": 49078, + "id": 49075, "isConstant": false, "isLValue": false, "isPure": false, @@ -3668,7 +3668,7 @@ "typeString": "function (string memory) pure" } }, - "id": 49080, + "id": 49077, "isConstant": false, "isLValue": false, "isPure": false, @@ -3684,7 +3684,7 @@ "typeString": "tuple()" } }, - "id": 49081, + "id": 49078, "nodeType": "ExpressionStatement", "src": "1840:34:58" }, @@ -3692,14 +3692,14 @@ "expression": { "arguments": [ { - "id": 49085, + "id": 49082, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49071, + "referencedDeclaration": 49068, "src": "1907:5:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } @@ -3707,23 +3707,23 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { - "id": 49082, + "id": 49079, "name": "ordersInfo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48923, + "referencedDeclaration": 48920, "src": "1884:10:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage", "typeString": "struct OrderLib.OrdersInfo storage ref" } }, - "id": 49084, + "id": 49081, "isConstant": false, "isLValue": true, "isPure": false, @@ -3731,14 +3731,14 @@ "memberLocation": "1895:11:58", "memberName": "_placeOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 46688, + "referencedDeclaration": 46685, "src": "1884:22:58", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$attached_to$_t_struct$_OrdersInfo_$46509_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_struct$_SwapOrder_$46560_memory_ptr_$returns$__$attached_to$_t_struct$_OrdersInfo_$46506_storage_ptr_$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,struct OrderLib.SwapOrder memory)" } }, - "id": 49086, + "id": 49083, "isConstant": false, "isLValue": false, "isPure": false, @@ -3754,7 +3754,7 @@ "typeString": "tuple()" } }, - "id": 49087, + "id": 49084, "nodeType": "ExpressionStatement", "src": "1884:29:58" } @@ -3765,16 +3765,16 @@ "kind": "function", "modifiers": [ { - "id": 49074, + "id": 49071, "kind": "modifierInvocation", "modifierName": { - "id": 49073, + "id": 49070, "name": "onlyOwner", "nameLocations": [ "1820:9:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49180, + "referencedDeclaration": 49177, "src": "1820:9:58" }, "nodeType": "ModifierInvocation", @@ -3784,42 +3784,42 @@ "name": "placeOrder", "nameLocation": "1767:10:58", "parameters": { - "id": 49072, + "id": 49069, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49071, + "id": 49068, "mutability": "mutable", "name": "order", "nameLocation": "1804:5:58", "nodeType": "VariableDeclaration", - "scope": 49089, + "scope": 49086, "src": "1778:31:58", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { - "id": 49070, + "id": 49067, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49069, + "id": 49066, "name": "OrderLib.SwapOrder", "nameLocations": [ "1778:8:58", "1787:9:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "1778:18:58" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "1778:18:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, @@ -3829,23 +3829,23 @@ "src": "1777:33:58" }, "returnParameters": { - "id": 49075, + "id": 49072, "nodeType": "ParameterList", "parameters": [], "src": "1830:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49109, + "id": 49106, "nodeType": "FunctionDefinition", "src": "1926:159:58", "nodes": [], "body": { - "id": 49108, + "id": 49105, "nodeType": "Block", "src": "2028:57:58", "nodes": [], @@ -3854,26 +3854,26 @@ "expression": { "arguments": [ { - "id": 49104, + "id": 49101, "name": "orders", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49093, + "referencedDeclaration": 49090, "src": "2062:6:58", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" } }, { - "id": 49105, + "id": 49102, "name": "ocoMode", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49096, + "referencedDeclaration": 49093, "src": "2070:7:58", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } } @@ -3881,27 +3881,27 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory[] memory" }, { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } ], "expression": { - "id": 49101, + "id": 49098, "name": "ordersInfo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48923, + "referencedDeclaration": 48920, "src": "2038:10:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage", "typeString": "struct OrderLib.OrdersInfo storage ref" } }, - "id": 49103, + "id": 49100, "isConstant": false, "isLValue": true, "isPure": false, @@ -3909,14 +3909,14 @@ "memberLocation": "2049:12:58", "memberName": "_placeOrders", "nodeType": "MemberAccess", - "referencedDeclaration": 47021, + "referencedDeclaration": 47018, "src": "2038:23:58", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr_$_t_enum$_OcoMode_$46645_$returns$__$attached_to$_t_struct$_OrdersInfo_$46509_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr_$_t_enum$_OcoMode_$46642_$returns$__$attached_to$_t_struct$_OrdersInfo_$46506_storage_ptr_$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,struct OrderLib.SwapOrder memory[] memory,enum OrderLib.OcoMode)" } }, - "id": 49106, + "id": 49103, "isConstant": false, "isLValue": false, "isPure": false, @@ -3932,7 +3932,7 @@ "typeString": "tuple()" } }, - "id": 49107, + "id": 49104, "nodeType": "ExpressionStatement", "src": "2038:40:58" } @@ -3943,16 +3943,16 @@ "kind": "function", "modifiers": [ { - "id": 49099, + "id": 49096, "kind": "modifierInvocation", "modifierName": { - "id": 49098, + "id": 49095, "name": "onlyOwner", "nameLocations": [ "2018:9:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49180, + "referencedDeclaration": 49177, "src": "2018:9:58" }, "nodeType": "ModifierInvocation", @@ -3962,51 +3962,51 @@ "name": "placeOrders", "nameLocation": "1935:11:58", "parameters": { - "id": 49097, + "id": 49094, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49093, + "id": 49090, "mutability": "mutable", "name": "orders", "nameLocation": "1975:6:58", "nodeType": "VariableDeclaration", - "scope": 49109, + "scope": 49106, "src": "1947:34:58", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.SwapOrder[]" }, "typeName": { "baseType": { - "id": 49091, + "id": 49088, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49090, + "id": 49087, "name": "OrderLib.SwapOrder", "nameLocations": [ "1947:8:58", "1956:9:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "1947:18:58" }, - "referencedDeclaration": 46563, + "referencedDeclaration": 46560, "src": "1947:18:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrder_$46560_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, - "id": 49092, + "id": 49089, "nodeType": "ArrayTypeName", "src": "1947:20:58", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_SwapOrder_$46560_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.SwapOrder[]" } }, @@ -4014,37 +4014,37 @@ }, { "constant": false, - "id": 49096, + "id": 49093, "mutability": "mutable", "name": "ocoMode", "nameLocation": "2000:7:58", "nodeType": "VariableDeclaration", - "scope": 49109, + "scope": 49106, "src": "1983:24:58", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" }, "typeName": { - "id": 49095, + "id": 49092, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49094, + "id": 49091, "name": "OrderLib.OcoMode", "nameLocations": [ "1983:8:58", "1992:7:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "1983:16:58" }, - "referencedDeclaration": 46645, + "referencedDeclaration": 46642, "src": "1983:16:58", "typeDescriptions": { - "typeIdentifier": "t_enum$_OcoMode_$46645", + "typeIdentifier": "t_enum$_OcoMode_$46642", "typeString": "enum OrderLib.OcoMode" } }, @@ -4054,23 +4054,23 @@ "src": "1946:62:58" }, "returnParameters": { - "id": 49100, + "id": 49097, "nodeType": "ParameterList", "parameters": [], "src": "2028:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49123, + "id": 49120, "nodeType": "FunctionDefinition", "src": "2091:160:58", "nodes": [], "body": { - "id": 49122, + "id": 49119, "nodeType": "Block", "src": "2198:53:58", "nodes": [], @@ -4079,18 +4079,18 @@ "expression": { "baseExpression": { "expression": { - "id": 49117, + "id": 49114, "name": "ordersInfo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48923, + "referencedDeclaration": 48920, "src": "2215:10:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage", "typeString": "struct OrderLib.OrdersInfo storage ref" } }, - "id": 49118, + "id": 49115, "isConstant": false, "isLValue": true, "isPure": false, @@ -4098,20 +4098,20 @@ "memberLocation": "2226:6:58", "memberName": "orders", "nodeType": "MemberAccess", - "referencedDeclaration": 46504, + "referencedDeclaration": 46501, "src": "2215:17:58", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage", + "typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46581_storage_$dyn_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref" } }, - "id": 49120, + "id": 49117, "indexExpression": { - "id": 49119, + "id": 49116, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49111, + "referencedDeclaration": 49108, "src": "2233:10:58", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4125,12 +4125,12 @@ "nodeType": "IndexAccess", "src": "2215:29:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage", "typeString": "struct OrderLib.SwapOrderStatus storage ref" } }, - "functionReturnParameters": 49116, - "id": 49121, + "functionReturnParameters": 49113, + "id": 49118, "nodeType": "Return", "src": "2208:36:58" } @@ -4143,17 +4143,17 @@ "name": "swapOrderStatus", "nameLocation": "2100:15:58", "parameters": { - "id": 49112, + "id": 49109, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49111, + "id": 49108, "mutability": "mutable", "name": "orderIndex", "nameLocation": "2123:10:58", "nodeType": "VariableDeclaration", - "scope": 49123, + "scope": 49120, "src": "2116:17:58", "stateVariable": false, "storageLocation": "default", @@ -4162,7 +4162,7 @@ "typeString": "uint64" }, "typeName": { - "id": 49110, + "id": 49107, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2116:6:58", @@ -4177,42 +4177,42 @@ "src": "2115:19:58" }, "returnParameters": { - "id": 49116, + "id": 49113, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49115, + "id": 49112, "mutability": "mutable", "name": "status", "nameLocation": "2190:6:58", "nodeType": "VariableDeclaration", - "scope": 49123, + "scope": 49120, "src": "2158:38:58", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_memory_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_memory_ptr", "typeString": "struct OrderLib.SwapOrderStatus" }, "typeName": { - "id": 49114, + "id": 49111, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49113, + "id": 49110, "name": "OrderLib.SwapOrderStatus", "nameLocations": [ "2158:8:58", "2167:15:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "2158:24:58" }, - "referencedDeclaration": 46584, + "referencedDeclaration": 46581, "src": "2158:24:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr", + "typeIdentifier": "t_struct$_SwapOrderStatus_$46581_storage_ptr", "typeString": "struct OrderLib.SwapOrderStatus" } }, @@ -4221,18 +4221,18 @@ ], "src": "2157:40:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 49143, + "id": 49140, "nodeType": "FunctionDefinition", "src": "2257:180:58", "nodes": [], "body": { - "id": 49142, + "id": 49139, "nodeType": "Block", "src": "2361:76:58", "nodes": [], @@ -4241,11 +4241,11 @@ "expression": { "arguments": [ { - "id": 49136, + "id": 49133, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48920, + "referencedDeclaration": 48917, "src": "2390:5:58", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4253,11 +4253,11 @@ } }, { - "id": 49137, + "id": 49134, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49125, + "referencedDeclaration": 49122, "src": "2397:10:58", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4265,11 +4265,11 @@ } }, { - "id": 49138, + "id": 49135, "name": "tranche_index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49127, + "referencedDeclaration": 49124, "src": "2409:13:58", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -4277,14 +4277,14 @@ } }, { - "id": 49139, + "id": 49136, "name": "proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49130, + "referencedDeclaration": 49127, "src": "2424:5:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } @@ -4304,23 +4304,23 @@ "typeString": "uint8" }, { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { - "id": 49133, + "id": 49130, "name": "ordersInfo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48923, + "referencedDeclaration": 48920, "src": "2371:10:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage", "typeString": "struct OrderLib.OrdersInfo storage ref" } }, - "id": 49135, + "id": 49132, "isConstant": false, "isLValue": true, "isPure": false, @@ -4328,14 +4328,14 @@ "memberLocation": "2382:7:58", "memberName": "execute", "nodeType": "MemberAccess", - "referencedDeclaration": 47688, + "referencedDeclaration": 47685, "src": "2371:18:58", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_address_$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$attached_to$_t_struct$_OrdersInfo_$46509_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_address_$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46638_memory_ptr_$returns$__$attached_to$_t_struct$_OrdersInfo_$46506_storage_ptr_$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,address,uint64,uint8,struct OrderLib.PriceProof memory)" } }, - "id": 49140, + "id": 49137, "isConstant": false, "isLValue": false, "isPure": false, @@ -4351,7 +4351,7 @@ "typeString": "tuple()" } }, - "id": 49141, + "id": 49138, "nodeType": "ExpressionStatement", "src": "2371:59:58" } @@ -4364,17 +4364,17 @@ "name": "execute", "nameLocation": "2266:7:58", "parameters": { - "id": 49131, + "id": 49128, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49125, + "id": 49122, "mutability": "mutable", "name": "orderIndex", "nameLocation": "2281:10:58", "nodeType": "VariableDeclaration", - "scope": 49143, + "scope": 49140, "src": "2274:17:58", "stateVariable": false, "storageLocation": "default", @@ -4383,7 +4383,7 @@ "typeString": "uint64" }, "typeName": { - "id": 49124, + "id": 49121, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2274:6:58", @@ -4396,12 +4396,12 @@ }, { "constant": false, - "id": 49127, + "id": 49124, "mutability": "mutable", "name": "tranche_index", "nameLocation": "2299:13:58", "nodeType": "VariableDeclaration", - "scope": 49143, + "scope": 49140, "src": "2293:19:58", "stateVariable": false, "storageLocation": "default", @@ -4410,7 +4410,7 @@ "typeString": "uint8" }, "typeName": { - "id": 49126, + "id": 49123, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2293:5:58", @@ -4423,37 +4423,37 @@ }, { "constant": false, - "id": 49130, + "id": 49127, "mutability": "mutable", "name": "proof", "nameLocation": "2341:5:58", "nodeType": "VariableDeclaration", - "scope": 49143, + "scope": 49140, "src": "2314:32:58", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_memory_ptr", "typeString": "struct OrderLib.PriceProof" }, "typeName": { - "id": 49129, + "id": 49126, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49128, + "id": 49125, "name": "OrderLib.PriceProof", "nameLocations": [ "2314:8:58", "2323:10:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "2314:19:58" }, - "referencedDeclaration": 46641, + "referencedDeclaration": 46638, "src": "2314:19:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_PriceProof_$46641_storage_ptr", + "typeIdentifier": "t_struct$_PriceProof_$46638_storage_ptr", "typeString": "struct OrderLib.PriceProof" } }, @@ -4463,23 +4463,23 @@ "src": "2273:74:58" }, "returnParameters": { - "id": 49132, + "id": 49129, "nodeType": "ParameterList", "parameters": [], "src": "2361:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49169, + "id": 49166, "nodeType": "FunctionDefinition", "src": "2443:182:58", "nodes": [], "body": { - "id": 49168, + "id": 49165, "nodeType": "Block", "src": "2502:123:58", "nodes": [], @@ -4489,7 +4489,7 @@ "arguments": [ { "hexValue": "63616e63656c4f72646572", - "id": 49153, + "id": 49150, "isConstant": false, "isLValue": false, "isPure": true, @@ -4512,7 +4512,7 @@ } ], "expression": { - "id": 49150, + "id": 49147, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4523,7 +4523,7 @@ "typeString": "type(library console2)" } }, - "id": 49152, + "id": 49149, "isConstant": false, "isLValue": false, "isPure": false, @@ -4538,7 +4538,7 @@ "typeString": "function (string memory) pure" } }, - "id": 49154, + "id": 49151, "isConstant": false, "isLValue": false, "isPure": false, @@ -4554,7 +4554,7 @@ "typeString": "tuple()" } }, - "id": 49155, + "id": 49152, "nodeType": "ExpressionStatement", "src": "2512:27:58" }, @@ -4562,11 +4562,11 @@ "expression": { "arguments": [ { - "id": 49159, + "id": 49156, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49145, + "referencedDeclaration": 49142, "src": "2562:10:58", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4582,7 +4582,7 @@ } ], "expression": { - "id": 49156, + "id": 49153, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4593,7 +4593,7 @@ "typeString": "type(library console2)" } }, - "id": 49158, + "id": 49155, "isConstant": false, "isLValue": false, "isPure": false, @@ -4608,7 +4608,7 @@ "typeString": "function (uint256) pure" } }, - "id": 49160, + "id": 49157, "isConstant": false, "isLValue": false, "isPure": false, @@ -4624,7 +4624,7 @@ "typeString": "tuple()" } }, - "id": 49161, + "id": 49158, "nodeType": "ExpressionStatement", "src": "2549:24:58" }, @@ -4632,11 +4632,11 @@ "expression": { "arguments": [ { - "id": 49165, + "id": 49162, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49145, + "referencedDeclaration": 49142, "src": "2607:10:58", "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -4652,18 +4652,18 @@ } ], "expression": { - "id": 49162, + "id": 49159, "name": "ordersInfo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48923, + "referencedDeclaration": 48920, "src": "2583:10:58", "typeDescriptions": { - "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage", + "typeIdentifier": "t_struct$_OrdersInfo_$46506_storage", "typeString": "struct OrderLib.OrdersInfo storage ref" } }, - "id": 49164, + "id": 49161, "isConstant": false, "isLValue": true, "isPure": false, @@ -4671,14 +4671,14 @@ "memberLocation": "2594:12:58", "memberName": "_cancelOrder", "nodeType": "MemberAccess", - "referencedDeclaration": 47921, + "referencedDeclaration": 47918, "src": "2583:23:58", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_struct$_OrdersInfo_$46509_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46506_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_struct$_OrdersInfo_$46506_storage_ptr_$", "typeString": "function (struct OrderLib.OrdersInfo storage pointer,uint64)" } }, - "id": 49166, + "id": 49163, "isConstant": false, "isLValue": false, "isPure": false, @@ -4694,7 +4694,7 @@ "typeString": "tuple()" } }, - "id": 49167, + "id": 49164, "nodeType": "ExpressionStatement", "src": "2583:35:58" } @@ -4705,16 +4705,16 @@ "kind": "function", "modifiers": [ { - "id": 49148, + "id": 49145, "kind": "modifierInvocation", "modifierName": { - "id": 49147, + "id": 49144, "name": "onlyOwner", "nameLocations": [ "2492:9:58" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49180, + "referencedDeclaration": 49177, "src": "2492:9:58" }, "nodeType": "ModifierInvocation", @@ -4724,17 +4724,17 @@ "name": "cancelOrder", "nameLocation": "2452:11:58", "parameters": { - "id": 49146, + "id": 49143, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49145, + "id": 49142, "mutability": "mutable", "name": "orderIndex", "nameLocation": "2471:10:58", "nodeType": "VariableDeclaration", - "scope": 49169, + "scope": 49166, "src": "2464:17:58", "stateVariable": false, "storageLocation": "default", @@ -4743,7 +4743,7 @@ "typeString": "uint64" }, "typeName": { - "id": 49144, + "id": 49141, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2464:6:58", @@ -4758,23 +4758,23 @@ "src": "2463:19:58" }, "returnParameters": { - "id": 49149, + "id": 49146, "nodeType": "ParameterList", "parameters": [], "src": "2502:0:58" }, - "scope": 49181, + "scope": 49178, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 49180, + "id": 49177, "nodeType": "ModifierDefinition", "src": "2631:77:58", "nodes": [], "body": { - "id": 49179, + "id": 49176, "nodeType": "Block", "src": "2652:56:58", "nodes": [], @@ -4787,14 +4787,14 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 49175, + "id": 49172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 49172, + "id": 49169, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4805,7 +4805,7 @@ "typeString": "msg" } }, - "id": 49173, + "id": 49170, "isConstant": false, "isLValue": false, "isPure": false, @@ -4822,11 +4822,11 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 49174, + "id": 49171, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48920, + "referencedDeclaration": 48917, "src": "2684:5:58", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4847,7 +4847,7 @@ "typeString": "bool" } ], - "id": 49171, + "id": 49168, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4861,7 +4861,7 @@ "typeString": "function (bool) pure" } }, - "id": 49176, + "id": 49173, "isConstant": false, "isLValue": false, "isPure": false, @@ -4877,12 +4877,12 @@ "typeString": "tuple()" } }, - "id": 49177, + "id": 49174, "nodeType": "ExpressionStatement", "src": "2662:28:58" }, { - "id": 49178, + "id": 49175, "nodeType": "PlaceholderStatement", "src": "2700:1:58" } @@ -4891,7 +4891,7 @@ "name": "onlyOwner", "nameLocation": "2640:9:58", "parameters": { - "id": 49170, + "id": 49167, "nodeType": "ParameterList", "parameters": [], "src": "2649:2:58" @@ -4910,17 +4910,17 @@ "21582": 1 }, "linearizedBaseContracts": [ - 49181 + 49178 ], "name": "Vault", "nameLocation": "304:5:58", - "scope": 49182, + "scope": 49179, "usedErrors": [], "usedEvents": [ - 46515, - 46525, - 46529, - 48947 + 46512, + 46522, + 46526, + 48944 ] } ], diff --git a/deployment/alpha/out/VaultAddress-default.sol/VaultAddress.json b/deployment/alpha/out/VaultAddress-default.sol/VaultAddress.json index 2f4d5df..b372f40 100644 --- a/deployment/alpha/out/VaultAddress-default.sol/VaultAddress.json +++ b/deployment/alpha/out/VaultAddress-default.sol/VaultAddress.json @@ -15,19 +15,19 @@ } ], "bytecode": { - "object": "0x60a6610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806335855a6e146038575b600080fd5b605e7f2d636e2b474d9ffd48b3a184f529f2216824023721f63454590c8cb5d4412e9381565b60405190815260200160405180910390f3fea26469706673582212201564cc2bb26aa62a0c23f5dcc2368bf703cd64ea6815ed41128dbc80fbe6372364736f6c63430008160033", + "object": "0x60a6610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806335855a6e146038575b600080fd5b605e7f2d636e2b474d9ffd48b3a184f529f2216824023721f63454590c8cb5d4412e9381565b60405190815260200160405180910390f3fea2646970667358221220c7128307cb64f6e70850068d18f591d361d4b2eea62b1dfaed175abbb466005064736f6c63430008160033", "sourceMap": "172:1337:59:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;172:1337:59;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806335855a6e146038575b600080fd5b605e7f2d636e2b474d9ffd48b3a184f529f2216824023721f63454590c8cb5d4412e9381565b60405190815260200160405180910390f3fea26469706673582212201564cc2bb26aa62a0c23f5dcc2368bf703cd64ea6815ed41128dbc80fbe6372364736f6c63430008160033", + "object": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806335855a6e146038575b600080fd5b605e7f2d636e2b474d9ffd48b3a184f529f2216824023721f63454590c8cb5d4412e9381565b60405190815260200160405180910390f3fea2646970667358221220c7128307cb64f6e70850068d18f591d361d4b2eea62b1dfaed175abbb466005064736f6c63430008160033", "sourceMap": "172:1337:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;390:113;;437:66;390:113;;;;;140:35:69;;;328:2;313:18;390:113:59;;;;;;", "linkReferences": {} }, "methodIdentifiers": { "VAULT_INIT_CODE_HASH()": "35855a6e" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"VAULT_INIT_CODE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/VaultAddress-default.sol\":\"VaultAddress\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/VaultAddress-default.sol\":{\"keccak256\":\"0x822c245bd730f9fd8ae178b30a417a90d8c2d53ac57c564d6b89f184c938b1ee\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f80ce30a67db35ddaca7b45f3b3507b3fd7379b0941da2fb864c9e34d50b6016\",\"dweb:/ipfs/QmYtEWceia2PZEZmYy8NRrwRYm2W4yCKohY6t7mBsMRYgE\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"VAULT_INIT_CODE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/VaultAddress-default.sol\":\"VaultAddress\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/VaultAddress-default.sol\":{\"keccak256\":\"0x822c245bd730f9fd8ae178b30a417a90d8c2d53ac57c564d6b89f184c938b1ee\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f80ce30a67db35ddaca7b45f3b3507b3fd7379b0941da2fb864c9e34d50b6016\",\"dweb:/ipfs/QmYtEWceia2PZEZmYy8NRrwRYm2W4yCKohY6t7mBsMRYgE\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -210,10 +210,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -230,10 +230,10 @@ }, "ast": { "absolutePath": "src/VaultAddress-default.sol", - "id": 49250, + "id": 49247, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "IERC165": [ 43789 @@ -275,7 +275,7 @@ 45892 ], "VaultAddress": [ - 49249 + 49246 ], "console2": [ 29653 @@ -285,7 +285,7 @@ "src": "65:1445:59", "nodes": [ { - "id": 49183, + "id": 49180, "nodeType": "PragmaDirective", "src": "65:24:59", "nodes": [], @@ -297,7 +297,7 @@ ] }, { - "id": 49184, + "id": 49181, "nodeType": "PragmaDirective", "src": "90:19:59", "nodes": [], @@ -307,38 +307,38 @@ ] }, { - "id": 49185, + "id": 49182, "nodeType": "ImportDirective", "src": "111:25:59", "nodes": [], "absolutePath": "src/Constants.sol", "file": "./Constants.sol", "nameLocation": "-1:-1:-1", - "scope": 49250, - "sourceUnit": 46265, + "scope": 49247, + "sourceUnit": 46262, "symbolAliases": [], "unitAlias": "" }, { - "id": 49186, + "id": 49183, "nodeType": "ImportDirective", "src": "137:32:59", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 49250, + "scope": 49247, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 49249, + "id": 49246, "nodeType": "ContractDefinition", "src": "172:1337:59", "nodes": [ { - "id": 49189, + "id": 49186, "nodeType": "VariableDeclaration", "src": "390:113:59", "nodes": [], @@ -347,7 +347,7 @@ "mutability": "constant", "name": "VAULT_INIT_CODE_HASH", "nameLocation": "414:20:59", - "scope": 49249, + "scope": 49246, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -355,7 +355,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49187, + "id": 49184, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "390:7:59", @@ -366,7 +366,7 @@ }, "value": { "hexValue": "307832643633366532623437346439666664343862336131383466353239663232313638323430323337323166363334353435393063386362356434343132653933", - "id": 49188, + "id": 49185, "isConstant": false, "isLValue": false, "isPure": true, @@ -383,12 +383,12 @@ "visibility": "public" }, { - "id": 49205, + "id": 49202, "nodeType": "FunctionDefinition", "src": "849:151:59", "nodes": [], "body": { - "id": 49204, + "id": 49201, "nodeType": "Block", "src": "943:57:59", "nodes": [], @@ -397,11 +397,11 @@ "expression": { "arguments": [ { - "id": 49199, + "id": 49196, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49191, + "referencedDeclaration": 49188, "src": "975:7:59", "typeDescriptions": { "typeIdentifier": "t_address", @@ -409,11 +409,11 @@ } }, { - "id": 49200, + "id": 49197, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49193, + "referencedDeclaration": 49190, "src": "984:5:59", "typeDescriptions": { "typeIdentifier": "t_address", @@ -422,7 +422,7 @@ }, { "hexValue": "30", - "id": 49201, + "id": 49198, "isConstant": false, "isLValue": false, "isPure": true, @@ -452,21 +452,21 @@ "typeString": "int_const 0" } ], - "id": 49198, + "id": 49195, "name": "computeAddress", "nodeType": "Identifier", "overloadedDeclarations": [ - 49205, - 49248 + 49202, + 49245 ], - "referencedDeclaration": 49248, + "referencedDeclaration": 49245, "src": "960:14:59", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_uint8_$returns$_t_address_$", "typeString": "function (address,address,uint8) pure returns (address)" } }, - "id": 49202, + "id": 49199, "isConstant": false, "isLValue": false, "isPure": false, @@ -482,8 +482,8 @@ "typeString": "address" } }, - "functionReturnParameters": 49197, - "id": 49203, + "functionReturnParameters": 49194, + "id": 49200, "nodeType": "Return", "src": "953:40:59" } @@ -495,17 +495,17 @@ "name": "computeAddress", "nameLocation": "858:14:59", "parameters": { - "id": 49194, + "id": 49191, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49191, + "id": 49188, "mutability": "mutable", "name": "factory", "nameLocation": "881:7:59", "nodeType": "VariableDeclaration", - "scope": 49205, + "scope": 49202, "src": "873:15:59", "stateVariable": false, "storageLocation": "default", @@ -514,7 +514,7 @@ "typeString": "address" }, "typeName": { - "id": 49190, + "id": 49187, "name": "address", "nodeType": "ElementaryTypeName", "src": "873:7:59", @@ -528,12 +528,12 @@ }, { "constant": false, - "id": 49193, + "id": 49190, "mutability": "mutable", "name": "owner", "nameLocation": "898:5:59", "nodeType": "VariableDeclaration", - "scope": 49205, + "scope": 49202, "src": "890:13:59", "stateVariable": false, "storageLocation": "default", @@ -542,7 +542,7 @@ "typeString": "address" }, "typeName": { - "id": 49192, + "id": 49189, "name": "address", "nodeType": "ElementaryTypeName", "src": "890:7:59", @@ -558,17 +558,17 @@ "src": "872:32:59" }, "returnParameters": { - "id": 49197, + "id": 49194, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49196, + "id": 49193, "mutability": "mutable", "name": "vault", "nameLocation": "936:5:59", "nodeType": "VariableDeclaration", - "scope": 49205, + "scope": 49202, "src": "928:13:59", "stateVariable": false, "storageLocation": "default", @@ -577,7 +577,7 @@ "typeString": "address" }, "typeName": { - "id": 49195, + "id": 49192, "name": "address", "nodeType": "ElementaryTypeName", "src": "928:7:59", @@ -592,35 +592,35 @@ ], "src": "927:15:59" }, - "scope": 49249, + "scope": 49246, "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { - "id": 49248, + "id": 49245, "nodeType": "FunctionDefinition", "src": "1006:501:59", "nodes": [], "body": { - "id": 49247, + "id": 49244, "nodeType": "Block", "src": "1111:396:59", "nodes": [], "statements": [ { "assignments": [ - 49217 + 49214 ], "declarations": [ { "constant": false, - "id": 49217, + "id": 49214, "mutability": "mutable", "name": "salt", "nameLocation": "1129:4:59", "nodeType": "VariableDeclaration", - "scope": 49247, + "scope": 49244, "src": "1121:12:59", "stateVariable": false, "storageLocation": "default", @@ -629,7 +629,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49216, + "id": 49213, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1121:7:59", @@ -641,17 +641,17 @@ "visibility": "internal" } ], - "id": 49225, + "id": 49222, "initialValue": { "arguments": [ { "arguments": [ { - "id": 49221, + "id": 49218, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49209, + "referencedDeclaration": 49206, "src": "1163:5:59", "typeDescriptions": { "typeIdentifier": "t_address", @@ -659,11 +659,11 @@ } }, { - "id": 49222, + "id": 49219, "name": "num", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49211, + "referencedDeclaration": 49208, "src": "1169:3:59", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -683,7 +683,7 @@ } ], "expression": { - "id": 49219, + "id": 49216, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -694,7 +694,7 @@ "typeString": "abi" } }, - "id": 49220, + "id": 49217, "isConstant": false, "isLValue": false, "isPure": true, @@ -708,7 +708,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 49223, + "id": 49220, "isConstant": false, "isLValue": false, "isPure": false, @@ -732,7 +732,7 @@ "typeString": "bytes memory" } ], - "id": 49218, + "id": 49215, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -743,7 +743,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 49224, + "id": 49221, "isConstant": false, "isLValue": false, "isPure": false, @@ -764,17 +764,17 @@ }, { "expression": { - "id": 49245, + "id": 49242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49226, + "id": 49223, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49214, + "referencedDeclaration": 49211, "src": "1184:5:59", "typeDescriptions": { "typeIdentifier": "t_address", @@ -795,7 +795,7 @@ "arguments": [ { "hexValue": "ff", - "id": 49236, + "id": 49233, "isConstant": false, "isLValue": false, "isPure": true, @@ -809,11 +809,11 @@ } }, { - "id": 49237, + "id": 49234, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49207, + "referencedDeclaration": 49204, "src": "1352:7:59", "typeDescriptions": { "typeIdentifier": "t_address", @@ -821,11 +821,11 @@ } }, { - "id": 49238, + "id": 49235, "name": "salt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49217, + "referencedDeclaration": 49214, "src": "1385:4:59", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -833,11 +833,11 @@ } }, { - "id": 49239, + "id": 49236, "name": "VAULT_INIT_CODE_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49189, + "referencedDeclaration": 49186, "src": "1415:20:59", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -865,7 +865,7 @@ } ], "expression": { - "id": 49234, + "id": 49231, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -876,7 +876,7 @@ "typeString": "abi" } }, - "id": 49235, + "id": 49232, "isConstant": false, "isLValue": false, "isPure": true, @@ -890,7 +890,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 49240, + "id": 49237, "isConstant": false, "isLValue": false, "isPure": false, @@ -914,7 +914,7 @@ "typeString": "bytes memory" } ], - "id": 49233, + "id": 49230, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -925,7 +925,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 49241, + "id": 49238, "isConstant": false, "isLValue": false, "isPure": false, @@ -949,7 +949,7 @@ "typeString": "bytes32" } ], - "id": 49232, + "id": 49229, "isConstant": false, "isLValue": false, "isPure": true, @@ -961,14 +961,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 49231, + "id": 49228, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1221:7:59", "typeDescriptions": {} } }, - "id": 49242, + "id": 49239, "isConstant": false, "isLValue": false, "isPure": false, @@ -992,7 +992,7 @@ "typeString": "uint256" } ], - "id": 49230, + "id": 49227, "isConstant": false, "isLValue": false, "isPure": true, @@ -1004,14 +1004,14 @@ "typeString": "type(uint160)" }, "typeName": { - "id": 49229, + "id": 49226, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "1200:7:59", "typeDescriptions": {} } }, - "id": 49243, + "id": 49240, "isConstant": false, "isLValue": false, "isPure": false, @@ -1035,7 +1035,7 @@ "typeString": "uint160" } ], - "id": 49228, + "id": 49225, "isConstant": false, "isLValue": false, "isPure": true, @@ -1047,14 +1047,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49227, + "id": 49224, "name": "address", "nodeType": "ElementaryTypeName", "src": "1192:7:59", "typeDescriptions": {} } }, - "id": 49244, + "id": 49241, "isConstant": false, "isLValue": false, "isPure": false, @@ -1076,7 +1076,7 @@ "typeString": "address" } }, - "id": 49246, + "id": 49243, "nodeType": "ExpressionStatement", "src": "1184:316:59" } @@ -1088,17 +1088,17 @@ "name": "computeAddress", "nameLocation": "1015:14:59", "parameters": { - "id": 49212, + "id": 49209, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49207, + "id": 49204, "mutability": "mutable", "name": "factory", "nameLocation": "1038:7:59", "nodeType": "VariableDeclaration", - "scope": 49248, + "scope": 49245, "src": "1030:15:59", "stateVariable": false, "storageLocation": "default", @@ -1107,7 +1107,7 @@ "typeString": "address" }, "typeName": { - "id": 49206, + "id": 49203, "name": "address", "nodeType": "ElementaryTypeName", "src": "1030:7:59", @@ -1121,12 +1121,12 @@ }, { "constant": false, - "id": 49209, + "id": 49206, "mutability": "mutable", "name": "owner", "nameLocation": "1055:5:59", "nodeType": "VariableDeclaration", - "scope": 49248, + "scope": 49245, "src": "1047:13:59", "stateVariable": false, "storageLocation": "default", @@ -1135,7 +1135,7 @@ "typeString": "address" }, "typeName": { - "id": 49208, + "id": 49205, "name": "address", "nodeType": "ElementaryTypeName", "src": "1047:7:59", @@ -1149,12 +1149,12 @@ }, { "constant": false, - "id": 49211, + "id": 49208, "mutability": "mutable", "name": "num", "nameLocation": "1068:3:59", "nodeType": "VariableDeclaration", - "scope": 49248, + "scope": 49245, "src": "1062:9:59", "stateVariable": false, "storageLocation": "default", @@ -1163,7 +1163,7 @@ "typeString": "uint8" }, "typeName": { - "id": 49210, + "id": 49207, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1062:5:59", @@ -1178,17 +1178,17 @@ "src": "1029:43:59" }, "returnParameters": { - "id": 49215, + "id": 49212, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49214, + "id": 49211, "mutability": "mutable", "name": "vault", "nameLocation": "1104:5:59", "nodeType": "VariableDeclaration", - "scope": 49248, + "scope": 49245, "src": "1096:13:59", "stateVariable": false, "storageLocation": "default", @@ -1197,7 +1197,7 @@ "typeString": "address" }, "typeName": { - "id": 49213, + "id": 49210, "name": "address", "nodeType": "ElementaryTypeName", "src": "1096:7:59", @@ -1212,7 +1212,7 @@ ], "src": "1095:15:59" }, - "scope": 49249, + "scope": 49246, "stateMutability": "pure", "virtual": false, "visibility": "internal" @@ -1225,11 +1225,11 @@ "contractKind": "library", "fullyImplemented": true, "linearizedBaseContracts": [ - 49249 + 49246 ], "name": "VaultAddress", "nameLocation": "180:12:59", - "scope": 49250, + "scope": 49247, "usedErrors": [], "usedEvents": [] } diff --git a/deployment/alpha/out/VaultAddress.sol/VaultAddress.json b/deployment/alpha/out/VaultAddress.sol/VaultAddress.json index 65a1a4d..1137d34 100644 --- a/deployment/alpha/out/VaultAddress.sol/VaultAddress.json +++ b/deployment/alpha/out/VaultAddress.sol/VaultAddress.json @@ -15,19 +15,19 @@ } ], "bytecode": { - "object": "0x60a6610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806335855a6e146038575b600080fd5b605e7f139fb90057cc44dea7209d8e9f5b28de2998f4d6d89adbc03951a7e813904e0b81565b60405190815260200160405180910390f3fea2646970667358221220051689600c1259cb86bead48e8f1565b0c3625dd4423205a69223fa1f666fee264736f6c63430008160033", + "object": "0x60a6610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806335855a6e146038575b600080fd5b605e7f7f4ec23b80574c0e16ed393051b3518409fd65d40c3018b0df7b07c8e70a0abb81565b60405190815260200160405180910390f3fea2646970667358221220ee3d0d0dff38f09279affde6e38d92008768e05685b2244a08a8121948fcc2ee64736f6c63430008160033", "sourceMap": "172:1337:60:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;172:1337:60;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806335855a6e146038575b600080fd5b605e7f139fb90057cc44dea7209d8e9f5b28de2998f4d6d89adbc03951a7e813904e0b81565b60405190815260200160405180910390f3fea2646970667358221220051689600c1259cb86bead48e8f1565b0c3625dd4423205a69223fa1f666fee264736f6c63430008160033", + "object": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806335855a6e146038575b600080fd5b605e7f7f4ec23b80574c0e16ed393051b3518409fd65d40c3018b0df7b07c8e70a0abb81565b60405190815260200160405180910390f3fea2646970667358221220ee3d0d0dff38f09279affde6e38d92008768e05685b2244a08a8121948fcc2ee64736f6c63430008160033", "sourceMap": "172:1337:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;390:113;;437:66;390:113;;;;;140:35:69;;;328:2;313:18;390:113:60;;;;;;", "linkReferences": {} }, "methodIdentifiers": { "VAULT_INIT_CODE_HASH()": "35855a6e" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"VAULT_INIT_CODE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/VaultAddress.sol\":\"VaultAddress\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/VaultAddress.sol\":{\"keccak256\":\"0xd77e6ac60a757dd7646be0da2febe56815337241baa9f409ba26edb5b0c9480e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ba067b88569ded9107ae1c2d9c7ec91e94d88715dfd892a46401ac6e1b54e2b1\",\"dweb:/ipfs/QmSix5jf1wAjNt4urYZxQSpbFxc4ozWYKNYBje9gSfxBVi\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"VAULT_INIT_CODE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/VaultAddress.sol\":\"VaultAddress\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/VaultAddress.sol\":{\"keccak256\":\"0xeafbf61cd4bba0497a1b0f4d8600362f85eb674dbe5ee163ba6525ed03528c98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://40ccdd613b0bed3356189df33de8ff07034fdf344b506b0f39e6957be0f0e67a\",\"dweb:/ipfs/Qmd86i2u8TxzxzuL4j6YeXMoVHu3VoVcraYbstFBWZp61h\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -210,18 +210,18 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, "src/VaultAddress.sol": { - "keccak256": "0xd77e6ac60a757dd7646be0da2febe56815337241baa9f409ba26edb5b0c9480e", + "keccak256": "0xeafbf61cd4bba0497a1b0f4d8600362f85eb674dbe5ee163ba6525ed03528c98", "urls": [ - "bzz-raw://ba067b88569ded9107ae1c2d9c7ec91e94d88715dfd892a46401ac6e1b54e2b1", - "dweb:/ipfs/QmSix5jf1wAjNt4urYZxQSpbFxc4ozWYKNYBje9gSfxBVi" + "bzz-raw://40ccdd613b0bed3356189df33de8ff07034fdf344b506b0f39e6957be0f0e67a", + "dweb:/ipfs/Qmd86i2u8TxzxzuL4j6YeXMoVHu3VoVcraYbstFBWZp61h" ], "license": "UNLICENSED" } @@ -230,10 +230,10 @@ }, "ast": { "absolutePath": "src/VaultAddress.sol", - "id": 49318, + "id": 49315, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "IERC165": [ 43789 @@ -275,7 +275,7 @@ 45892 ], "VaultAddress": [ - 49317 + 49314 ], "console2": [ 29653 @@ -285,7 +285,7 @@ "src": "65:1445:60", "nodes": [ { - "id": 49251, + "id": 49248, "nodeType": "PragmaDirective", "src": "65:24:60", "nodes": [], @@ -297,7 +297,7 @@ ] }, { - "id": 49252, + "id": 49249, "nodeType": "PragmaDirective", "src": "90:19:60", "nodes": [], @@ -307,38 +307,38 @@ ] }, { - "id": 49253, + "id": 49250, "nodeType": "ImportDirective", "src": "111:25:60", "nodes": [], "absolutePath": "src/Constants.sol", "file": "./Constants.sol", "nameLocation": "-1:-1:-1", - "scope": 49318, - "sourceUnit": 46265, + "scope": 49315, + "sourceUnit": 46262, "symbolAliases": [], "unitAlias": "" }, { - "id": 49254, + "id": 49251, "nodeType": "ImportDirective", "src": "137:32:60", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", - "scope": 49318, + "scope": 49315, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { - "id": 49317, + "id": 49314, "nodeType": "ContractDefinition", "src": "172:1337:60", "nodes": [ { - "id": 49257, + "id": 49254, "nodeType": "VariableDeclaration", "src": "390:113:60", "nodes": [], @@ -347,7 +347,7 @@ "mutability": "constant", "name": "VAULT_INIT_CODE_HASH", "nameLocation": "414:20:60", - "scope": 49317, + "scope": 49314, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -355,7 +355,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49255, + "id": 49252, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "390:7:60", @@ -365,8 +365,8 @@ } }, "value": { - "hexValue": "307831333966623930303537636334346465613732303964386539663562323864653239393866346436643839616462633033393531613765383133393034653062", - "id": 49256, + "hexValue": "307837663465633233623830353734633065313665643339333035316233353138343039666436356434306333303138623064663762303763386537306130616262", + "id": 49253, "isConstant": false, "isLValue": false, "isPure": true, @@ -375,20 +375,20 @@ "nodeType": "Literal", "src": "437:66:60", "typeDescriptions": { - "typeIdentifier": "t_rational_8876149638702181518786982419509028588819433526643603066083300721407894244875_by_1", - "typeString": "int_const 8876...(68 digits omitted)...4875" + "typeIdentifier": "t_rational_57582886384071561305812179802062002882092466350857996855695877736354529544891_by_1", + "typeString": "int_const 5758...(69 digits omitted)...4891" }, - "value": "0x139fb90057cc44dea7209d8e9f5b28de2998f4d6d89adbc03951a7e813904e0b" + "value": "0x7f4ec23b80574c0e16ed393051b3518409fd65d40c3018b0df7b07c8e70a0abb" }, "visibility": "public" }, { - "id": 49273, + "id": 49270, "nodeType": "FunctionDefinition", "src": "849:151:60", "nodes": [], "body": { - "id": 49272, + "id": 49269, "nodeType": "Block", "src": "943:57:60", "nodes": [], @@ -397,11 +397,11 @@ "expression": { "arguments": [ { - "id": 49267, + "id": 49264, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49259, + "referencedDeclaration": 49256, "src": "975:7:60", "typeDescriptions": { "typeIdentifier": "t_address", @@ -409,11 +409,11 @@ } }, { - "id": 49268, + "id": 49265, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49261, + "referencedDeclaration": 49258, "src": "984:5:60", "typeDescriptions": { "typeIdentifier": "t_address", @@ -422,7 +422,7 @@ }, { "hexValue": "30", - "id": 49269, + "id": 49266, "isConstant": false, "isLValue": false, "isPure": true, @@ -452,21 +452,21 @@ "typeString": "int_const 0" } ], - "id": 49266, + "id": 49263, "name": "computeAddress", "nodeType": "Identifier", "overloadedDeclarations": [ - 49273, - 49316 + 49270, + 49313 ], - "referencedDeclaration": 49316, + "referencedDeclaration": 49313, "src": "960:14:60", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_uint8_$returns$_t_address_$", "typeString": "function (address,address,uint8) pure returns (address)" } }, - "id": 49270, + "id": 49267, "isConstant": false, "isLValue": false, "isPure": false, @@ -482,8 +482,8 @@ "typeString": "address" } }, - "functionReturnParameters": 49265, - "id": 49271, + "functionReturnParameters": 49262, + "id": 49268, "nodeType": "Return", "src": "953:40:60" } @@ -495,17 +495,17 @@ "name": "computeAddress", "nameLocation": "858:14:60", "parameters": { - "id": 49262, + "id": 49259, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49259, + "id": 49256, "mutability": "mutable", "name": "factory", "nameLocation": "881:7:60", "nodeType": "VariableDeclaration", - "scope": 49273, + "scope": 49270, "src": "873:15:60", "stateVariable": false, "storageLocation": "default", @@ -514,7 +514,7 @@ "typeString": "address" }, "typeName": { - "id": 49258, + "id": 49255, "name": "address", "nodeType": "ElementaryTypeName", "src": "873:7:60", @@ -528,12 +528,12 @@ }, { "constant": false, - "id": 49261, + "id": 49258, "mutability": "mutable", "name": "owner", "nameLocation": "898:5:60", "nodeType": "VariableDeclaration", - "scope": 49273, + "scope": 49270, "src": "890:13:60", "stateVariable": false, "storageLocation": "default", @@ -542,7 +542,7 @@ "typeString": "address" }, "typeName": { - "id": 49260, + "id": 49257, "name": "address", "nodeType": "ElementaryTypeName", "src": "890:7:60", @@ -558,17 +558,17 @@ "src": "872:32:60" }, "returnParameters": { - "id": 49265, + "id": 49262, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49264, + "id": 49261, "mutability": "mutable", "name": "vault", "nameLocation": "936:5:60", "nodeType": "VariableDeclaration", - "scope": 49273, + "scope": 49270, "src": "928:13:60", "stateVariable": false, "storageLocation": "default", @@ -577,7 +577,7 @@ "typeString": "address" }, "typeName": { - "id": 49263, + "id": 49260, "name": "address", "nodeType": "ElementaryTypeName", "src": "928:7:60", @@ -592,35 +592,35 @@ ], "src": "927:15:60" }, - "scope": 49317, + "scope": 49314, "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { - "id": 49316, + "id": 49313, "nodeType": "FunctionDefinition", "src": "1006:501:60", "nodes": [], "body": { - "id": 49315, + "id": 49312, "nodeType": "Block", "src": "1111:396:60", "nodes": [], "statements": [ { "assignments": [ - 49285 + 49282 ], "declarations": [ { "constant": false, - "id": 49285, + "id": 49282, "mutability": "mutable", "name": "salt", "nameLocation": "1129:4:60", "nodeType": "VariableDeclaration", - "scope": 49315, + "scope": 49312, "src": "1121:12:60", "stateVariable": false, "storageLocation": "default", @@ -629,7 +629,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 49284, + "id": 49281, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1121:7:60", @@ -641,17 +641,17 @@ "visibility": "internal" } ], - "id": 49293, + "id": 49290, "initialValue": { "arguments": [ { "arguments": [ { - "id": 49289, + "id": 49286, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49277, + "referencedDeclaration": 49274, "src": "1163:5:60", "typeDescriptions": { "typeIdentifier": "t_address", @@ -659,11 +659,11 @@ } }, { - "id": 49290, + "id": 49287, "name": "num", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49279, + "referencedDeclaration": 49276, "src": "1169:3:60", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -683,7 +683,7 @@ } ], "expression": { - "id": 49287, + "id": 49284, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -694,7 +694,7 @@ "typeString": "abi" } }, - "id": 49288, + "id": 49285, "isConstant": false, "isLValue": false, "isPure": true, @@ -708,7 +708,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 49291, + "id": 49288, "isConstant": false, "isLValue": false, "isPure": false, @@ -732,7 +732,7 @@ "typeString": "bytes memory" } ], - "id": 49286, + "id": 49283, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -743,7 +743,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 49292, + "id": 49289, "isConstant": false, "isLValue": false, "isPure": false, @@ -764,17 +764,17 @@ }, { "expression": { - "id": 49313, + "id": 49310, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49294, + "id": 49291, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49282, + "referencedDeclaration": 49279, "src": "1184:5:60", "typeDescriptions": { "typeIdentifier": "t_address", @@ -795,7 +795,7 @@ "arguments": [ { "hexValue": "ff", - "id": 49304, + "id": 49301, "isConstant": false, "isLValue": false, "isPure": true, @@ -809,11 +809,11 @@ } }, { - "id": 49305, + "id": 49302, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49275, + "referencedDeclaration": 49272, "src": "1352:7:60", "typeDescriptions": { "typeIdentifier": "t_address", @@ -821,11 +821,11 @@ } }, { - "id": 49306, + "id": 49303, "name": "salt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49285, + "referencedDeclaration": 49282, "src": "1385:4:60", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -833,11 +833,11 @@ } }, { - "id": 49307, + "id": 49304, "name": "VAULT_INIT_CODE_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49257, + "referencedDeclaration": 49254, "src": "1415:20:60", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -865,7 +865,7 @@ } ], "expression": { - "id": 49302, + "id": 49299, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -876,7 +876,7 @@ "typeString": "abi" } }, - "id": 49303, + "id": 49300, "isConstant": false, "isLValue": false, "isPure": true, @@ -890,7 +890,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 49308, + "id": 49305, "isConstant": false, "isLValue": false, "isPure": false, @@ -914,7 +914,7 @@ "typeString": "bytes memory" } ], - "id": 49301, + "id": 49298, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -925,7 +925,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 49309, + "id": 49306, "isConstant": false, "isLValue": false, "isPure": false, @@ -949,7 +949,7 @@ "typeString": "bytes32" } ], - "id": 49300, + "id": 49297, "isConstant": false, "isLValue": false, "isPure": true, @@ -961,14 +961,14 @@ "typeString": "type(uint256)" }, "typeName": { - "id": 49299, + "id": 49296, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1221:7:60", "typeDescriptions": {} } }, - "id": 49310, + "id": 49307, "isConstant": false, "isLValue": false, "isPure": false, @@ -992,7 +992,7 @@ "typeString": "uint256" } ], - "id": 49298, + "id": 49295, "isConstant": false, "isLValue": false, "isPure": true, @@ -1004,14 +1004,14 @@ "typeString": "type(uint160)" }, "typeName": { - "id": 49297, + "id": 49294, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "1200:7:60", "typeDescriptions": {} } }, - "id": 49311, + "id": 49308, "isConstant": false, "isLValue": false, "isPure": false, @@ -1035,7 +1035,7 @@ "typeString": "uint160" } ], - "id": 49296, + "id": 49293, "isConstant": false, "isLValue": false, "isPure": true, @@ -1047,14 +1047,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49295, + "id": 49292, "name": "address", "nodeType": "ElementaryTypeName", "src": "1192:7:60", "typeDescriptions": {} } }, - "id": 49312, + "id": 49309, "isConstant": false, "isLValue": false, "isPure": false, @@ -1076,7 +1076,7 @@ "typeString": "address" } }, - "id": 49314, + "id": 49311, "nodeType": "ExpressionStatement", "src": "1184:316:60" } @@ -1088,17 +1088,17 @@ "name": "computeAddress", "nameLocation": "1015:14:60", "parameters": { - "id": 49280, + "id": 49277, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49275, + "id": 49272, "mutability": "mutable", "name": "factory", "nameLocation": "1038:7:60", "nodeType": "VariableDeclaration", - "scope": 49316, + "scope": 49313, "src": "1030:15:60", "stateVariable": false, "storageLocation": "default", @@ -1107,7 +1107,7 @@ "typeString": "address" }, "typeName": { - "id": 49274, + "id": 49271, "name": "address", "nodeType": "ElementaryTypeName", "src": "1030:7:60", @@ -1121,12 +1121,12 @@ }, { "constant": false, - "id": 49277, + "id": 49274, "mutability": "mutable", "name": "owner", "nameLocation": "1055:5:60", "nodeType": "VariableDeclaration", - "scope": 49316, + "scope": 49313, "src": "1047:13:60", "stateVariable": false, "storageLocation": "default", @@ -1135,7 +1135,7 @@ "typeString": "address" }, "typeName": { - "id": 49276, + "id": 49273, "name": "address", "nodeType": "ElementaryTypeName", "src": "1047:7:60", @@ -1149,12 +1149,12 @@ }, { "constant": false, - "id": 49279, + "id": 49276, "mutability": "mutable", "name": "num", "nameLocation": "1068:3:60", "nodeType": "VariableDeclaration", - "scope": 49316, + "scope": 49313, "src": "1062:9:60", "stateVariable": false, "storageLocation": "default", @@ -1163,7 +1163,7 @@ "typeString": "uint8" }, "typeName": { - "id": 49278, + "id": 49275, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1062:5:60", @@ -1178,17 +1178,17 @@ "src": "1029:43:60" }, "returnParameters": { - "id": 49283, + "id": 49280, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49282, + "id": 49279, "mutability": "mutable", "name": "vault", "nameLocation": "1104:5:60", "nodeType": "VariableDeclaration", - "scope": 49316, + "scope": 49313, "src": "1096:13:60", "stateVariable": false, "storageLocation": "default", @@ -1197,7 +1197,7 @@ "typeString": "address" }, "typeName": { - "id": 49281, + "id": 49278, "name": "address", "nodeType": "ElementaryTypeName", "src": "1096:7:60", @@ -1212,7 +1212,7 @@ ], "src": "1095:15:60" }, - "scope": 49317, + "scope": 49314, "stateMutability": "pure", "virtual": false, "visibility": "internal" @@ -1225,11 +1225,11 @@ "contractKind": "library", "fullyImplemented": true, "linearizedBaseContracts": [ - 49317 + 49314 ], "name": "VaultAddress", "nameLocation": "180:12:60", - "scope": 49318, + "scope": 49315, "usedErrors": [], "usedEvents": [] } diff --git a/deployment/alpha/out/VaultDeployer.sol/VaultDeployer.json b/deployment/alpha/out/VaultDeployer.sol/VaultDeployer.json index d39ab61..b538e36 100644 --- a/deployment/alpha/out/VaultDeployer.sol/VaultDeployer.json +++ b/deployment/alpha/out/VaultDeployer.sol/VaultDeployer.json @@ -109,12 +109,12 @@ } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b50615152806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063890357301161005057806389035730146100a8578063901c4e4f146100c8578063dd009fdc146100d057600080fd5b80631a48240f1461006c5780635eb512e714610095575b600080fd5b61007f61007a366004610281565b6100e3565b60405161008c91906102cd565b60405180910390f35b61007f6100a33660046102f0565b6100f5565b60005461007f9073ffffffffffffffffffffffffffffffffffffffff1681565b61007f610102565b61007f6100de36600461030f565b610114565b60006100ef3383610127565b92915050565b60006100ef826000610127565b600061010f336000610127565b905090565b60006101208383610127565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921782559151909161018a918591859101610387565b604051602081830303815290604052805190602001206040516101ac9061024e565b8190604051809103906000f59050801580156101cc573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d4906102409085906103b0565b60405180910390a292915050565b614d5e806103bf83390190565b60ff81165b811461026b57600080fd5b50565b80358061027a8161025b565b5092915050565b60006020828403121561029657610296600080fd5b610120838361026e565b600073ffffffffffffffffffffffffffffffffffffffff82166100ef565b6102c7816102a0565b82525050565b602081016100ef82846102be565b610260816102a0565b80358061027a816102db565b60006020828403121561030557610305600080fd5b61012083836102e4565b6000806040838503121561032557610325600080fd5b61032f84846102e4565b915061033e846020850161026e565b90509250929050565b60006100ef8260601b90565b60006100ef82610347565b6102c761036a826102a0565b610353565b60006100ef8260f81b90565b6102c760ff821661036f565b610391818461035e565b61039e601482018361037b565b60150192915050565b60ff81166102c7565b602081016100ef82846103a756fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a2646970667358221220b30441ecf3e8a20f3858f0d0ac65dcfe373f684b50a86dae9065f35d38d79b2e64736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50615152806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063890357301161005057806389035730146100a8578063901c4e4f146100c8578063dd009fdc146100d057600080fd5b80631a48240f1461006c5780635eb512e714610095575b600080fd5b61007f61007a366004610281565b6100e3565b60405161008c91906102cd565b60405180910390f35b61007f6100a33660046102f0565b6100f5565b60005461007f9073ffffffffffffffffffffffffffffffffffffffff1681565b61007f610102565b61007f6100de36600461030f565b610114565b60006100ef3383610127565b92915050565b60006100ef826000610127565b600061010f336000610127565b905090565b60006101208383610127565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921782559151909161018a918591859101610387565b604051602081830303815290604052805190602001206040516101ac9061024e565b8190604051809103906000f59050801580156101cc573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d4906102409085906103b0565b60405180910390a292915050565b614d5e806103bf83390190565b60ff81165b811461026b57600080fd5b50565b80358061027a8161025b565b5092915050565b60006020828403121561029657610296600080fd5b610120838361026e565b600073ffffffffffffffffffffffffffffffffffffffff82166100ef565b6102c7816102a0565b82525050565b602081016100ef82846102be565b610260816102a0565b80358061027a816102db565b60006020828403121561030557610305600080fd5b61012083836102e4565b6000806040838503121561032557610325600080fd5b61032f84846102e4565b915061033e846020850161026e565b90509250929050565b60006100ef8260601b90565b60006100ef82610347565b6102c761036a826102a0565b610353565b60006100ef8260f81b90565b6102c760ff821661036f565b610391818461035e565b61039e601482018361037b565b60150192915050565b60ff81166102c7565b602081016100ef82846103a756fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a26469706673582212206658765e5859da8bd71f94998b39f3020092ccc17fd76ef1c29a2363b896fc9b64736f6c63430008160033", "sourceMap": "174:1014:61:-:0;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063890357301161005057806389035730146100a8578063901c4e4f146100c8578063dd009fdc146100d057600080fd5b80631a48240f1461006c5780635eb512e714610095575b600080fd5b61007f61007a366004610281565b6100e3565b60405161008c91906102cd565b60405180910390f35b61007f6100a33660046102f0565b6100f5565b60005461007f9073ffffffffffffffffffffffffffffffffffffffff1681565b61007f610102565b61007f6100de36600461030f565b610114565b60006100ef3383610127565b92915050565b60006100ef826000610127565b600061010f336000610127565b905090565b60006101208383610127565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921782559151909161018a918591859101610387565b604051602081830303815290604052805190602001206040516101ac9061024e565b8190604051809103906000f59050801580156101cc573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d4906102409085906103b0565b60405180910390a292915050565b614d5e806103bf83390190565b60ff81165b811461026b57600080fd5b50565b80358061027a8161025b565b5092915050565b60006020828403121561029657610296600080fd5b610120838361026e565b600073ffffffffffffffffffffffffffffffffffffffff82166100ef565b6102c7816102a0565b82525050565b602081016100ef82846102be565b610260816102a0565b80358061027a816102db565b60006020828403121561030557610305600080fd5b61012083836102e4565b6000806040838503121561032557610325600080fd5b61032f84846102e4565b915061033e846020850161026e565b90509250929050565b60006100ef8260601b90565b60006100ef82610347565b6102c761036a826102a0565b610353565b60006100ef8260f81b90565b6102c760ff821661036f565b610391818461035e565b61039e601482018361037b565b60150192915050565b60ff81166102c7565b602081016100ef82846103a756fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a2646970667358221220b30441ecf3e8a20f3858f0d0ac65dcfe373f684b50a86dae9065f35d38d79b2e64736f6c63430008160033", + "object": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063890357301161005057806389035730146100a8578063901c4e4f146100c8578063dd009fdc146100d057600080fd5b80631a48240f1461006c5780635eb512e714610095575b600080fd5b61007f61007a366004610281565b6100e3565b60405161008c91906102cd565b60405180910390f35b61007f6100a33660046102f0565b6100f5565b60005461007f9073ffffffffffffffffffffffffffffffffffffffff1681565b61007f610102565b61007f6100de36600461030f565b610114565b60006100ef3383610127565b92915050565b60006100ef826000610127565b600061010f336000610127565b905090565b60006101208383610127565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921782559151909161018a918591859101610387565b604051602081830303815290604052805190602001206040516101ac9061024e565b8190604051809103906000f59050801580156101cc573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d4906102409085906103b0565b60405180910390a292915050565b614d5e806103bf83390190565b60ff81165b811461026b57600080fd5b50565b80358061027a8161025b565b5092915050565b60006020828403121561029657610296600080fd5b610120838361026e565b600073ffffffffffffffffffffffffffffffffffffffff82166100ef565b6102c7816102a0565b82525050565b602081016100ef82846102be565b610260816102a0565b80358061027a816102db565b60006020828403121561030557610305600080fd5b61012083836102e4565b6000806040838503121561032557610325600080fd5b61032f84846102e4565b915061033e846020850161026e565b90509250929050565b60006100ef8260601b90565b60006100ef82610347565b6102c761036a826102a0565b610353565b60006100ef8260f81b90565b6102c760ff821661036f565b610391818461035e565b61039e601482018361037b565b60150192915050565b60ff81166102c7565b602081016100ef82846103a756fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212206a1e949f6ecbedce72cf89cb9e8b29e8d44613a144d8de2f391295af2d32359464736f6c63430008160033a26469706673582212206658765e5859da8bd71f94998b39f3020092ccc17fd76ef1c29a2363b896fc9b64736f6c63430008160033", "sourceMap": "174:1014:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;491:124;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;621:121;;;;;;:::i;:::-;;:::i;337:28::-;;;;;;;;;372:113;;;:::i;748:134::-;;;;;;:::i;:::-;;:::i;491:124::-;539:21;579:29;592:10;604:3;579:12;:29::i;:::-;572:36;491:124;-1:-1:-1;;491:124:61:o;621:121::-;673:21;713:22;726:5;733:1;713:12;:22::i;372:113::-;411:21;451:27;464:10;476:1;451:12;:27::i;:::-;444:34;;372:113;:::o;748:134::-;811:21;851:24;864:5;871:3;851:12;:24::i;:::-;844:31;748:134;-1:-1:-1;;;748:134:61:o;888:297::-;1000:17;;;;;;;;;;;;;;;;954:21;987:30;;;;;;;;;1077:27;;954:21;;1077:27;;1011:5;;1100:3;;1077:27;;:::i;:::-;;;;;;;;;;;;;1067:38;;;;;;1051:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:10:61;1120:17;;;;;;1152:26;;1027:83;;-1:-1:-1;1120:17:61;1152:26;;;;;;;1173:3;;1152:26;:::i;:::-;;;;;;;;888:297;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;209:118:69:-;197:4;186:16;;282:20;275:5;272:31;262:59;;317:1;314;307:12;262:59;209:118;:::o;332:168::-;409:20;;;463:31;409:20;463:31;:::i;:::-;;332:168;;;;:::o;505:286::-;562:6;615:2;603:9;594:7;590:23;586:32;583:147;;;641:79;174:1014:61;;;641:79:69;749:36;777:7;766:9;749:36;:::i;929:104::-;972:7;875:42;864:54;;1005:22;796:128;1038:111;1112:30;1136:5;1112:30;:::i;:::-;1107:3;1100:43;;;1038:111::o;1154:213::-;1304:2;1289:18;;1316:45;1293:9;1343:6;1316:45;:::i;1473:122::-;1548:22;1564:5;1548:22;:::i;1600:172::-;1679:20;;;1733:33;1679:20;1733:33;:::i;1777:290::-;1836:6;1889:2;1877:9;1868:7;1864:23;1860:32;1857:147;;;1915:79;174:1014:61;;;1915:79:69;2023:38;2053:7;2042:9;2023:38;:::i;2366:369::-;2432:6;2440;2493:2;2481:9;2472:7;2468:23;2464:32;2461:147;;;2519:79;174:1014:61;;;2519:79:69;2627:38;2657:7;2646:9;2627:38;:::i;:::-;2617:48;;2684:45;2721:7;2716:2;2705:9;2701:18;2684:45;:::i;:::-;2674:55;;2366:369;;;;;:::o;2818:81::-;2855:7;2880:17;2891:5;2801:2;2797:14;;2740:73;2904:100;2941:7;2974:24;2992:5;2974:24;:::i;3009:143::-;3104:41;3122:22;3138:5;3122:22;:::i;:::-;3104:41;:::i;3240:95::-;3275:7;3308:21;3323:5;3222:3;3218:15;;3157:78;3340:108;3404:37;197:4;186:16;;3404:37;:::i;3453:294::-;3606:60;3662:3;3654:6;3606:60;:::i;:::-;3675:38;3709:2;3704:3;3700:12;3692:6;3675:38;:::i;:::-;3738:2;3729:12;;3453:294;-1:-1:-1;;3453:294:69:o;3752:100::-;197:4;186:16;;3825:20;128:76;3857:192;3987:2;3972:18;;3999:44;3976:9;4025:6;3999:44;:::i", "linkReferences": {} }, @@ -125,7 +125,7 @@ "deployVault(uint8)": "1a48240f", "parameters()": "89035730" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"VaultCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parameters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/VaultDeployer.sol\":\"VaultDeployer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"VaultCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"num\",\"type\":\"uint8\"}],\"name\":\"deployVault\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parameters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/VaultDeployer.sol\":\"VaultDeployer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" @@ -474,10 +474,10 @@ "license": "GPL-2.0-or-later" }, "src/Constants.sol": { - "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", + "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ - "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", - "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" + "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", + "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, @@ -526,10 +526,10 @@ }, "ast": { "absolutePath": "src/VaultDeployer.sol", - "id": 49437, + "id": 49434, "exportedSymbols": { "Constants": [ - 46264 + 46261 ], "IERC165": [ 43789 @@ -592,10 +592,10 @@ 43908 ], "IVaultDeployer": [ - 49445 + 49442 ], "OrderLib": [ - 47922 + 47919 ], "PoolAddress": [ 45892 @@ -604,13 +604,13 @@ 46063 ], "UniswapSwapper": [ - 48847 + 48844 ], "Vault": [ - 49181 + 49178 ], "VaultDeployer": [ - 49436 + 49433 ], "console2": [ 29653 @@ -620,7 +620,7 @@ "src": "65:1124:61", "nodes": [ { - "id": 49319, + "id": 49316, "nodeType": "PragmaDirective", "src": "65:24:61", "nodes": [], @@ -632,7 +632,7 @@ ] }, { - "id": 49320, + "id": 49317, "nodeType": "PragmaDirective", "src": "90:19:61", "nodes": [], @@ -642,38 +642,38 @@ ] }, { - "id": 49321, + "id": 49318, "nodeType": "ImportDirective", "src": "111:21:61", "nodes": [], "absolutePath": "src/Vault.sol", "file": "./Vault.sol", "nameLocation": "-1:-1:-1", - "scope": 49437, - "sourceUnit": 49182, + "scope": 49434, + "sourceUnit": 49179, "symbolAliases": [], "unitAlias": "" }, { - "id": 49322, + "id": 49319, "nodeType": "ImportDirective", "src": "133:40:61", "nodes": [], "absolutePath": "src/interface/IVaultDeployer.sol", "file": "./interface/IVaultDeployer.sol", "nameLocation": "-1:-1:-1", - "scope": 49437, - "sourceUnit": 49446, + "scope": 49434, + "sourceUnit": 49443, "symbolAliases": [], "unitAlias": "" }, { - "id": 49436, + "id": 49433, "nodeType": "ContractDefinition", "src": "174:1014:61", "nodes": [ { - "id": 49327, + "id": 49324, "nodeType": "StructDefinition", "src": "222:48:61", "nodes": [], @@ -681,12 +681,12 @@ "members": [ { "constant": false, - "id": 49326, + "id": 49323, "mutability": "mutable", "name": "owner", "nameLocation": "258:5:61", "nodeType": "VariableDeclaration", - "scope": 49327, + "scope": 49324, "src": "250:13:61", "stateVariable": false, "storageLocation": "default", @@ -695,7 +695,7 @@ "typeString": "address" }, "typeName": { - "id": 49325, + "id": 49322, "name": "address", "nodeType": "ElementaryTypeName", "src": "250:7:61", @@ -710,11 +710,11 @@ ], "name": "Parameters", "nameLocation": "229:10:61", - "scope": 49436, + "scope": 49433, "visibility": "public" }, { - "id": 49333, + "id": 49330, "nodeType": "EventDefinition", "src": "276:55:61", "nodes": [], @@ -723,18 +723,18 @@ "name": "VaultCreated", "nameLocation": "282:12:61", "parameters": { - "id": 49332, + "id": 49329, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49329, + "id": 49326, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "312:5:61", "nodeType": "VariableDeclaration", - "scope": 49333, + "scope": 49330, "src": "296:21:61", "stateVariable": false, "storageLocation": "default", @@ -743,7 +743,7 @@ "typeString": "address" }, "typeName": { - "id": 49328, + "id": 49325, "name": "address", "nodeType": "ElementaryTypeName", "src": "296:7:61", @@ -757,13 +757,13 @@ }, { "constant": false, - "id": 49331, + "id": 49328, "indexed": false, "mutability": "mutable", "name": "num", "nameLocation": "325:3:61", "nodeType": "VariableDeclaration", - "scope": 49333, + "scope": 49330, "src": "319:9:61", "stateVariable": false, "storageLocation": "default", @@ -772,7 +772,7 @@ "typeString": "uint8" }, "typeName": { - "id": 49330, + "id": 49327, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "319:5:61", @@ -788,54 +788,54 @@ } }, { - "id": 49336, + "id": 49333, "nodeType": "VariableDeclaration", "src": "337:28:61", "nodes": [], "baseFunctions": [ - 49444 + 49441 ], "constant": false, "functionSelector": "89035730", "mutability": "mutable", "name": "parameters", "nameLocation": "355:10:61", - "scope": 49436, + "scope": 49433, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$49327_storage", + "typeIdentifier": "t_struct$_Parameters_$49324_storage", "typeString": "struct VaultDeployer.Parameters" }, "typeName": { - "id": 49335, + "id": 49332, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49334, + "id": 49331, "name": "Parameters", "nameLocations": [ "337:10:61" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49327, + "referencedDeclaration": 49324, "src": "337:10:61" }, - "referencedDeclaration": 49327, + "referencedDeclaration": 49324, "src": "337:10:61", "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$49327_storage_ptr", + "typeIdentifier": "t_struct$_Parameters_$49324_storage_ptr", "typeString": "struct VaultDeployer.Parameters" } }, "visibility": "public" }, { - "id": 49348, + "id": 49345, "nodeType": "FunctionDefinition", "src": "372:113:61", "nodes": [], "body": { - "id": 49347, + "id": 49344, "nodeType": "Block", "src": "434:51:61", "nodes": [], @@ -845,7 +845,7 @@ "arguments": [ { "expression": { - "id": 49342, + "id": 49339, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -856,7 +856,7 @@ "typeString": "msg" } }, - "id": 49343, + "id": 49340, "isConstant": false, "isLValue": false, "isPure": false, @@ -872,7 +872,7 @@ }, { "hexValue": "30", - "id": 49344, + "id": 49341, "isConstant": false, "isLValue": false, "isPure": true, @@ -898,18 +898,18 @@ "typeString": "int_const 0" } ], - "id": 49341, + "id": 49338, "name": "_deployVault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49435, + "referencedDeclaration": 49432, "src": "451:12:61", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$returns$_t_address_payable_$", "typeString": "function (address,uint8) returns (address payable)" } }, - "id": 49345, + "id": 49342, "isConstant": false, "isLValue": false, "isPure": false, @@ -925,8 +925,8 @@ "typeString": "address payable" } }, - "functionReturnParameters": 49340, - "id": 49346, + "functionReturnParameters": 49337, + "id": 49343, "nodeType": "Return", "src": "444:34:61" } @@ -939,23 +939,23 @@ "name": "deployVault", "nameLocation": "381:11:61", "parameters": { - "id": 49337, + "id": 49334, "nodeType": "ParameterList", "parameters": [], "src": "392:2:61" }, "returnParameters": { - "id": 49340, + "id": 49337, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49339, + "id": 49336, "mutability": "mutable", "name": "vault", "nameLocation": "427:5:61", "nodeType": "VariableDeclaration", - "scope": 49348, + "scope": 49345, "src": "411:21:61", "stateVariable": false, "storageLocation": "default", @@ -964,7 +964,7 @@ "typeString": "address payable" }, "typeName": { - "id": 49338, + "id": 49335, "name": "address", "nodeType": "ElementaryTypeName", "src": "411:15:61", @@ -979,18 +979,18 @@ ], "src": "410:23:61" }, - "scope": 49436, + "scope": 49433, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49362, + "id": 49359, "nodeType": "FunctionDefinition", "src": "491:124:61", "nodes": [], "body": { - "id": 49361, + "id": 49358, "nodeType": "Block", "src": "562:53:61", "nodes": [], @@ -1000,7 +1000,7 @@ "arguments": [ { "expression": { - "id": 49356, + "id": 49353, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1011,7 +1011,7 @@ "typeString": "msg" } }, - "id": 49357, + "id": 49354, "isConstant": false, "isLValue": false, "isPure": false, @@ -1026,11 +1026,11 @@ } }, { - "id": 49358, + "id": 49355, "name": "num", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49350, + "referencedDeclaration": 49347, "src": "604:3:61", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1049,18 +1049,18 @@ "typeString": "uint8" } ], - "id": 49355, + "id": 49352, "name": "_deployVault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49435, + "referencedDeclaration": 49432, "src": "579:12:61", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$returns$_t_address_payable_$", "typeString": "function (address,uint8) returns (address payable)" } }, - "id": 49359, + "id": 49356, "isConstant": false, "isLValue": false, "isPure": false, @@ -1076,8 +1076,8 @@ "typeString": "address payable" } }, - "functionReturnParameters": 49354, - "id": 49360, + "functionReturnParameters": 49351, + "id": 49357, "nodeType": "Return", "src": "572:36:61" } @@ -1090,17 +1090,17 @@ "name": "deployVault", "nameLocation": "500:11:61", "parameters": { - "id": 49351, + "id": 49348, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49350, + "id": 49347, "mutability": "mutable", "name": "num", "nameLocation": "518:3:61", "nodeType": "VariableDeclaration", - "scope": 49362, + "scope": 49359, "src": "512:9:61", "stateVariable": false, "storageLocation": "default", @@ -1109,7 +1109,7 @@ "typeString": "uint8" }, "typeName": { - "id": 49349, + "id": 49346, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "512:5:61", @@ -1124,17 +1124,17 @@ "src": "511:11:61" }, "returnParameters": { - "id": 49354, + "id": 49351, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49353, + "id": 49350, "mutability": "mutable", "name": "vault", "nameLocation": "555:5:61", "nodeType": "VariableDeclaration", - "scope": 49362, + "scope": 49359, "src": "539:21:61", "stateVariable": false, "storageLocation": "default", @@ -1143,7 +1143,7 @@ "typeString": "address payable" }, "typeName": { - "id": 49352, + "id": 49349, "name": "address", "nodeType": "ElementaryTypeName", "src": "539:15:61", @@ -1158,18 +1158,18 @@ ], "src": "538:23:61" }, - "scope": 49436, + "scope": 49433, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49375, + "id": 49372, "nodeType": "FunctionDefinition", "src": "621:121:61", "nodes": [], "body": { - "id": 49374, + "id": 49371, "nodeType": "Block", "src": "696:46:61", "nodes": [], @@ -1178,11 +1178,11 @@ "expression": { "arguments": [ { - "id": 49370, + "id": 49367, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49364, + "referencedDeclaration": 49361, "src": "726:5:61", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1191,7 +1191,7 @@ }, { "hexValue": "30", - "id": 49371, + "id": 49368, "isConstant": false, "isLValue": false, "isPure": true, @@ -1217,18 +1217,18 @@ "typeString": "int_const 0" } ], - "id": 49369, + "id": 49366, "name": "_deployVault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49435, + "referencedDeclaration": 49432, "src": "713:12:61", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$returns$_t_address_payable_$", "typeString": "function (address,uint8) returns (address payable)" } }, - "id": 49372, + "id": 49369, "isConstant": false, "isLValue": false, "isPure": false, @@ -1244,8 +1244,8 @@ "typeString": "address payable" } }, - "functionReturnParameters": 49368, - "id": 49373, + "functionReturnParameters": 49365, + "id": 49370, "nodeType": "Return", "src": "706:29:61" } @@ -1258,17 +1258,17 @@ "name": "deployVault", "nameLocation": "630:11:61", "parameters": { - "id": 49365, + "id": 49362, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49364, + "id": 49361, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:61", "nodeType": "VariableDeclaration", - "scope": 49375, + "scope": 49372, "src": "642:13:61", "stateVariable": false, "storageLocation": "default", @@ -1277,7 +1277,7 @@ "typeString": "address" }, "typeName": { - "id": 49363, + "id": 49360, "name": "address", "nodeType": "ElementaryTypeName", "src": "642:7:61", @@ -1293,17 +1293,17 @@ "src": "641:15:61" }, "returnParameters": { - "id": 49368, + "id": 49365, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49367, + "id": 49364, "mutability": "mutable", "name": "vault", "nameLocation": "689:5:61", "nodeType": "VariableDeclaration", - "scope": 49375, + "scope": 49372, "src": "673:21:61", "stateVariable": false, "storageLocation": "default", @@ -1312,7 +1312,7 @@ "typeString": "address payable" }, "typeName": { - "id": 49366, + "id": 49363, "name": "address", "nodeType": "ElementaryTypeName", "src": "673:15:61", @@ -1327,18 +1327,18 @@ ], "src": "672:23:61" }, - "scope": 49436, + "scope": 49433, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49390, + "id": 49387, "nodeType": "FunctionDefinition", "src": "748:134:61", "nodes": [], "body": { - "id": 49389, + "id": 49386, "nodeType": "Block", "src": "834:48:61", "nodes": [], @@ -1347,11 +1347,11 @@ "expression": { "arguments": [ { - "id": 49385, + "id": 49382, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49377, + "referencedDeclaration": 49374, "src": "864:5:61", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1359,11 +1359,11 @@ } }, { - "id": 49386, + "id": 49383, "name": "num", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49379, + "referencedDeclaration": 49376, "src": "871:3:61", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1382,18 +1382,18 @@ "typeString": "uint8" } ], - "id": 49384, + "id": 49381, "name": "_deployVault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49435, + "referencedDeclaration": 49432, "src": "851:12:61", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$returns$_t_address_payable_$", "typeString": "function (address,uint8) returns (address payable)" } }, - "id": 49387, + "id": 49384, "isConstant": false, "isLValue": false, "isPure": false, @@ -1409,8 +1409,8 @@ "typeString": "address payable" } }, - "functionReturnParameters": 49383, - "id": 49388, + "functionReturnParameters": 49380, + "id": 49385, "nodeType": "Return", "src": "844:31:61" } @@ -1423,17 +1423,17 @@ "name": "deployVault", "nameLocation": "757:11:61", "parameters": { - "id": 49380, + "id": 49377, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49377, + "id": 49374, "mutability": "mutable", "name": "owner", "nameLocation": "777:5:61", "nodeType": "VariableDeclaration", - "scope": 49390, + "scope": 49387, "src": "769:13:61", "stateVariable": false, "storageLocation": "default", @@ -1442,7 +1442,7 @@ "typeString": "address" }, "typeName": { - "id": 49376, + "id": 49373, "name": "address", "nodeType": "ElementaryTypeName", "src": "769:7:61", @@ -1456,12 +1456,12 @@ }, { "constant": false, - "id": 49379, + "id": 49376, "mutability": "mutable", "name": "num", "nameLocation": "790:3:61", "nodeType": "VariableDeclaration", - "scope": 49390, + "scope": 49387, "src": "784:9:61", "stateVariable": false, "storageLocation": "default", @@ -1470,7 +1470,7 @@ "typeString": "uint8" }, "typeName": { - "id": 49378, + "id": 49375, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "784:5:61", @@ -1485,17 +1485,17 @@ "src": "768:26:61" }, "returnParameters": { - "id": 49383, + "id": 49380, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49382, + "id": 49379, "mutability": "mutable", "name": "vault", "nameLocation": "827:5:61", "nodeType": "VariableDeclaration", - "scope": 49390, + "scope": 49387, "src": "811:21:61", "stateVariable": false, "storageLocation": "default", @@ -1504,7 +1504,7 @@ "typeString": "address payable" }, "typeName": { - "id": 49381, + "id": 49378, "name": "address", "nodeType": "ElementaryTypeName", "src": "811:15:61", @@ -1519,38 +1519,38 @@ ], "src": "810:23:61" }, - "scope": 49436, + "scope": 49433, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 49435, + "id": 49432, "nodeType": "FunctionDefinition", "src": "888:297:61", "nodes": [], "body": { - "id": 49434, + "id": 49431, "nodeType": "Block", "src": "977:208:61", "nodes": [], "statements": [ { "expression": { - "id": 49403, + "id": 49400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49399, + "id": 49396, "name": "parameters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49336, + "referencedDeclaration": 49333, "src": "987:10:61", "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$49327_storage", + "typeIdentifier": "t_struct$_Parameters_$49324_storage", "typeString": "struct VaultDeployer.Parameters storage ref" } }, @@ -1559,11 +1559,11 @@ "rightHandSide": { "arguments": [ { - "id": 49401, + "id": 49398, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49392, + "referencedDeclaration": 49389, "src": "1011:5:61", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1578,18 +1578,18 @@ "typeString": "address" } ], - "id": 49400, + "id": 49397, "name": "Parameters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49327, + "referencedDeclaration": 49324, "src": "1000:10:61", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Parameters_$49327_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_Parameters_$49324_storage_ptr_$", "typeString": "type(struct VaultDeployer.Parameters storage pointer)" } }, - "id": 49402, + "id": 49399, "isConstant": false, "isLValue": false, "isPure": false, @@ -1601,33 +1601,33 @@ "src": "1000:17:61", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$49327_memory_ptr", + "typeIdentifier": "t_struct$_Parameters_$49324_memory_ptr", "typeString": "struct VaultDeployer.Parameters memory" } }, "src": "987:30:61", "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$49327_storage", + "typeIdentifier": "t_struct$_Parameters_$49324_storage", "typeString": "struct VaultDeployer.Parameters storage ref" } }, - "id": 49404, + "id": 49401, "nodeType": "ExpressionStatement", "src": "987:30:61" }, { "expression": { - "id": 49424, + "id": 49421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 49405, + "id": 49402, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49397, + "referencedDeclaration": 49394, "src": "1027:5:61", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1646,7 +1646,7 @@ "argumentTypes": [], "expression": { "argumentTypes": [], - "id": 49412, + "id": 49409, "isConstant": false, "isLValue": false, "isPure": false, @@ -1654,31 +1654,31 @@ "nodeType": "NewExpression", "src": "1051:9:61", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Vault_$49181_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Vault_$49178_$", "typeString": "function () returns (contract Vault)" }, "typeName": { - "id": 49411, + "id": 49408, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 49410, + "id": 49407, "name": "Vault", "nameLocations": [ "1055:5:61" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "1055:5:61" }, - "referencedDeclaration": 49181, + "referencedDeclaration": 49178, "src": "1055:5:61", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } }, - "id": 49420, + "id": 49417, "isConstant": false, "isLValue": false, "isPure": false, @@ -1693,11 +1693,11 @@ { "arguments": [ { - "id": 49416, + "id": 49413, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49392, + "referencedDeclaration": 49389, "src": "1094:5:61", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1705,11 +1705,11 @@ } }, { - "id": 49417, + "id": 49414, "name": "num", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49394, + "referencedDeclaration": 49391, "src": "1100:3:61", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1729,7 +1729,7 @@ } ], "expression": { - "id": 49414, + "id": 49411, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1740,7 +1740,7 @@ "typeString": "abi" } }, - "id": 49415, + "id": 49412, "isConstant": false, "isLValue": false, "isPure": true, @@ -1754,7 +1754,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 49418, + "id": 49415, "isConstant": false, "isLValue": false, "isPure": false, @@ -1778,7 +1778,7 @@ "typeString": "bytes memory" } ], - "id": 49413, + "id": 49410, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1789,7 +1789,7 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 49419, + "id": 49416, "isConstant": false, "isLValue": false, "isPure": false, @@ -1808,11 +1808,11 @@ ], "src": "1051:55:61", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Vault_$49181_$salt", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Vault_$49178_$salt", "typeString": "function () returns (contract Vault)" } }, - "id": 49421, + "id": 49418, "isConstant": false, "isLValue": false, "isPure": false, @@ -1824,7 +1824,7 @@ "src": "1051:57:61", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } } @@ -1832,11 +1832,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Vault_$49181", + "typeIdentifier": "t_contract$_Vault_$49178", "typeString": "contract Vault" } ], - "id": 49409, + "id": 49406, "isConstant": false, "isLValue": false, "isPure": true, @@ -1848,14 +1848,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 49408, + "id": 49405, "name": "address", "nodeType": "ElementaryTypeName", "src": "1043:7:61", "typeDescriptions": {} } }, - "id": 49422, + "id": 49419, "isConstant": false, "isLValue": false, "isPure": false, @@ -1879,7 +1879,7 @@ "typeString": "address" } ], - "id": 49407, + "id": 49404, "isConstant": false, "isLValue": false, "isPure": true, @@ -1891,7 +1891,7 @@ "typeString": "type(address payable)" }, "typeName": { - "id": 49406, + "id": 49403, "name": "address", "nodeType": "ElementaryTypeName", "src": "1035:8:61", @@ -1899,7 +1899,7 @@ "typeDescriptions": {} } }, - "id": 49423, + "id": 49420, "isConstant": false, "isLValue": false, "isPure": false, @@ -1921,13 +1921,13 @@ "typeString": "address payable" } }, - "id": 49425, + "id": 49422, "nodeType": "ExpressionStatement", "src": "1027:83:61" }, { "expression": { - "id": 49427, + "id": 49424, "isConstant": false, "isLValue": false, "isPure": false, @@ -1937,14 +1937,14 @@ "prefix": true, "src": "1120:17:61", "subExpression": { - "id": 49426, + "id": 49423, "name": "parameters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49336, + "referencedDeclaration": 49333, "src": "1127:10:61", "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$49327_storage", + "typeIdentifier": "t_struct$_Parameters_$49324_storage", "typeString": "struct VaultDeployer.Parameters storage ref" } }, @@ -1953,7 +1953,7 @@ "typeString": "tuple()" } }, - "id": 49428, + "id": 49425, "nodeType": "ExpressionStatement", "src": "1120:17:61" }, @@ -1961,11 +1961,11 @@ "eventCall": { "arguments": [ { - "id": 49430, + "id": 49427, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49392, + "referencedDeclaration": 49389, "src": "1166:5:61", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1973,11 +1973,11 @@ } }, { - "id": 49431, + "id": 49428, "name": "num", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49394, + "referencedDeclaration": 49391, "src": "1173:3:61", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -1996,18 +1996,18 @@ "typeString": "uint8" } ], - "id": 49429, + "id": 49426, "name": "VaultCreated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 49333, + "referencedDeclaration": 49330, "src": "1152:12:61", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint8_$returns$__$", "typeString": "function (address,uint8)" } }, - "id": 49432, + "id": 49429, "isConstant": false, "isLValue": false, "isPure": false, @@ -2023,7 +2023,7 @@ "typeString": "tuple()" } }, - "id": 49433, + "id": 49430, "nodeType": "EmitStatement", "src": "1147:31:61" } @@ -2035,17 +2035,17 @@ "name": "_deployVault", "nameLocation": "897:12:61", "parameters": { - "id": 49395, + "id": 49392, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49392, + "id": 49389, "mutability": "mutable", "name": "owner", "nameLocation": "918:5:61", "nodeType": "VariableDeclaration", - "scope": 49435, + "scope": 49432, "src": "910:13:61", "stateVariable": false, "storageLocation": "default", @@ -2054,7 +2054,7 @@ "typeString": "address" }, "typeName": { - "id": 49391, + "id": 49388, "name": "address", "nodeType": "ElementaryTypeName", "src": "910:7:61", @@ -2068,12 +2068,12 @@ }, { "constant": false, - "id": 49394, + "id": 49391, "mutability": "mutable", "name": "num", "nameLocation": "931:3:61", "nodeType": "VariableDeclaration", - "scope": 49435, + "scope": 49432, "src": "925:9:61", "stateVariable": false, "storageLocation": "default", @@ -2082,7 +2082,7 @@ "typeString": "uint8" }, "typeName": { - "id": 49393, + "id": 49390, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "925:5:61", @@ -2097,17 +2097,17 @@ "src": "909:26:61" }, "returnParameters": { - "id": 49398, + "id": 49395, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 49397, + "id": 49394, "mutability": "mutable", "name": "vault", "nameLocation": "970:5:61", "nodeType": "VariableDeclaration", - "scope": 49435, + "scope": 49432, "src": "954:21:61", "stateVariable": false, "storageLocation": "default", @@ -2116,7 +2116,7 @@ "typeString": "address payable" }, "typeName": { - "id": 49396, + "id": 49393, "name": "address", "nodeType": "ElementaryTypeName", "src": "954:15:61", @@ -2131,7 +2131,7 @@ ], "src": "953:23:61" }, - "scope": 49436, + "scope": 49433, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" @@ -2141,36 +2141,36 @@ "baseContracts": [ { "baseName": { - "id": 49323, + "id": 49320, "name": "IVaultDeployer", "nameLocations": [ "200:14:61" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 49445, + "referencedDeclaration": 49442, "src": "200:14:61" }, - "id": 49324, + "id": 49321, "nodeType": "InheritanceSpecifier", "src": "200:14:61" } ], "canonicalName": "VaultDeployer", "contractDependencies": [ - 49181 + 49178 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 49436, - 49445 + 49433, + 49442 ], "name": "VaultDeployer", "nameLocation": "183:13:61", - "scope": 49437, + "scope": 49434, "usedErrors": [], "usedEvents": [ - 49333 + 49330 ] } ], diff --git a/src/Constants.sol b/src/Constants.sol index 79498d7..3085c0c 100644 --- a/src/Constants.sol +++ b/src/Constants.sol @@ -16,6 +16,4 @@ library Constants { ISwapRouter internal constant uniswapV3SwapRouter = ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564); - - bytes32 internal constant SWAP_OK = ''; }