0 txs
0 calls
constructor
No constructor.
functions
predictAddress
viewfunction predictAddress(address poolManager, bytes32 salt, address owner) view returns (address predicted)
deploy
nonpayablefunction deploy(address poolManager, bytes32 salt, address owner) returns (address hook)
events
No events.
errors
No errors.
creation bytecode
0x60808060405234601557614ec7908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816395c3385614610196575063ef34f29114610032575f80fd5b3461019257602073ffffffffffffffffffffffffffffffffffffffff6101366100bb61005d36610258565b929186949194614b86916100e76040519661007a848601896102ca565b8488528388019461030c8639604051968791858301948590929173ffffffffffffffffffffffffffffffffffffffff60209181604085019616845216910152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866102ca565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826102ca565b51902060405190848201927fff0000000000000000000000000000000000000000000000000000000000000084523060601b602184015260358301526055820152605581526101866075826102ca565b51902016604051908152f35b5f80fd5b34610192576101a436610258565b92919092614b86908184019284841067ffffffffffffffff85111761022b5784936101f59361030c863973ffffffffffffffffffffffffffffffffffffffff91821681529116602082015260400190565b03905ff580156102205760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126101925760043573ffffffffffffffffffffffffffffffffffffffff8116810361019257906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036101925790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761022b5760405256fe60a06040523461032257604051601f614b8638819003918201601f19168301916001600160401b03831184841017610326578084926040948552833981010312610322578051906001600160a01b038216820361032257602001516001600160a01b03811691828203610322576080525f6101a061007b61033a565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06100d961033a565b600181528260208201528260408201528260608201528260808201528260a0820152600160c0820152600160e08201528261010082015282610120820152826101408201528261016082015282610180820152015261200030161515600114801590610315575b8015610308575b80156102fb575b80156102ee575b80156102e1575b80156102d1575b80156102c1575b80156102b5575b80156102a9575b801561029d575b8015610291575b8015610285575b8015610279575b610266578115610253575f80546001600160a01b03198116841782556101f493916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36101ee8161035a565b506103d0565b506040516146c2908161046482396080518181816103f1015281816104b90152818161116c015281816113dd015281816115d501528181611b6a01528181612282015281816125af01528181612baf01528181612ca101526137210152f35b631e4fbdf760e01b5f525f60045260245ffd5b630732d7b560e51b5f523060045260245ffd5b50600130161515610194565b5060023016151561018d565b50600430161515610186565b5060083016151561017f565b50601030161515610178565b50602030161515610171565b506040301615156001141561016a565b5060803016151560011415610163565b506101003016151561015c565b5061020030161515610155565b506104003016151561014e565b5061080030161515610147565b5061100030161515610140565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761032657604052565b6001600160a01b0381165f9081525f80516020614b46833981519152602052604090205460ff166103cb576001600160a01b03165f8181525f80516020614b4683398151915260205260408120805460ff191660011790553391905f80516020614b268339815191528180a4600190565b505f90565b6001600160a01b0381165f9081525f80516020614b66833981519152602052604090205460ff166103cb576001600160a01b03165f8181525f80516020614b6683398151915260205260408120805460ff191660011790553391907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775905f80516020614b268339815191529080a460019056fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a7146137ca5750806321d0ee7014613704578063248a9ca314613797578063259982e5146137045780632f2ff15d146136c6578063334410a214612e8c57806336568abe14612e2f5780634cbf1c7914612c575780634de0d32b14612b1c578063508a81dd1461272f578063575e24b4146125125780635e35359e1461233d57806362d0609a146122cd5780636c2bbe7e146115b25780636fe7e6eb1461221d578063715018a6146121ac57806375b238fc1461217157806379502c551461209b5780637dc0d1d0146120745780638da5cb5b1461204e57806391d148541461200357806391dd734614611b355780639a0bf14a14611b0e5780639b44937e146116475780639e252f08146116205780639f063efc146115b2578063a217fddf14611596578063ae7f653a1461151c578063b47b2fb114611340578063b6a8b0fa146103cf578063c4e833ce146111d8578063d547741f14611190578063dc4c90d31461114c578063dc98354e14610461578063e1b4af69146103cf578063f0a56fc814610394578063f2fde38b146102de5763f564b477146101c0575f80fd5b346102db57600319360160c081126102d75760a0136102db5760a43562ffffff811681036102d7577fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582526001602052604082206001600160a01b0333165f5260205260ff60405f205416156102875760a061023b36613a52565b208252600e60205260408220907fffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff6dffffff000000000000000000000083549260581b16911617905580f35b6044827fe2517d3f000000000000000000000000000000000000000000000000000000008152336004527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775602452fd5b5080fd5b80fd5b50346102db5760206003193601126102db576001600160a01b03610300613895565b610308614238565b168015610368576001600160a01b038254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b50346102db57806003193601126102db5760206040517ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b07319418152f35b50346102db576004906103e136613ce6565b5050505050506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361043c577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b7fae18210a000000000000000000000000000000000000000000000000000000008152fd5b50346102db5760e06003193601126102db5761047b613895565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102db576104ae613b7f565b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303611124576040516104eb816139d7565b6024356001600160a01b03811681036111205781526044356001600160a01b038116810361112057602082015260643562ffffff811681036111205760408201526084358060020b810361112057606082015260a4356001600160a01b0381168103611120579060a09160808201522090818152600e602052604081206101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff825416179055818152600e602052604081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556001600160a01b038316926401000276a384101580611103575b156110a55777ffffffffffffffffffffffffffffffffffffffff000000009060201b16806fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c1196171717171717179060808210155f14611093577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818201828111610a99571c5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80820191821360011661103957800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c678000000000000000169060401b1717171717171717171717171717693627a301d71055774c85810290808205693627a301d71055774c851490151715611066577ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc55681018181136001166110395760801d60020b906fdb2df09e81959a81455e260799a0632f810190836fdb2df09e81959a81455e260799a0632f831291129080158216911516176110395760801d60020b818103610946575092506040915b8152600e60205220907fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff82549160101b64ffffff000016911617905560206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b90828212156110325761095882614347565b945b620d89e88611610fd4576001861615610fab5770ffffffffffffffffffffffffffffffffff6ffffcb933bd6fad37aa2d162d1a5940015b169560028116610f70575b60048116610f35575b60088116610efa575b60108116610ebf575b60208116610e84575b60408116610e49575b60808116610e0e575b6101008116610dd3575b6102008116610d98575b6104008116610d5d575b6108008116610d22575b6110008116610ce7575b6120008116610cac575b6140008116610c71575b6180008116610c36575b620100008116610bfb575b620200008116610bc2575b620400008116610b5e575b6208000016610b2b575b838313610acf575b63ffffffff8660201c9616155f14610ac65760ff845b168601809611610a99576001600160a01b03604095961611155f14610a9257505b926108e0565b9050610a8c565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60ff6001610a6b565b948015610afe577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0494610a55565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b946b048a170391f7dc42444e8fa28102908082046b048a170391f7dc42444e8fa21490151715610a995760801c94610a4d565b956d2216e584f5fa1ea926041bedfe988102908082046d2216e584f5fa1ea926041bedfe981490151715610b955760801c95610a43565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b956e5d6af8dedb81196699c329225ee6048102908082046e5d6af8dedb81196699c329225ee6041490151715610b955760801c95610a38565b956f09aa508b5b7a84e1c677de54f3e99bc98102908082046f09aa508b5b7a84e1c677de54f3e99bc91490151715610b955760801c95610a2d565b956f31be135f97d08fd981231505542fcfa68102908082046f31be135f97d08fd981231505542fcfa61490151715610b955760801c95610a22565b956f70d869a156d2a1b890bb3df62baf32f78102908082046f70d869a156d2a1b890bb3df62baf32f71490151715610b955760801c95610a18565b956fa9f746462d870fdf8a65dc1f90e061e58102908082046fa9f746462d870fdf8a65dc1f90e061e51490151715610b955760801c95610a0e565b956fd097f3bdfd2022b8845ad8f792aa58258102908082046fd097f3bdfd2022b8845ad8f792aa58251490151715610b955760801c95610a04565b956fe7159475a2c29b7443b29c7fa6e889d98102908082046fe7159475a2c29b7443b29c7fa6e889d91490151715610b955760801c956109fa565b956ff3392b0822b70005940c7a398e4b70f38102908082046ff3392b0822b70005940c7a398e4b70f31490151715610b955760801c956109f0565b956ff987a7253ac413176f2b074cf7815e548102908082046ff987a7253ac413176f2b074cf7815e541490151715610b955760801c956109e6565b956ffcbe86c7900a88aedcffc83b479aa3a48102908082046ffcbe86c7900a88aedcffc83b479aa3a41490151715610b955760801c956109dc565b956ffe5dee046a99a2a811c461f1969c30538102908082046ffe5dee046a99a2a811c461f1969c30531490151715610b955760801c956109d2565b956fff2ea16466c96a3843ec78b326b528618102908082046fff2ea16466c96a3843ec78b326b528611490151715610b955760801c956109c9565b956fff973b41fa98c081472e6896dfb254c08102908082046fff973b41fa98c081472e6896dfb254c01490151715610b955760801c956109c0565b956fffcb9843d60f6159c9db58835c9266448102908082046fffcb9843d60f6159c9db58835c9266441490151715610b955760801c956109b7565b956fffe5caca7e10e4e61c3624eaa0941cd08102908082046fffe5caca7e10e4e61c3624eaa0941cd01490151715610b955760801c956109ae565b956ffff2e50f5f656932ef12357cf3c7fdcc8102908082046ffff2e50f5f656932ef12357cf3c7fdcc1490151715610b955760801c956109a5565b956ffff97272373d413259a46990580e213a8102908082046ffff97272373d413259a46990580e213a1490151715610b955760801c9561099c565b70ffffffffffffffffffffffffffffffffff700100000000000000000000000000000000610991565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f54000000000000000000000000000000000000000000000000000000000000006044820152fd5b819461095a565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b81607f03607f8111610a99571b6106a7565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f52000000000000000000000000000000000000000000000000000000000000006044820152fd5b5073fffd8963efd1fc6a506488495d951d5263988d2684106105de565b8280fd5b807fae18210a0000000000000000000000000000000000000000000000000000000060049252fd5b50346102db57806003193601126102db5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102db5760406003193601126102db576111d46004356111b0613868565b906111cf6111ca825f526001602052600160405f20015490565b614131565b614277565b5080f35b50346102db57806003193601126102db576020816101c0926101a06040516111ff8161398d565b82815282858201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201528060405161125d8161398d565b6001815283810182815260408201838152606083018481526080840185815260a0850186815260c08601906001825260e0870192600184526101008801948986526101208901968a88526101408a01988b8a526101a06101608c019b8d8d5261018081019d8e52019c8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b50346102db576101606003193601126102db5761135b613895565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102db5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126102db576101443567ffffffffffffffff81116102d7576113d19036906004016138bf565b50506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303611124576001600160a01b03600c5416604051907f51af492000000000000000000000000000000000000000000000000000000000825261144260048301613dfe565b6101243560a4830152600f60c4830152600260e4830152610104820152604081610124817354948869d90fc4cfb9e559d74f64f47bf6873a685af4801561151157829183916114c1575b604083837fffffffff00000000000000000000000000000000000000000000000000000000835192168252600f0b6020820152f35b9150506040813d604011611509575b816114dd604093836139f3565b810103126102d75760206114f08261431a565b9101519081600f0b82036111205760409250905f61148c565b3d91506114d0565b6040513d84823e3d90fd5b50346102db57600319360160c081126102d75760a0136102db5760a4358015158091036102d75761154b6140a9565b60a061155636613a52565b208252600e60205260408220907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff0083549260081b16911617905580f35b50346102db57806003193601126102db57602090604051908152f35b50346102db576004906115c436613ad9565b505050505050506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361043c577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b50346102db57806003193601126102db5760206001600160a01b03600c5416604051908152f35b50346102db5760806003193601126102db5760243560043567ffffffffffffffff82116111205781600401916101606003198236030112611afe5760443567ffffffffffffffff8111611b0a576116a29036906004016138bf565b91906064359267ffffffffffffffff8411611b0657836004019260606003198636030112611b02576116d26140a9565b876001600160a01b03600d5416926117336117206040519a7f9b44937e000000000000000000000000000000000000000000000000000000008c528a60048d0152608060248d015280613d70565b61016060848d01526101e48c0191613dc0565b906024840135976003891015611afe5760a48b01899052604485013560c48c01526040978b97889687956119c1956119b493611806936001600160a01b03906117ee90610144908c60e48561178a606485016138ab565b169101528c61010460848301359101528c61012460a48301359101528c8260c48301359101528c61016460e48301359101528c610184856117ce61010485016138ab565b169101528c6101a4856117e461012485016138ab565b16910152016138ab565b166101c48a01526003198984030160448a0152613dc0565b91600319868403016064870152604461181f8280613e86565b94606085526001600160a01b0361199c6101406119746119366118f86118bb8c8c61188b6118636118508480613d70565b61016060608601526101c0850191613dc0565b928a611871602083016138ab565b166080840152604081013560a08401526060810190613eb8565b9160c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082860301910152613f0b565b6118c860808e018e613eb8565b8d83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160e08f015290613f0b565b61190560a08d018d613eb8565b8c83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0016101008e01529061401d565b61194360c08c018c613eb8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08c8403016101208d015261401d565b9860e0810135828a01526101008101356101608a01526101208101356101808a0152016138ab565b166101a0860152602481013560208601520190613d70565b918a818503910152613dc0565b03925af1908115611af35784938592611a9a575b507f261bf5276691f2ca3f4f5b0804aa42bcb54195a7f08c63d234843763b1f797f39190600203611a4e576040805160608082526006908201527f72656465656d00000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a081015b0390a380f35b6040805160608082526004908201527f6d696e74000000000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a08101611a48565b600294507f261bf5276691f2ca3f4f5b0804aa42bcb54195a7f08c63d234843763b1f797f39250611ae29060403d604011611aec575b611ada81836139f3565b810190613e70565b94909492506119d5565b503d611ad0565b6040513d86823e3d90fd5b8380fd5b8780fd5b8680fd5b8480fd5b50346102db57806003193601126102db5760206001600160a01b03600d5416604051908152f35b50346102db5760206003193601126102db5760043567ffffffffffffffff81116102d757611b679036906004016138bf565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811693843303611fa5578390810103610140811261112057604051946060860186811067ffffffffffffffff821117611f7857604052611bd0856138ab565b865260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0830112611afe5760405191611c09836139d7565b611c15602087016138ab565b8352611c23604087016138ab565b6020840152606086013562ffffff81168103611f74576080917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40916040860152611c6e838901613a44565b6060860152611c7f60a089016138ab565b83860152602089019485520112611afe57604051906080820182811067ffffffffffffffff821117611f4757604052611cba60c08701613a44565b8252611cc860e08701613a44565b95602083019687526040830161010082013581526101206060850192013582528360408a0152845191604051916020830183811067ffffffffffffffff821117611f1a57611d94938a93604098979693611dc7938a5285835289519d8e998a9889977f5a6bcfda00000000000000000000000000000000000000000000000000000000895260048901906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b5160020b60a48701525160020b60c48601525160e485015251610104840152610140610124840152610144830190613ca3565b03925af1938415611f0f578394611ed2575b506001600160a01b03611e739551169051918460801d600f0b9385600f0b948181125f14611ea857611e0d611e1f91614347565b84846001600160a01b03885116614432565b80851215611e7757506001600160a01b036020611e3e611e4796614347565b94015116614432565b60405190602082015260208152611e5f6040826139f3565b604051918291602083526020830190613ca3565b0390f35b84939413611e89575b50505050611e47565b6001600160a01b036020611e9f950151166143a0565b5f808080611e80565b818113611eb6575b50611e1f565b611ecc9084846001600160a01b038851166143a0565b5f611eb0565b9493506040853d604011611f07575b81611eee604093836139f3565b8101031261112057935192936001600160a01b03611dd9565b3d9150611ee1565b6040513d85823e3d90fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5f80fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006044820152fd5b50346102db5760406003193601126102db576001600160a01b036040612027613868565b92600435815260016020522091165f52602052602060ff60405f2054166040519015158152f35b50346102db57806003193601126102db576001600160a01b036020915416604051908152f35b50346102db57806003193601126102db5760206001600160a01b03600b5416604051908152f35b50346102db57806003193601126102db576001600160a01b03600254166001600160a01b0360035416906001600160a01b03600454166001600160a01b036005541690604051916120f6836120ef81613be6565b03846139f3565b6001600160a01b0360075416926121576001600160a01b0360085416916001600160a01b0360095416936001600160a01b03600a541695604051998a998a5260208a0152604089015260608801526101206080880152610120870190613ca3565b9360a086015260c085015260e08401526101008301520390f35b50346102db57806003193601126102db5760206040517fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758152f35b50346102db57806003193601126102db576121c5614238565b806001600160a01b0381547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102db576101006003193601126102db57612238613895565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102db5760049061226e613b7f565b50612277613a34565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361043c577f0a85dc29000000000000000000000000000000000000000000000000000000008152fd5b50346102db5760206003193601126102db57604060c0916004358152600e602052205462ffffff6040519160ff81161515835260ff8160081c16151560208401528060101c60020b60408401528060281c60020b60608401528060401c60020b608084015260581c1660a0820152f35b50346102db5760606003193601126102db57612357613895565b61235f613868565b906001600160a01b0360443592612374614238565b16916040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481875afa9081156125075785916124d5575b508111612477576040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b039490941660248301526044808301939093529181528491906124176064826139f3565b519082855af11561246a5781513d6124615750803b155b612436575080f35b7f5274afe7000000000000000000000000000000000000000000000000000000008252600452602490fd5b6001141561242e565b50604051903d90823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152fd5b90506020813d6020116124ff575b816124f0602093836139f3565b81010312611f7457515f6123b9565b3d91506124e3565b6040513d87823e3d90fd5b50346102db576101406003193601126102db5761252d613895565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102db5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126102db576101243567ffffffffffffffff81116102d7576125a39036906004016138bf565b50506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813303611124576001600160a01b03600b5416604051927fe060fbdb000000000000000000000000000000000000000000000000000000008452600484015261261b60248401613dfe565b60c4358015158091036111205760c484015260e43560e48401526001600160a01b0361264561387e565b16610104840152600e610124840152600f61014484015260026101648401526101848301526060826101a4817354948869d90fc4cfb9e559d74f64f47bf6873a685af491821561246a5781809181946126d7575b60608462ffffff87867fffffffff00000000000000000000000000000000000000000000000000000000604051941684526020840152166040820152f35b92509250506060813d606011612727575b816126f5606093836139f3565b810103126102d7576127068161431a565b604060208301519201519262ffffff841684036102db575090806060612699565b3d91506126e8565b50346102db5760406003193601126102db5760243560043567ffffffffffffffff821161112057816004018236036060600319820112611b0a576127716140a9565b6001600160a01b03600d541693604051947f575be6cc00000000000000000000000000000000000000000000000000000000865260026004870152602486015283604486015260806064860152604085806129a16127cf8780613e86565b606060848401526001600160a01b036129536101406129296128eb6128ad61286f6128138a60e46101606128038c80613d70565b92909301526102448d0191613dc0565b8761282060208b016138ab565b166101048c01528c8901356101248c015261283e60608a018a613eb8565b8c83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c016101448e015290613f0b565b61287c6080890189613eb8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c8c8403016101648d0152613f0b565b6128ba60a0880188613eb8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c8b8403016101848c015261401d565b6128f860c0870187613eb8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c8a8403016101a48b015261401d565b9360e08101356101c48801526101008101356101e4880152610120810135610204880152016138ab565b16610224840152602486013560a48401526129716044870189613d70565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c8584030160c4860152613dc0565b038173933dbcb8c07af74ec1404f22ebd4c7aa78350ff55af4928315612b115786958794612aca575b5035917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9d01821215612ac6570160a48101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd3683900301811215612ac657016004018035919067ffffffffffffffff8311612ac65760208360051b3603910113611b0a5760017f53062b1c1dd477b1a6f9d3a132f37e6bbdb2d2f25cd2a848777ef81077dc823992115f14611a4e576040805160608082526006908201527f72656465656d00000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a08101611a48565b8580fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9d9650612b0791945060403d604011611aec57611ada81836139f3565b95909593906129ca565b6040513d88823e3d90fd5b5034611f745760c0600319360112611f7457612b3736613a52565b60a435906001600160a01b038216809203611f7457612b546140a9565b737e4054bd93eb016ee5fc22612152b11d3c66bf2c90813b15611f7457610124612c1b915f9360405195869485937f15dacdbf0000000000000000000000000000000000000000000000000000000085526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600486015260248501906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b600e60c48401523060e48401526101048301525af48015612c4c57612c3e575080f35b612c4a91505f906139f3565b005b6040513d5f823e3d90fd5b34611f7457610120600319360112611f7457612c716140a9565b6040517fa8ddb3720000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526004356001600160a01b038116809103611f745760248201526024356001600160a01b038116809103611f7457604482015260443562ffffff8116809103611f745760648201526064358060020b809103611f745760848201526084356001600160a01b038116809103611f745760a482015260a43560c48201526001600160a01b03612d51613b7f565b1660e482015260e43562ffffff8116809103611f74576101048201526001600160a01b03612d7d61387e565b16610124820152600e6101448201526002610164820152306101848201526020816101a481737e4054bd93eb016ee5fc22612152b11d3c66bf2c5af48015612c4c575f90612de3575b6020906fffffffffffffffffffffffffffffffff60405191168152f35b506020813d602011612e27575b81612dfd602093836139f3565b81010312611f7457516fffffffffffffffffffffffffffffffff81168103611f7457602090612dc6565b3d9150612df0565b34611f74576040600319360112611f7457612e48613868565b336001600160a01b03821603612e6457612c4a90600435614277565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b34611f74576020600319360112611f745760043567ffffffffffffffff8111611f745780600401813603610120600319820112611f7457612ecb614238565b6001600160a01b03612edc83613d5c565b161515806136a9575b8061368c575b8061366f575b156136115760405190602082019060208252612f0c846138ab565b6001600160a01b031660408401526024850194612f28866138ab565b6001600160a01b031660608501526044810195612f44876138ab565b6001600160a01b031660808601526064820196612f60886138ab565b6001600160a01b031660a08701526084830190612f7d8289613d70565b60c089016101209052610160890190612f9592613dc0565b9760a4850199612fa48b6138ab565b6001600160a01b031660e08a015260c4860197612fc0896138ab565b6001600160a01b03166101008b015260e4870199612fdd8b6138ab565b6001600160a01b03166101208201528061010489019c612ffc8e6138ab565b6001600160a01b0316610140830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101825261303b90826139f3565b51902091604051926020840160208152600254946001600160a01b03861660408201526003546001600160a01b031660608201526004546001600160a01b031660808201526005546001600160a01b031660a082015260c0810161012090528061016081016130a990613be6565b6007546001600160a01b031660e08301526008546001600160a01b03166101008301526009546001600160a01b0316610120830152600a546001600160a01b0316610140830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101825261312090826139f3565b519020146135b3576131c56001600160a01b0394856131967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd996131f4977fffffffffffffffffffffffff00000000000000000000000000000000000000008461318a8199613d5c565b16911617600255613d5c565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355613d5c565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006004541617600455613d5c565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006005541617600555359201821215611f74570160048101359067ffffffffffffffff8211611f74578136036024820113611f7457613255600654613b95565b601f8111613512575b505f90601f831160011461342f576133956001600160a01b039794886132ca8197876133c4986133f39c9b9885985f92613421575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617600655613d5c565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006007541617600755826132fe85613d5c565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060095416176009558261333288613d5c565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a558261336682613d5c565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006008541617600855613d5c565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600d541617600d55613d5c565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55613d5c565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600c541617600c555f80f35b016024013590508e80613293565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f925f5b8181106134f75750946001600160a01b036132ca819a6001886133f39c9b98859b98613395986133c49c889b106134bb575b505050811b01600655613d5c565b6024910101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c191690558e80806134ad565b6024848401013585556001909401936020928301920161347b565b60065f52601f830160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01906020841061358b575b601f0160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01905b818110613580575061325e565b5f8155600101613573565b7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9150613549565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f636f6e666967206e6f74206368616e67650000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f636f6e66696720686173207a65726f20616464726573730000000000000000006044820152fd5b506001600160a01b0361368460648501613d5c565b161515612ef1565b506001600160a01b036136a160448501613d5c565b161515612eeb565b506001600160a01b036136be60248501613d5c565b161515612ee5565b34611f74576040600319360112611f7457612c4a6004356136e5613868565b906136ff6111ca825f526001602052600160405f20015490565b61418b565b34611f7457613712366138ed565b50505050506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361376f577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b34611f74576020600319360112611f745760206137c26004355f526001602052600160405f20015490565b604051908152f35b34611f74576020600319360112611f7457600435907fffffffff000000000000000000000000000000000000000000000000000000008216809203611f7457817f7965db0b000000000000000000000000000000000000000000000000000000006020931490811561383e575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483613837565b602435906001600160a01b0382168203611f7457565b61010435906001600160a01b0382168203611f7457565b600435906001600160a01b0382168203611f7457565b35906001600160a01b0382168203611f7457565b9181601f84011215611f745782359167ffffffffffffffff8311611f745760208381860195010111611f7457565b90610160600319830112611f74576004356001600160a01b0381168103611f74579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc820112611f745760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c830112611f745760c491610144359067ffffffffffffffff8211611f7457613989916004016138bf565b9091565b6101c0810190811067ffffffffffffffff8211176139aa57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176139aa57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176139aa57604052565b60e435908160020b8203611f7457565b35908160020b8203611f7457565b60031960a0910112611f745760405190613a6b826139d7565b816004356001600160a01b0381168103611f745781526024356001600160a01b0381168103611f7457602082015260443562ffffff81168103611f745760408201526064358060020b8103611f74576060820152608435906001600160a01b0382168203611f745760800152565b906101a0600319830112611f74576004356001600160a01b0381168103611f74579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc820112611f745760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c830112611f745760c49161014435916101643591610184359067ffffffffffffffff8211611f7457613989916004016138bf565b60c435906001600160a01b0382168203611f7457565b90600182811c92168015613bdc575b6020831014613baf57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613ba4565b6006545f9291613bf582613b95565b8082529160018116908115613c695750600114613c10575050565b60065f9081529293509091907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b838310613c4f575060209250010190565b600181602092949394548385870101520191019190613c3e565b60209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b610120600319820112611f74576004356001600160a01b0381168103611f74579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc830112611f745760249160c4359160e43591610104359067ffffffffffffffff8211611f7457613989916004016138bf565b356001600160a01b0381168103611f745790565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811215611f7457016020813591019167ffffffffffffffff8211611f74578136038313611f7457565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6024356001600160a01b038116809103611f745781526044356001600160a01b038116809103611f7457602082015260643562ffffff8116809103611f745760408201526084358060020b809103611f7457606082015260a435906001600160a01b038216809203611f745760800152565b9190826040910312611f74576020825192015190565b90357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea182360301811215611f74570190565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811215611f7457016020813591019167ffffffffffffffff8211611f74578160051b36038313611f7457565b906020838281520160208260051b85010193835f915b848310613f315750505050505090565b9091929394957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301855286357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6184360301811215611f74578301613fe5613fca613faf613fa18480613d70565b60a0875260a0870191613dc0565b613fbc6020850185613d70565b908683036020880152613dc0565b613fd76040840184613d70565b908583036040870152613dc0565b60608201359060ff82168203611f745760019360808060209560ff879616606085015201359101529801950193019190949394613f21565b90602083828152019260208260051b82010193835f925b8484106140445750505050505090565b90919293949560208061408a837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030188526140848b88613d70565b90613dc0565b9801940194019294939190614034565b90816020910312611f74575190565b335f9081527f7ea4fe4b1bd1a95e05a1660ceb7679ada20cb5ab55b68fe91cbb5774952dbf89602052604090205460ff16156140e157565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194160245260445ffd5b805f52600160205260405f206001600160a01b0333165f5260205260ff60405f2054161561415c5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f205416155f1461423257805f52600160205260405f206001600160a01b0383165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b6001600160a01b035f5416330361424b57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f2054165f1461423257805f52600160205260405f206001600160a01b0383165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b51907fffffffff0000000000000000000000000000000000000000000000000000000082168203611f7457565b7f80000000000000000000000000000000000000000000000000000000000000008114614373575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9192906001600160a01b0316803b15611f74575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015612c4c5761440e5750565b5f614418916139f3565b565b90816020910312611f7457518015158103611f745790565b9091906001600160a01b0316806144b85750506001600160a01b03600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015612c4c5761448d5750565b6144ae9060203d6020116144b1575b6144a681836139f3565b81019061409a565b50565b503d61449c565b9092916001600160a01b031691823b15611f7457604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf18015612c4c57614670575b506001600160a01b0316843082146145ef576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af18015611f0f579160209184936145c2575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156145b6575061448d5750565b604051903d90823e3d90fd5b6145e190833d85116145e8575b6145d981836139f3565b81019061441a565b505f614577565b503d6145cf565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481019390935291926020928492506044918391905af18015611f0f57916020918493614653575b50614579565b61466990833d85116145e8576145d981836139f3565b505f61464d565b61467d9195505f906139f3565b5f936001600160a01b0361451056fea2646970667358221220292bf55c7410c810e06c6e56e045218d33e934004b0aaf785022b2b1a77fe78964736f6c634300081a00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0da6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4950efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d37694a2646970667358221220b4f254f2b89be1f36ae81c1d9a3579790b0fb5c1f5f75c40effb64b7a3da739164736f6c634300081a0033