1 tx
4 calls
constructor
constructor(address _factory, address _WETH)
functions
_optimalLiquidityUniV2
viewfunction _optimalLiquidityUniV2(address uniswapV2Pair, uint256 amount0Desired, uint256 amount1Desired, uint256 amount0Min, uint256 amount1Min) view returns (uint256 amount0, uint256 amount1)
factory
viewfunction factory() view returns (address)
getBorrowable
viewfunction getBorrowable(address lp, uint8 index) view returns (address borrowable)
getCollateral
viewfunction getCollateral(address lp) view returns (address collateral)
getLendingPool
viewfunction getLendingPool(address lp) view returns (tuple pool)
WETH
viewfunction WETH() view returns (address)
execute
payablefunction execute(address lp, bytes actionsData, bytes permitsData) payable
impermaxBorrow
nonpayablefunction impermaxBorrow(address sender, address borrower, uint256 borrowAmount, bytes data)
impermaxRedeem
nonpayablefunction impermaxRedeem(address sender, uint256 redeemAmount, bytes data)
events
No events.
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b5060405162004c8538038062004c85833981016040819052620000349162000079565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000e4565b80516200007381620000ca565b92915050565b600080604083850312156200008d57600080fd5b60006200009b858562000066565b9250506020620000ae8582860162000066565b9150509250929050565b60006001600160a01b03821662000073565b620000d581620000b8565b8114620000e157600080fd5b50565b614b9180620000f46000396000f3fe6080604052600436106100965760003560e01c8063acb86cbb11610069578063c45a01551161004e578063c45a01551461019f578063d4fa4534146101b4578063ef974e9c146101c757610096565b8063acb86cbb1461016a578063ad5c46481461018a57610096565b80630572bf5f146100b95780633d34d68e146100ef578063876d9d9e1461011d5780639b56d6c91461013d575b60015473ffffffffffffffffffffffffffffffffffffffff1633146100b757fe5b005b3480156100c557600080fd5b506100d96100d4366004613996565b6101e7565b6040516100e691906148af565b60405180910390f35b3480156100fb57600080fd5b5061010f61010a366004613b2c565b61042c565b6040516100e69291906148dc565b34801561012957600080fd5b506100b76101383660046139da565b6105b0565b34801561014957600080fd5b5061015d610158366004613996565b61069e565b6040516100e6919061464a565b34801561017657600080fd5b506100b7610185366004613ac4565b610750565b34801561019657600080fd5b5061015d6108de565b3480156101ab57600080fd5b5061015d6108fa565b6100b76101c2366004613a58565b610916565b3480156101d357600080fd5b5061015d6101e2366004613ba1565b610b39565b6101ef613023565b73ffffffffffffffffffffffffffffffffffffffff80831682526000546040517f0572bf5f000000000000000000000000000000000000000000000000000000008152911690630572bf5f9061024990859060040161464a565b60a06040518083038186803b15801561026157600080fd5b505afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102999190810190613c2e565b6040868101805173ffffffffffffffffffffffffffffffffffffffff93841660208083019190915294841690529382168388015292515183517f6f307dc3000000000000000000000000000000000000000000000000000000008152935191169450636f307dc39350600480840193829003018186803b15801561031c57600080fd5b505afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061035491908101906139bc565b606082015173ffffffffffffffffffffffffffffffffffffffff918216905260408083015160209081015182517f6f307dc30000000000000000000000000000000000000000000000000000000081529251931692636f307dc3926004808201939291829003018186803b1580156103cb57600080fd5b505afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061040391908101906139bc565b606082015173ffffffffffffffffffffffffffffffffffffffff91909116602090910152919050565b6000808561043f575060009050806105a6565b6000808873ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561048857600080fd5b505afa15801561049c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104c09190810190613e07565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060006104f2898484610c44565b9050878111610549578581101561053e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061487e565b60405180910390fd5b8894509250826105a2565b6000610556898486610c44565b90508981111561056257fe5b8781101561059c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061480e565b94508793505b5050505b9550959350505050565b6105b8613054565b6105c482840184613ce9565b905060006105de8260000151600001518360200151610b39565b905073ffffffffffffffffffffffffffffffffffffffff8716301461062f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610535906147fe565b3373ffffffffffffffffffffffffffffffffffffffff82161461067e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610535906147ce565b610695826000015183604001518460600151610ce6565b50505050505050565b600080546040517f0572bf5f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630572bf5f906106f590859060040161464a565b60a06040518083038186803b15801561070d57600080fd5b505afa158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107459190810190613c2e565b509095945050505050565b610758613082565b61076482840184613d5a565b8051519091506000906107769061069e565b905073ffffffffffffffffffffffffffffffffffffffff861630146107c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610535906147fe565b3373ffffffffffffffffffffffffffffffffffffffff821614610816576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610535906147ce565b610832826000015183608001518460a001518560400151610f91565b610849826000015183602001518460c00151610ce6565b602082015160608301516040517fd9fc4b6100000000000000000000000000000000000000000000000000000000815273d9aca9fc66ed91005991f3a3f77f953f67ede0639263d9fc4b61926108a69286929183916004016146d7565b60006040518083038186803b1580156108be57600080fd5b505af41580156108d2573d6000803e3d6000fd5b50505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040517fc6e5944900000000000000000000000000000000000000000000000000000000815273d9aca9fc66ed91005991f3a3f77f953f67ede063925063c6e59449915061099c908490600401614785565b60006040518083038186803b1580156109b457600080fd5b505af41580156109c8573d6000803e3d6000fd5b505050506000341115610a5957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b50505050505b6060610a6785870187613bdb565b9050610a71613023565b610a7a886101e7565b9050610b2f8133737972d53b19ec41044f670e941026c667716204086382b329ce866040518263ffffffff1660e01b8152600401610ab8919061474f565b60006040518083038186803b158015610ad057600080fd5b505af4158015610ae4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b2a9190810190613c96565b610ce6565b5050505050505050565b600060028260ff1610610b78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061481e565b600080546040517f0572bf5f000000000000000000000000000000000000000000000000000000008152829173ffffffffffffffffffffffffffffffffffffffff1690630572bf5f90610bcf90889060040161464a565b60a06040518083038186803b158015610be757600080fd5b505afa158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1f9190810190613c2e565b945094505050508360ff16600014610c375780610c39565b815b925050505b92915050565b6000808411610c7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061485e565b600083118015610c8f5750600082115b610cc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061482e565b82610cd6858463ffffffff61131416565b81610cdd57fe5b04949350505050565b60058151600f811115610cf557fe5b1415610d0057610f8c565b610d086130ed565b8160400151806020019051610d209190810190613c96565b905060078251600f811115610d3157fe5b1415610d8257610d3f61310f565b8260200151806020019051610d579190810190613d3c565b9050610d7c85858360000151846020015185604001518660600151876080015161136f565b50610f7f565b60088251600f811115610d9157fe5b1415610ddc57610d9f61310f565b8260200151806020019051610db79190810190613d3c565b9050610d7c8585836000015184602001518560400151866060015187608001516119ae565b60098251600f811115610deb57fe5b1415610e3957610df961313e565b8260200151806020019051610e119190810190613d8f565b9050610e328585836000015184602001518560400151866060015188611a58565b5050610f8c565b600a8251600f811115610e4857fe5b1415610f6e57610e5661317c565b8260200151806020019051610e6e9190810190613ccb565b90506060610e9e86836000015184602001518560400151866060015187608001518860a001518960c00151611d31565b6040517f413d5e96000000000000000000000000000000000000000000000000000000008152909150737972d53b19ec41044f670e941026c667716204089063413d5e9690610ef39084908790600401614760565b60006040518083038186803b158015610f0b57600080fd5b505af4158015610f1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f659190810190613c96565b92505050610f7f565b610f79848484612328565b50610f8c565b610f8a848483610ce6565b505b505050565b83516040517f70a0823100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190610fe7903090600401614658565b60206040518083038186803b158015610fff57600080fd5b505afa158015611013573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110379190810190613e54565b90506000856000015173ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561108557600080fd5b505afa158015611099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110bd91908101906139bc565b86516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff81169163a9059cbb91611114918690600401614734565b602060405180830381600087803b15801561112e57600080fd5b505af1158015611142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111669190810190613c10565b5085516040517f95a2251f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906395a2251f906111bc90849060040161464a565b602060405180830381600087803b1580156111d657600080fd5b505af11580156111ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061120e9190810190613e54565b506000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44866040518263ffffffff1660e01b815260040161124b919061464a565b6040805180830381600087803b15801561126457600080fd5b505af1158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061129c9190810190613e72565b91509150868210156112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061480e565b85811015610b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061487e565b60008261132357506000610c3e565b8282028284828161133057fe5b0414611368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061483e565b9392505050565b6000876000015173ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156113bb57600080fd5b505afa1580156113cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113f391908101906139bc565b60015460608a01515191925060009173ffffffffffffffffffffffffffffffffffffffff90811691161461147a5760015460608a01516020015173ffffffffffffffffffffffffffffffffffffffff908116911614611472577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611475565b60015b61147d565b60005b9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146115df576001546040517f70a0823100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906370a08231906114fd903090600401614658565b60206040518083038186803b15801561151557600080fd5b505afa158015611529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061154d9190810190613e54565b90508115801561155c57508481115b15611595576000611573888763ffffffff61253816565b905061157f8183612577565b9550611591818763ffffffff61258d16565b9750505b8160011480156115a457508381115b156115dd5760006115bb878663ffffffff61253816565b90506115c78183612577565b94506115d9818663ffffffff61258d16565b9650505b505b8515611671576060890151516040517fd9fc4b6100000000000000000000000000000000000000000000000000000000815273d9aca9fc66ed91005991f3a3f77f953f67ede0639163d9fc4b619161164091908c9087908c906004016146d7565b60006040518083038186803b15801561165857600080fd5b505af415801561166c573d6000803e3d6000fd5b505050505b8415611706576060890151602001516040517fd9fc4b6100000000000000000000000000000000000000000000000000000000815273d9aca9fc66ed91005991f3a3f77f953f67ede0639163d9fc4b61916116d591908c9087908b906004016146d7565b60006040518083038186803b1580156116ed57600080fd5b505af4158015611701573d6000803e3d6000fd5b505050505b831561171d5760608901515161171d9083866125cf565b8215611737576060890151602001516117379083856125cf565b858401156117e65788516040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841691636a62784291611792919060040161464a565b602060405180830381600087803b1580156117ac57600080fd5b505af11580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117e49190810190613e54565b505b86156118745788516040517fd9fc4b6100000000000000000000000000000000000000000000000000000000815273d9aca9fc66ed91005991f3a3f77f953f67ede0639163d9fc4b61916118439186918d91908d906004016146d7565b60006040518083038186803b15801561185b57600080fd5b505af415801561186f573d6000803e3d6000fd5b505050505b885160208a01516040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691636a627842916118cc9160040161464a565b602060405180830381600087803b1580156118e657600080fd5b505af11580156118fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061191e9190810190613e54565b50886020015173ffffffffffffffffffffffffffffffffffffffff16636a627842896040518263ffffffff1660e01b815260040161195c919061464a565b602060405180830381600087803b15801561197657600080fd5b505af115801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108d29190810190613e54565b6000876000015173ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119fa57600080fd5b505afa158015611a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3291908101906139bc565b9050600080611a44838888888861042c565b915091506108d28a8a8a858560008061136f565b60008511611a92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061484e565b6000611b49670de0b6b3a7640000611b3d888b6020015173ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401611ae1919061464a565b60206040518083038186803b158015611af957600080fd5b505afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b319190810190613e54565b9063ffffffff61131416565b9063ffffffff6126f916565b905060606040518060e001604052808a81526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200183815260200187815260200186815260200184815250604051602001611bbc91906148bd565b60405160208183030381529060405290506000896020015173ffffffffffffffffffffffffffffffffffffffff16633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611c1b57600080fd5b505af1158015611c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c539190810190613e54565b90506000611c95670de0b6b3a7640000611b3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87018563ffffffff61131416565b60208c01516040517f19f3400d00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906319f3400d90611cf290309085908890600401614666565b600060405180830381600087803b158015611d0c57600080fd5b505af1158015611d20573d6000803e3d6000fd5b505050505050505050505050505050565b60606000896000015173ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d7f57600080fd5b505afa158015611d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611db791908101906139bc565b9050600080611dc9838989898961042c565b915091506000808b8411611dde576000611de2565b8b84035b8b8411611df0576000611df4565b8b84035b915091506000821180611e075750600081115b611e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610535906147be565b600082118015611e4d5750600081115b15612048576040805160038082526080820190925290816020015b611e706130ed565b815260200190600190039081611e685750506040517fb2e0a0f8000000000000000000000000000000000000000000000000000000008152909650737972d53b19ec41044f670e941026c667716204089063b2e0a0f890611eda9060009086903090600401614796565b60006040518083038186803b158015611ef257600080fd5b505af4158015611f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f4c9190810190613c96565b86600081518110611f5957fe5b60209081029190910101526040517fb2e0a0f8000000000000000000000000000000000000000000000000000000008152737972d53b19ec41044f670e941026c667716204089063b2e0a0f890611fb99060019085903090600401614796565b60006040518083038186803b158015611fd157600080fd5b505af4158015611fe5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261202b9190810190613c96565b8660018151811061203857fe5b6020026020010181905250612247565b6040805160028082526060820190925290816020015b6120666130ed565b81526020019060019003908161205e5790505095508115612161576040517fb2e0a0f8000000000000000000000000000000000000000000000000000000008152737972d53b19ec41044f670e941026c667716204089063b2e0a0f8906120d69060009086903090600401614796565b60006040518083038186803b1580156120ee57600080fd5b505af4158015612102573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121489190810190613c96565b8660008151811061215557fe5b60200260200101819052505b8015612247576040517fb2e0a0f8000000000000000000000000000000000000000000000000000000008152737972d53b19ec41044f670e941026c667716204089063b2e0a0f8906121bc9060019085903090600401614796565b60006040518083038186803b1580156121d457600080fd5b505af41580156121e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261222e9190810190613c96565b8660008151811061223b57fe5b60200260200101819052505b737972d53b19ec41044f670e941026c667716204086317d0c30d8e84870384870386866040518663ffffffff1660e01b815260040161228a9594939291906148ea565b60006040518083038186803b1580156122a257600080fd5b505af41580156122b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526122fc9190810190613c96565b8660018851038151811061230c57fe5b6020026020010181905250505050505098975050505050505050565b60058151600f81111561233757fe5b141561234257610f8c565b61234a6130ed565b81604001518060200190516123629190810190613c96565b905060008251600f81111561237357fe5b14156123de576123816131b9565b82602001518060200190516123999190810190613d1e565b90506123b585826000015186846020015185604001518761273b565b604081015173ffffffffffffffffffffffffffffffffffffffff16301415610d7c575050610f8c565b60018251600f8111156123ed57fe5b1415612429576123fb6131d9565b82602001518060200190516124139190810190613dad565b9050610d7c858260000151868460200151612874565b60028251600f81111561243857fe5b1415612479576124466131b9565b826020015180602001905161245e9190810190613d1e565b9050610d7c85826000015186846020015185604001516129c1565b60038251600f81111561248857fe5b14156124c2576124966131d9565b82602001518060200190516124ae9190810190613de9565b9050610d7c81600001518260200151612bb9565b60048251600f8111156124d157fe5b1415612506576124df6131f0565b82602001518060200190516124f79190810190613dcb565b9050610d7c8160000151612c71565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061486e565b600082820183811015611368576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610535906147de565b60008183106125865781611368565b5090919050565b600061136883836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612dbc565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612602929190614734565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612650919061463e565b6000604051808303816000865af19150503d806000811461268d576040519150601f19603f3d011682016040523d82523d6000602084013e612692565b606091505b50915091508180156126bc5750805115806126bc5750808060200190516126bc9190810190613c10565b6126f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359061488e565b5050505050565b600061136883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e02565b606060058251600f81111561274c57fe5b148061276e575073ffffffffffffffffffffffffffffffffffffffff83163014155b6127d05760405180608001604052808881526020018760ff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001838152506040516020016127bc919061489e565b6040516020818303038152906040526127e1565b604051806020016040528060008152505b905086604001518660ff16600281106127f657fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16631e7dcc0d868587856040518563ffffffff1660e01b8152600401612839949392919061470c565b600060405180830381600087803b15801561285357600080fd5b505af1158015612867573d6000803e3d6000fd5b5050505050505050505050565b600084604001518460ff166002811061288957fe5b60200201519050600061289d828585612e53565b9050806128ab575050610f8a565b73d9aca9fc66ed91005991f3a3f77f953f67ede06363d9fc4b6187606001518760ff16600281106128d857fe5b60200201518685856040518563ffffffff1660e01b81526004016128ff94939291906146d7565b60006040518083038186803b15801561291757600080fd5b505af415801561292b573d6000803e3d6000fd5b505060408051600080825260208201928390527f1e7dcc0d0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff86169350631e7dcc0d9250612993918891819060248101614693565b600060405180830381600087803b1580156129ad57600080fd5b505af11580156108d2573d6000803e3d6000fd5b600085604001518560ff16600281106129d657fe5b60200201519050600086606001518660ff16600281106129f257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a2f9190614658565b60206040518083038186803b158015612a4757600080fd5b505afa158015612a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a7f9190810190613e54565b9050612a8b8482612577565b93506000612a9a838787612e53565b90508082118015612ac1575073ffffffffffffffffffffffffffffffffffffffff84163014155b15612aea57612aea88606001518860ff1660028110612adc57fe5b6020020151858385036125cf565b80612af7575050506126f2565b612b1988606001518860ff1660028110612b0d57fe5b602002015184836125cf565b60408051600080825260208201928390527f1e7dcc0d0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff851691631e7dcc0d91612b7d918a91819060248101614693565b600060405180830381600087803b158015612b9757600080fd5b505af1158015612bab573d6000803e3d6000fd5b505050505050505050505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190612c0e903090600401614658565b60206040518083038186803b158015612c2657600080fd5b505afa158015612c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c5e9190810190613e54565b90508015610f8c57610f8c8383836125cf565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190612cc8903090600401614658565b60206040518083038186803b158015612ce057600080fd5b505afa158015612cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d189190810190613e54565b905080612d255750612db9565b6001546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90612d7b9084906004016148ce565b600060405180830381600087803b158015612d9557600080fd5b505af1158015612da9573d6000803e3d6000fd5b50505050612db78282612f6f565b505b50565b60008184841115612dfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359190614785565b505050900390565b60008183612e3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105359190614785565b506000838581612e4957fe5b0495945050505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663a6afed956040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612e9d57600080fd5b505af1158015612eb1573d6000803e3d6000fd5b50506040517f4d73e9ba0000000000000000000000000000000000000000000000000000000081526000925073ffffffffffffffffffffffffffffffffffffffff87169150634d73e9ba90612f0a90879060040161464a565b60206040518083038186803b158015612f2257600080fd5b505afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f5a9190810190613e54565b9050612f668382612577565b95945050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8416908390604051612fa6919061463e565b60006040518083038185875af1925050503d8060008114612fe3576040519150601f19603f3d011682016040523d82523d6000602084013e612fe8565b606091505b5050905080610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610535906147ee565b6040805160808101825260008082526020820152908101613042613202565b815260200161304f613202565b905290565b6040518060800160405280613067613023565b8152600060208201819052604082015260600161304f6130ed565b6040518060e00160405280613095613023565b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200161304f5b6040805160608101909152806000815260200160608152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b604080518082019091526000808252602082015290565b60408051602081019091526000815290565b60405180604001604052806002906020820280388339509192915050565b8035610c3e81614af7565b8051610c3e81614af7565b600082601f83011261324757600080fd5b600261325a61325582614953565b61492c565b9150818385602084028201111561327057600080fd5b60005b8381101561329c57816132868882613220565b8452506020928301929190910190600101613273565b5050505092915050565b600082601f8301126132b757600080fd5b81356132c561325582614971565b81815260209384019390925082018360005b8381101561329c57813586016132ed8882613402565b84525060209283019291909101906001016132d7565b8051610c3e81614b0b565b60008083601f84011261332057600080fd5b50813567ffffffffffffffff81111561333857600080fd5b60208301915083600182028301111561335057600080fd5b9250929050565b600082601f83011261336857600080fd5b813561337661325582614992565b9150808252602083016020830185838301111561339257600080fd5b61339d838284614a8d565b50505092915050565b600082601f8301126133b757600080fd5b81516133c561325582614992565b915080825260208301602083018583830111156133e157600080fd5b61339d838284614a99565b8035610c3e81614b14565b8051610c3e81614b14565b60006060828403121561341457600080fd5b61341e606061492c565b9050600061342c84846133ec565b825250602082013567ffffffffffffffff81111561344957600080fd5b61345584828501613357565b602083015250604082013567ffffffffffffffff81111561347557600080fd5b61348184828501613357565b60408301525092915050565b60006060828403121561349f57600080fd5b6134a9606061492c565b905060006134b784846133f7565b825250602082015167ffffffffffffffff8111156134d457600080fd5b6134e0848285016133a6565b602083015250604082015167ffffffffffffffff81111561350057600080fd5b613481848285016133a6565b600060e0828403121561351e57600080fd5b61352860e061492c565b90506000613536848461396a565b82525060206135478484830161396a565b602083015250604061355b8482850161396a565b604083015250606061356f8482850161396a565b60608301525060806135838482850161396a565b60808301525060a06135978482850161396a565b60a08301525060c06135ab8482850161396a565b60c08301525092915050565b600061012082840312156135ca57600080fd5b6135d4608061492c565b905060006135e2848461368f565b82525060c06135f384848301613980565b60208301525060e061360784828501613220565b60408301525061010082013567ffffffffffffffff81111561362857600080fd5b61363484828501613402565b60608301525092915050565b60006060828403121561365257600080fd5b61365c606061492c565b9050600061366a848461398b565b825250602061367b8484830161396a565b60208301525060406134818482850161322b565b600060c082840312156136a157600080fd5b6136ab608061492c565b905060006136b98484613220565b82525060206136ca84848301613220565b60208301525060406136de84828501613236565b604083015250608061363484828501613236565b600060a0828403121561370457600080fd5b61370e60a061492c565b9050600061371c848461396a565b825250602061372d8484830161396a565b60208301525060406137418482850161396a565b60408301525060606137558482850161396a565b60608301525060806137698482850161396a565b60808301525092915050565b6000610180828403121561378857600080fd5b61379260e061492c565b905060006137a0848461368f565b82525060c06137b184848301613220565b60208301525060e06137c584828501613220565b6040830152506101006137da8482850161395f565b6060830152506101206137ef8482850161395f565b6080830152506101406138048482850161395f565b60a08301525061016082013567ffffffffffffffff81111561382557600080fd5b6135ab84828501613402565b60006080828403121561384357600080fd5b61384d608061492c565b9050600061385b848461396a565b825250602061386c8484830161396a565b60208301525060406138808482850161396a565b60408301525060606136348482850161322b565b6000604082840312156138a657600080fd5b6138b0604061492c565b905060006138be848461398b565b82525060206138cf8484830161396a565b60208301525092915050565b6000602082840312156138ed57600080fd5b6138f7602061492c565b90506000613905848461322b565b82525092915050565b60006040828403121561392057600080fd5b61392a604061492c565b90506000613938848461322b565b82525060206138cf8484830161322b565b8051610c3e81614b21565b8051610c3e81614b2a565b8035610c3e81614b33565b8051610c3e81614b33565b8051610c3e81614b3c565b8035610c3e81614b45565b8051610c3e81614b45565b6000602082840312156139a857600080fd5b60006139b48484613220565b949350505050565b6000602082840312156139ce57600080fd5b60006139b4848461322b565b6000806000806000608086880312156139f257600080fd5b60006139fe8888613220565b9550506020613a0f88828901613220565b9450506040613a208882890161395f565b935050606086013567ffffffffffffffff811115613a3d57600080fd5b613a498882890161330e565b92509250509295509295909350565b600080600080600060608688031215613a7057600080fd5b6000613a7c8888613220565b955050602086013567ffffffffffffffff811115613a9957600080fd5b613aa58882890161330e565b9450945050604086013567ffffffffffffffff811115613a3d57600080fd5b60008060008060608587031215613ada57600080fd5b6000613ae68787613220565b9450506020613af78782880161395f565b935050604085013567ffffffffffffffff811115613b1457600080fd5b613b208782880161330e565b95989497509550505050565b600080600080600060a08688031215613b4457600080fd5b6000613b508888613220565b9550506020613b618882890161395f565b9450506040613b728882890161395f565b9350506060613b838882890161395f565b9250506080613b948882890161395f565b9150509295509295909350565b60008060408385031215613bb457600080fd5b6000613bc08585613220565b9250506020613bd185828601613980565b9150509250929050565b600060208284031215613bed57600080fd5b813567ffffffffffffffff811115613c0457600080fd5b6139b4848285016132a6565b600060208284031215613c2257600080fd5b60006139b48484613303565b600080600080600060a08688031215613c4657600080fd5b6000613c528888613303565b9550506020613c6388828901613954565b9450506040613c748882890161322b565b9350506060613c858882890161322b565b9250506080613b948882890161322b565b600060208284031215613ca857600080fd5b815167ffffffffffffffff811115613cbf57600080fd5b6139b48482850161348d565b600060e08284031215613cdd57600080fd5b60006139b4848461350c565b600060208284031215613cfb57600080fd5b813567ffffffffffffffff811115613d1257600080fd5b6139b4848285016135b7565b600060608284031215613d3057600080fd5b60006139b48484613640565b600060a08284031215613d4e57600080fd5b60006139b484846136f2565b600060208284031215613d6c57600080fd5b813567ffffffffffffffff811115613d8357600080fd5b6139b484828501613775565b600060808284031215613da157600080fd5b60006139b48484613831565b600060408284031215613dbf57600080fd5b60006139b48484613894565b600060208284031215613ddd57600080fd5b60006139b484846138db565b600060408284031215613dfb57600080fd5b60006139b4848461390e565b600080600060608486031215613e1c57600080fd5b6000613e288686613949565b9350506020613e3986828701613949565b9250506040613e4a86828701613975565b9150509250925092565b600060208284031215613e6657600080fd5b60006139b4848461396a565b60008060408385031215613e8557600080fd5b6000613e91858561396a565b9250506020613bd18582860161396a565b6000613eae8383613ed1565b505060200190565b600061136883836144b8565b613ecb81614a56565b82525050565b613ecb816149f9565b613ee3816149e1565b613eed81846149eb565b9250613ef8826149d8565b8060005b83811015613f26578151613f108782613ea2565b9650613f1b836149db565b925050600101613efc565b505050505050565b6000613f39826149e7565b613f4381856149f0565b935083602082028501613f55856149db565b8060005b85811015613f8f5784840389528151613f728582613eb6565b9450613f7d836149db565b60209a909a0199925050600101613f59565b5091979650505050505050565b6000613fa7826149e7565b613fb181856149f0565b9350613fc1818560208601614a99565b613fca81614ac5565b9093019392505050565b6000613fdf826149e7565b613fe981856149eb565b9350613ff9818560208601614a99565b9290920192915050565b613ecb81614a61565b613ecb81614a6c565b613ecb81614a77565b600061402b6023836149f0565b7f496d7065726d6178526f757465723a204e4f5f41435455414c5f424f52524f5781527f494e470000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061408a6023836149f0565b7f496d7065726d6178526f757465723a20554e415554484f52495a45445f43414c81527f4c45520000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006140e9601b836149f0565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006141226034836149f0565b7f5472616e7366657248656c7065723a3a736166655472616e736665724554483a81527f20455448207472616e73666572206661696c6564000000000000000000000000602082015260400192915050565b60006141816021836149f0565b7f496d7065726d6178526f757465723a2053454e4445525f4e4f545f524f55544581527f5200000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006141e06025836149f0565b7f496d7065726d6178526f757465723a20494e53554646494349454e545f305f4181527f4d4f554e54000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061423f601e836149f0565b7f496d7065726d6178526f757465723a20494e4445585f544f4f5f484947480000815260200192915050565b60006142786028836149f0565b7f556e697377617056324c6962726172793a20494e53554646494349454e545f4c81527f4951554944495459000000000000000000000000000000000000000000000000602082015260400192915050565b60006142d76021836149f0565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614336601b836149f0565b7f496d7065726d6178526f757465723a2052454445454d5f5a45524f0000000000815260200192915050565b600061436f6025836149f0565b7f556e697377617056324c6962726172793a20494e53554646494349454e545f4181527f4d4f554e54000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006143ce601e836149f0565b7f496d7065726d6178526f757465723a20494e56414c49445f414354494f4e0000815260200192915050565b60006144076025836149f0565b7f496d7065726d6178526f757465723a20494e53554646494349454e545f315f4181527f4d4f554e54000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614466602d836149f0565b7f5472616e7366657248656c7065723a3a736166655472616e736665723a20747281527f616e73666572206661696c656400000000000000000000000000000000000000602082015260400192915050565b805160009060608401906144cc8582614003565b50602083015184820360208601526144e48282613f9c565b91505060408301518482036040860152612f668282613f9c565b80516000906101208401906145138582614552565b50602083015161452660c0860182614635565b50604083015161453960e0860182613ed1565b506060830151848203610100860152612f6682826144b8565b805160c08301906145638482613ed1565b5060208201516145766020850182613ed1565b5060408201516145896040850182613eda565b506060820151610f8a6080850182613eda565b80516000906101808401906145b18582614552565b5060208301516145c460c0860182613ed1565b5060408301516145d760e0860182613ed1565b5060608301516145eb61010086018261462c565b5060808301516145ff61012086018261462c565b5060a083015161461361014086018261462c565b5060c0830151848203610160860152612f6682826144b8565b613ecb816149d8565b613ecb81614a50565b60006113688284613fd4565b60208101610c3e8284613ed1565b60208101610c3e8284613ec2565b606081016146748286613ec2565b614681602083018561462c565b8181036040830152612f668184613f9c565b608081016146a18287613ed1565b6146ae6020830186613ec2565b6146bb604083018561400c565b81810360608301526146cd8184613f9c565b9695505050505050565b608081016146e58287613ed1565b6146f26020830186613ed1565b6146ff6040830185613ed1565b612f66606083018461462c565b6080810161471a8287613ed1565b6147276020830186613ed1565b6146bb604083018561462c565b604081016147428285613ed1565b611368602083018461462c565b602080825281016113688184613f2e565b604080825281016147718185613f2e565b905081810360208301526139b481846144b8565b602080825281016113688184613f9c565b606081016147a48286614015565b6147b1602083018561462c565b6139b46040830184613ec2565b60208082528101610c3e8161401e565b60208082528101610c3e8161407d565b60208082528101610c3e816140dc565b60208082528101610c3e81614115565b60208082528101610c3e81614174565b60208082528101610c3e816141d3565b60208082528101610c3e81614232565b60208082528101610c3e8161426b565b60208082528101610c3e816142ca565b60208082528101610c3e81614329565b60208082528101610c3e81614362565b60208082528101610c3e816143c1565b60208082528101610c3e816143fa565b60208082528101610c3e81614459565b6020808252810161136881846144fe565b60c08101610c3e8284614552565b60208082528101611368818461459c565b60208101610c3e828461462c565b60408101614742828561462c565b60a081016148f8828861462c565b614905602083018761462c565b614912604083018661462c565b61491f606083018561462c565b6146cd608083018461462c565b60405181810167ffffffffffffffff8111828210171561494b57600080fd5b604052919050565b600067ffffffffffffffff82111561496a57600080fd5b5060200290565b600067ffffffffffffffff82111561498857600080fd5b5060209081020190565b600067ffffffffffffffff8211156149a957600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b90565b60200190565b50600290565b5190565b919050565b90815260200190565b6000610c3e82614a26565b151590565b806149eb81614aed565b6dffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b62ffffff1690565b63ffffffff1690565b60ff1690565b6000610c3e82614a82565b6000610c3e82614a09565b6000610c3e826149d8565b6000610c3e82614a50565b6000610c3e826149f9565b82818337506000910152565b60005b83811015614ab4578181015183820152602001614a9c565b83811115610f8a5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60108110612db957fe5b614b00816149f9565b8114612db957600080fd5b614b0081614a04565b60108110612db957600080fd5b614b0081614a13565b614b0081614a3f565b614b00816149d8565b614b0081614a47565b614b0081614a5056fea365627a7a723158200e37ad0d7df62883e7340589ab839e3c7a51dfa749f53daaea88b8b57eda73546c6578706572696d656e74616cf564736f6c634300051000400000000000000000000000008c3736e2fe63cc2cd89ee228d9dbcab6ce5b767b00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1