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
0x60808060405234601557615f43908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816395c3385614610196575063ef34f29114610032575f80fd5b3461019257602073ffffffffffffffffffffffffffffffffffffffff6101366100bb61005d36610258565b929186949194615c02916100e76040519661007a848601896102ca565b8488528388019461030c8639604051968791858301948590929173ffffffffffffffffffffffffffffffffffffffff60209181604085019616845216910152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866102ca565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826102ca565b51902060405190848201927fff0000000000000000000000000000000000000000000000000000000000000084523060601b602184015260358301526055820152605581526101866075826102ca565b51902016604051908152f35b5f80fd5b34610192576101a436610258565b92919092615c02908184019284841067ffffffffffffffff85111761022b5784936101f59361030c863973ffffffffffffffffffffffffffffffffffffffff91821681529116602082015260400190565b03905ff580156102205760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126101925760043573ffffffffffffffffffffffffffffffffffffffff8116810361019257906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036101925790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761022b5760405256fe60a06040523461033957604051601f615c0238819003918201601f19168301916001600160401b0383118484101761033d578084926040948552833981010312610339578051906001600160a01b038216820361033957602001516001600160a01b03811691828203610339576080525f6101a061007b610351565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06100d9610351565b600181528260208201528260408201528260608201528260808201528260a0820152600160c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526120003016151560011480159061032c575b801561031f575b8015610312575b8015610305575b80156102f8575b80156102e8575b80156102dc575b80156102d0575b80156102c4575b80156102b8575b80156102ac575b80156102a0575b8015610294575b61028157811561026e575f80546001600160a01b03198116841782556101f393916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36101ed81610371565b506103e7565b50604051615727908161047b82396080518181816103b701528181610483015281816105f901528181610f6e015281816110660152818161150c0152818161158d01528181611aa401528181611d6801528181611e280152818161219b0152818161274b01528181613c9901528181613eb501526150200152f35b631e4fbdf760e01b5f525f60045260245ffd5b630732d7b560e51b5f523060045260245ffd5b50600130161515610193565b5060023016151561018c565b50600430161515610185565b5060083016151561017e565b50601030161515610177565b50602030161515610170565b50604030161515610169565b5060803016151560011415610162565b506101003016151561015b565b5061020030161515610154565b506104003016151561014d565b5061080030161515610146565b506110003016151561013f565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761033d57604052565b6001600160a01b0381165f9081525f80516020615bc2833981519152602052604090205460ff166103e2576001600160a01b03165f8181525f80516020615bc283398151915260205260408120805460ff191660011790553391905f80516020615ba28339815191528180a4600190565b505f90565b6001600160a01b0381165f9081525f80516020615be2833981519152602052604090205460ff166103e2576001600160a01b03165f8181525f80516020615be283398151915260205260408120805460ff191660011790553391907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775905f80516020615ba28339815191529080a460019056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146127cc5750806321d0ee701461272e578063248a9ca314612799578063259982e51461272e5780632f2ff15d146126f057806336568abe146126935780634cbf1c79146120715780634de0d32b14611dd5578063575e24b414611ccc5780635e35359e14611b6157806362d0609a14611af25780636c2bbe7e146114ed5780636fe7e6eb14611a43578063715018a6146119d457806375b238fc1461199a57806379502c55146118ed5780637dc0d1d0146118c75780638da5cb5b146118a257806391d148541461185857806391dd73461461155a5780639f063efc146114ed578063a217fddf146114d3578063ac3267ff14611036578063ae7f653a14610fbc578063b47b2fb114610ed2578063b66f9b83146107c7578063b6a8b0fa14610399578063c4e833ce14610660578063d547741f1461061d578063dc4c90d3146105da578063dc98354e1461042d578063e1b4af6914610399578063f0a56fc81461035f578063f2fde38b146102ab5763f564b4771461019d575f80fd5b346102a757600319360160c081126102a75760a0136102a75760a43562ffffff811681036102a757335f9081527f50efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d37694602052604090205460ff1615610257576102559060a061020a36612a75565b205f52600a60205260405f20907fffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff6dffffff000000000000000000000083549260581b169116179055565b005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560245260445ffd5b5f80fd5b346102a75760206003193601126102a7576001600160a01b036102cc612880565b6102d4614979565b168015610333576001600160a01b035f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b346102a7575f6003193601126102a75760206040517ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b07319418152f35b346102a7576103a736612d7a565b5050505050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610405577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a75760e06003193601126102a757610446612880565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a757610479612c13565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361040557604051906104b6826129fa565b6024356001600160a01b03811681036102a75782526044356001600160a01b03811681036102a757602083015260643562ffffff811681036102a75760408301526084358060020b81036102a757606083015260a435916001600160a01b03831683036102a757608081019290925260a09091205f818152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101001790556105b09161056e90615070565b905f52600a60205260405f20907fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff82549160101b64ffffff0000169116179055565b60206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b346102a7575f6003193601126102a75760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a75760406003193601126102a75761025560043561063c61286a565b9061065b610656825f526001602052600160405f20015490565b613095565b61319c565b346102a7575f6003193601126102a7575f6101a0604051610680816129dd565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c060206040516106e3816129dd565b60018152818101905f8252604081015f8152606082015f8152608083015f815260a084015f815260c085016001815260e08601905f82526101008701925f84526101208801945f86526101408901965f88526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b346102a75760206003193601126102a75760043567ffffffffffffffff81116102a7578060040181360360e06003198201126102a757610805614979565b6001600160a01b0361081683612e64565b16151580610eb5575b80610e98575b80610e7b575b15610e1d57604051926020840192602084526001600160a01b0361084e82612896565b166040860152602482016001600160a01b0361086982612896565b16606087015260448301916001600160a01b0361088584612896565b16608088015260648401906001600160a01b036108a183612896565b1660a08901527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd608486013596018612156102a7578486019660246004890135980167ffffffffffffffff89116102a75788360381136102a757889060c08b0160e09052816101208c01526101408b01375f6101408a8a01015260a48601986109298a612896565b6001600160a01b031660e08201528060c48801996109468b612896565b6001600160a01b0316610100830152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810103610140017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810182526109b09082612a16565b51902092604051936020850160208152600254956001600160a01b03871660408201526003546001600160a01b031660608201526004546001600160a01b031660808201526005546001600160a01b031660a082015260c0810160e09052806101208101610a1d90612c7a565b6007546001600160a01b031660e08301526008546001600160a01b0316610100830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018252610a709082612a16565b51902014610dbf576001600160a01b039485610ac5610af493610b23977fffffffffffffffffffffffff000000000000000000000000000000000000000084610ab98199612e64565b16911617600255612e64565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355612e64565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006004541617600455612e64565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060055416176005550191600483013567ffffffffffffffff81116102a75780360360248501136102a757610b7a600654612c29565b601f8111610d1e575b505f93601f8211600114610c6557610c299392826001600160a01b0396938794610bc6945f92610c57575b50505f198260011b9260031b1c191617600655612e64565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075582610bfa82612e64565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006008541617600855612e64565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060095416176009555f80f35b016024013590508880610bae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169460065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f955f5b818110610d035750836001600160a01b0397610bc694610c299897948a9760019510610ce6575b505050811b01600655612e64565b6024910101355f19600384901b60f8161c19169055888080610cd8565b60248484010135885560019097019660209283019201610cb1565b60065f52601f820160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f019060208310610d97575b601f0160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01905b818110610d8c5750610b83565b5f8155600101610d7f565b7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9150610d55565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f636f6e666967206e6f74206368616e67650000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f636f6e66696720686173207a65726f20616464726573730000000000000000006044820152fd5b506001600160a01b03610e9060648501612e64565b16151561082b565b506001600160a01b03610ead60448501612e64565b161515610825565b506001600160a01b03610eca60248501612e64565b16151561081f565b346102a7576101606003193601126102a757610eec612880565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a75760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126102a7576101443567ffffffffffffffff81116102a757610f629036906004016128aa565b50506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610405577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a757600319360160c081126102a75760a0136102a75760a4358015158091036102a757610fea61300d565b60a0610ff536612a75565b205f52600a60205260405f20907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff0083549260081b1691161790555f80f35b346102a75760e06003193601126102a75761105036612a75565b60a4359060c43561105f614979565b60a08220907f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff6110a08483613d8a565b16916110ad831515612ea7565b835f52600a6020526fffffffffffffffffffffffffffffffff61113960405f205460281c60020b93865f52600a60205260405f205460401c60020b9361111e6001600160a01b038a51166001600160a01b03600554161491825f146114ca578b8c935b156114c057509889936149b8565b50505061112a876133bd565b611133876133bd565b91614a6a565b1692831161143c5761115061117b93600f0b612e78565b906040519261115e84612978565b83526020830152600f0b60408201525f6060820152309084613b8b565b908160801d5f81600f0b135f14611434576fffffffffffffffffffffffffffffffff16915b5f81600f0b135f1461142c576fffffffffffffffffffffffffffffffff16935b5f19810190811161137b5782106113a8575f19810190811161137b5783106112f7576001600160a01b03602081845116930151169181611285575b50508161120457005b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252602090829060449082905f905af1801561127a5761125257005b6102559060203d602011611273575b61126b8183612a16565b810190612f32565b503d611261565b6040513d5f823e3d90fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810192909252602090829060449082905f905af1801561127a576112d8575b806111fb565b6112f09060203d6020116112735761126b8183612a16565b50826112d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f496e73756666696369656e7420746f6b656e31207769746864726177616c206160448201527f6d6f756e740000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f496e73756666696369656e7420746f6b656e30207769746864726177616c206160448201527f6d6f756e740000000000000000000000000000000000000000000000000000006064820152fd5b505f936111c0565b505f916111a0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5769746864726177616c20616d6f756e74206578636565647320617661696c6160448201527f626c65206c6971756964697479000000000000000000000000000000000000006064820152fd5b90509889936149b8565b809b8c93611110565b346102a7575f6003193601126102a75760206040515f8152f35b346102a7576114fb36612b6d565b505050505050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610405577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a75760206003193601126102a75760043567ffffffffffffffff81116102a75761158b9036906004016128aa565b7f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b038316918233036117fa5781019281840361014081126102a75760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4061161560405197611601896129c1565b61160a87612896565b895260208701612afc565b926020880193845201126102a75760406116b99461012082519561163887612978565b61164460c08201612a67565b875261165260e08201612a67565b6020880152610100810135848801520135606086015284828801528251906020955f8451936116818986612a16565b8185528551998a95869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855260048501612f6f565b03925af193841561127a575f946117bf575b506001600160a01b0383949551169051918560801d600f0b86600f0b905f81125f14611795576116fd61170f91613371565b84846001600160a01b038851166154ac565b5f811215611763576117359461172c6001600160a01b0392613371565b940151166154ac565b604051918183015280825261174b604083612a16565b61175f604051928284938452830190612d37565b0390f35b925f8413611776575b5050505050611735565b61178b946001600160a01b0391015116615434565b808380808061176c565b5f81136117a3575b5061170f565b6117b99084846001600160a01b03885116615434565b8761179d565b8394506117eb6001600160a01b039160403d6040116117f3575b6117e38183612a16565b810190612f59565b5094506116cb565b503d6117d9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006044820152fd5b346102a75760406003193601126102a75761187161286a565b6004355f5260016020526001600160a01b0360405f2091165f52602052602060ff60405f2054166040519015158152f35b346102a7575f6003193601126102a75760206001600160a01b035f5416604051908152f35b346102a7575f6003193601126102a75760206001600160a01b0360095416604051908152f35b346102a7575f6003193601126102a7576001600160a01b03600254166001600160a01b0360035416906001600160a01b03600454166001600160a01b03600554169061198b6040516119498161194281612c7a565b0382612a16565b6001600160a01b0360075416936001600160a01b036008541693604051978897885260208801526040870152606086015260e0608086015260e0850190612d37565b9160a084015260c08301520390f35b346102a7575f6003193601126102a75760206040517fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758152f35b346102a7575f6003193601126102a7576119ec614979565b5f6001600160a01b0381547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102a7576101006003193601126102a757611a5d612880565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a757611a90612c13565b50611a99612a57565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610405577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a75760206003193601126102a7576004355f52600a60205260c060405f205462ffffff6040519160ff81161515835260ff8160081c16151560208401528060101c60020b60408401528060281c60020b60608401528060401c60020b608084015260581c1660a0820152f35b346102a75760606003193601126102a757611b7a612880565b611b8261286a565b6001600160a01b0360443591611b96614979565b166040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481855afa90811561127a575f91611c9a575b508211611c3c576040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039390931660248401526044808401929092529082526102559190611c37606483612a16565b614f35565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152fd5b90506020813d602011611cc4575b81611cb560209383612a16565b810103126102a7575184611bda565b3d9150611ca8565b346102a7576101406003193601126102a757611ce6612880565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a75760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126102a7576101243567ffffffffffffffff81116102a757611d5c9036906004016128aa565b50506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361040557606062ffffff611d9c613e8d565b907fffffffff00000000000000000000000000000000000000000000000000000000604094939451941684526020840152166040820152f35b346102a75760c06003193601126102a757611def36612a75565b60a435906001600160a01b0382168092036102a757611e0c61300d565b60a08120906fffffffffffffffffffffffffffffffff611e4c837f0000000000000000000000000000000000000000000000000000000000000000613d8a565b1690611e59821515612ea7565b825f52600a602052611eb960405f205460281c60020b845f52600a60205260405f205460401c60020b611e8e85600f0b612e78565b9060405192611e9c84612978565b83526020830152600f0b60408201525f6060820152309083613b8b565b6001600160a01b03602081845116930151168160801d5f81600f0b135f14612069576fffffffffffffffffffffffffffffffff16915b5f81600f0b135f14612061576fffffffffffffffffffffffffffffffff16925b82611ff5575b5082611f56575b50916060917fe3b43c74eda3ceb102b5671a13d2b222882fe5b0fc99567be0a26ba9e4083f899360405192835260208301526040820152a3005b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523060048201526024810184905293919290602090859060449082905f905af192831561127a577fe3b43c74eda3ceb102b5671a13d2b222882fe5b0fc99567be0a26ba9e4083f8994606094611fd6575b5091935091611f1c565b611fee9060203d6020116112735761126b8183612a16565b5087611fcc565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523060048201526024810184905290602090829060449082905f905af1801561127a5715611f155761205a9060203d6020116112735761126b8183612a16565b5086611f15565b505f92611f0f565b505f91611eef565b346102a7576101206003193601126102a75761208b61300d565b60e43562ffffff811660a4358183036102a75760c435926001600160a01b038416918285036102a7576120bd36612a75565b60a081205f818152600a6020526040902080547fffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00001660589590951b6dffffff0000000000000000000000169490941761010017909355936040517f6276cbbe00000000000000000000000000000000000000000000000000000000815261218460048201876001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8460a482015260208160c4815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561127a575f91612655575b50612344916122f76122fc92865f52600a60205261221d8160405f20907fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff82549160101b64ffffff0000169116179055565b867f26518e8162eddb8526ac45e30f642d28d36f216107b5c97fec1a026e3d5de73a60a06001600160a01b038c51168c62ffffff60406001600160a01b03602084015116920151169060405192835260208301528560020b604083015260608201528b6080820152a260608901519260020b906122f26122ad6122a08484612df0565b9562ffffff16809661323f565b895f52600a60205260405f20907fffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff82549160281b67ffffff0000000000169116179055565b612e2a565b61323f565b835f52600a60205260405f20907fffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff82549160401b6affffff0000000000000000169116179055565b600435946001600160a01b038616958681036102a75750602435956001600160a01b038716968781036102a757505f92878282828211612643575b505050845f52600a60205260ff60405f20541615612607575b845f52600a60205260405f205460281c60020b95855f52600a60205260405f205460401c60020b946123c9886133bd565b906123d3876133bd565b90841561252b575099612437846124356001600160a01b0361242c60209f976fffffffffffffffffffffffffffffffff9a976124178d9b6124479b6124739f613a46565b9a8091809386821611612520575b50506139f0565b16888816614b1c565b935b6001600160a01b03309116613a96565b169460405161245581612978565b858152838882015286600f0b60408201525f60608201523091613b8b565b8060801d5f81600f0b125f146125185761249d6fffffffffffffffffffffffffffffffff91612e78565b16905b600f0b5f811215612510576124c56fffffffffffffffffffffffffffffffff91612e78565b16915b60405194868652878601526040850152606084015260808301527ff6ce0596cc52d2a0d79c7990af39900c6e552f542a8c4342ebabb6f63957f9d360a03393a3604051908152f35b505f916124c8565b505f906124a0565b915091505f80612425565b61253b9194508681949793613a10565b92809180966001600160a01b038316106125f2575b5050612595816001600160a01b038061256a8982966139f0565b169116907bffffffffffffffffffffffffffffffff0000000000000000000000008660601b16614e3a565b94169081156125c5576020996124376fffffffffffffffffffffffffffffffff9561244794612473980490612437565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90955090506125956001600160a01b03612550565b5f858152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016610101179055612398565b909950945091505f905088808061237f565b90506020813d60201161268b575b8161267060209383612a16565b810103126102a757518060020b81036102a7576123446121cb565b3d9150612663565b346102a75760406003193601126102a7576126ac61286a565b336001600160a01b038216036126c8576102559060043561319c565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a75760406003193601126102a75761025560043561270f61286a565b90612729610656825f526001602052600160405f20015490565b6130ef565b346102a75761273c366128d8565b50505050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610405577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a75760206003193601126102a75760206127c46004355f526001602052600160405f20015490565b604051908152f35b346102a75760206003193601126102a757600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036102a757817f7965db0b0000000000000000000000000000000000000000000000000000000060209314908115612840575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483612839565b602435906001600160a01b03821682036102a757565b600435906001600160a01b03821682036102a757565b35906001600160a01b03821682036102a757565b9181601f840112156102a75782359167ffffffffffffffff83116102a757602083818601950101116102a757565b906101606003198301126102a7576004356001600160a01b03811681036102a7579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201126102a75760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c8301126102a75760c491610144359067ffffffffffffffff82116102a757612974916004016128aa565b9091565b6080810190811067ffffffffffffffff82111761299457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761299457604052565b6101c0810190811067ffffffffffffffff82111761299457604052565b60a0810190811067ffffffffffffffff82111761299457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761299457604052565b60e435908160020b82036102a757565b35908160020b82036102a757565b60031960a09101126102a75760405190612a8e826129fa565b816004356001600160a01b03811681036102a75781526024356001600160a01b03811681036102a757602082015260443562ffffff811681036102a75760408201526064358060020b81036102a7576060820152608435906001600160a01b03821682036102a75760800152565b91908260a09103126102a757604051612b14816129fa565b8092612b1f81612896565b8252612b2d60208201612896565b602083015260408101359062ffffff821682036102a7576080612b689181936040860152612b5d60608201612a67565b606086015201612896565b910152565b906101a06003198301126102a7576004356001600160a01b03811681036102a7579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201126102a75760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c8301126102a75760c49161014435916101643591610184359067ffffffffffffffff82116102a757612974916004016128aa565b60c435906001600160a01b03821682036102a757565b90600182811c92168015612c70575b6020831014612c4357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612c38565b6006545f9291612c8982612c29565b8082529160018116908115612cfd5750600114612ca4575050565b60065f9081529293509091907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b838310612ce3575060209250010190565b600181602092949394548385870101520191019190612cd2565b60209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6101206003198201126102a7576004356001600160a01b03811681036102a7579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8301126102a75760249160c4359160e43591610104359067ffffffffffffffff82116102a757612974916004016128aa565b9060020b9060020b0390627fffff82137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083121761137b57565b9060020b9060020b01907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212627fffff83131761137b57565b356001600160a01b03811681036102a75790565b600f0b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811461137b575f0390565b15612eae57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f206c697175696469747920617661696c61626c6520666f7220776974686460448201527f726177616c0000000000000000000000000000000000000000000000000000006064820152fd5b908160209103126102a7575180151581036102a75790565b908160209103126102a7575190565b91908260409103126102a7576020825192015190565b612fef612ffd9493612fc183610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a08501526020820151900b60c0840152604081015160e084015260600151610100830152565b816101208201520190612d37565b90565b9190820391821161137b57565b335f9081527f7ea4fe4b1bd1a95e05a1660ceb7679ada20cb5ab55b68fe91cbb5774952dbf89602052604090205460ff161561304557565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194160245260445ffd5b805f52600160205260405f206001600160a01b0333165f5260205260ff60405f205416156130c05750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f205416155f1461319657805f52600160205260405f206001600160a01b0383165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f2054165f1461319657805f52600160205260405f206001600160a01b0383165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b919062ffffff1660020b9182156102a757829060401b600a0b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613357575b156102a7578290600f0b678000000000000000680100000000000000008260401d600f0b9207600f0b1215613310575b60020b02918260020b92830361137b57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188112156132f75750612ffd9192612e2a565b620d89e88113613305575050565b612ffd929350612df0565b60019150017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff82131761137b5782906132b3565b506f7fffffffffffffffffffffffffffffff811315613283565b7f8000000000000000000000000000000000000000000000000000000000000000811461137b575f0390565b8181029291811591840414171561137b57565b9190820180921161137b57565b60020b5f8112156139ea576133d181613371565b905b620d89e8821161398c5760018216156139635770ffffffffffffffffffffffffffffffffff6ffffcb933bd6fad37aa2d162d1a5940015b169160028116613928575b600481166138ed575b600881166138b2575b60108116613877575b6020811661383c575b60408116613801575b608081166137c6575b610100811661378b575b6102008116613750575b6104008116613715575b61080081166136da575b611000811661369f575b6120008116613664575b6140008116613629575b61800081166135ee575b6201000081166135b3575b62020000811661357a575b620400008116613543575b6208000016613510575b5f12613502575b6134f56001600160a01b039163ffffffff8116155f146134f95760ff5f5b169060201c6133b0565b1690565b60ff60016134eb565b80156125c5575f19046134cd565b906b048a170391f7dc42444e8fa28102908082046b048a170391f7dc42444e8fa2149015171561137b5760801c906134c6565b916d2216e584f5fa1ea926041bedfe988102908082046d2216e584f5fa1ea926041bedfe98149015171561137b5760801c916134bc565b916e5d6af8dedb81196699c329225ee6048102908082046e5d6af8dedb81196699c329225ee604149015171561137b5760801c916134b1565b916f09aa508b5b7a84e1c677de54f3e99bc98102908082046f09aa508b5b7a84e1c677de54f3e99bc9149015171561137b5760801c916134a6565b916f31be135f97d08fd981231505542fcfa68102908082046f31be135f97d08fd981231505542fcfa6149015171561137b5760801c9161349b565b916f70d869a156d2a1b890bb3df62baf32f78102908082046f70d869a156d2a1b890bb3df62baf32f7149015171561137b5760801c91613491565b916fa9f746462d870fdf8a65dc1f90e061e58102908082046fa9f746462d870fdf8a65dc1f90e061e5149015171561137b5760801c91613487565b916fd097f3bdfd2022b8845ad8f792aa58258102908082046fd097f3bdfd2022b8845ad8f792aa5825149015171561137b5760801c9161347d565b916fe7159475a2c29b7443b29c7fa6e889d98102908082046fe7159475a2c29b7443b29c7fa6e889d9149015171561137b5760801c91613473565b916ff3392b0822b70005940c7a398e4b70f38102908082046ff3392b0822b70005940c7a398e4b70f3149015171561137b5760801c91613469565b916ff987a7253ac413176f2b074cf7815e548102908082046ff987a7253ac413176f2b074cf7815e54149015171561137b5760801c9161345f565b916ffcbe86c7900a88aedcffc83b479aa3a48102908082046ffcbe86c7900a88aedcffc83b479aa3a4149015171561137b5760801c91613455565b916ffe5dee046a99a2a811c461f1969c30538102908082046ffe5dee046a99a2a811c461f1969c3053149015171561137b5760801c9161344b565b916fff2ea16466c96a3843ec78b326b528618102908082046fff2ea16466c96a3843ec78b326b52861149015171561137b5760801c91613442565b916fff973b41fa98c081472e6896dfb254c08102908082046fff973b41fa98c081472e6896dfb254c0149015171561137b5760801c91613439565b916fffcb9843d60f6159c9db58835c9266448102908082046fffcb9843d60f6159c9db58835c926644149015171561137b5760801c91613430565b916fffe5caca7e10e4e61c3624eaa0941cd08102908082046fffe5caca7e10e4e61c3624eaa0941cd0149015171561137b5760801c91613427565b916ffff2e50f5f656932ef12357cf3c7fdcc8102908082046ffff2e50f5f656932ef12357cf3c7fdcc149015171561137b5760801c9161341e565b916ffff97272373d413259a46990580e213a8102908082046ffff97272373d413259a46990580e213a149015171561137b5760801c91613415565b70ffffffffffffffffffffffffffffffffff70010000000000000000000000000000000061340a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f54000000000000000000000000000000000000000000000000000000000000006044820152fd5b806133d3565b906001600160a01b03809116911603906001600160a01b03821161137b57565b916001600160a01b03613a34612ffd94613a3b9483811684831611613a40576139f0565b1690614b77565b614eba565b906139f0565b91613a3b91612ffd936001600160a01b0382166001600160a01b03821611613a90575b613a896001600160a01b0391613a83838516848316614b1c565b936139f0565b1691614e3a565b90613a69565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b0385166024840152604480840196909652948252929390925f90613aee606486612a16565b84519082855af15f513d82613b66575b505015613b0a57505050565b611c37613b64936001600160a01b03604051917f095ea7b30000000000000000000000000000000000000000000000000000000060208401521660248201525f604482015260448152613b5e606482612a16565b82614f35565b565b909150613b8357506001600160a01b0381163b15155b5f80613afe565b600114613b7c565b91613c405f92613c0f613c8c9560406001600160a01b03815196613bae886129c1565b169586815260208101928352019283526040519460208601525160408501906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b60e08501526020820151900b610100840152604081015161012084015260600151610140830152565b6101408152613c5161016082612a16565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190612d37565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561127a575f91613ce2575b50602081519181808201938492010103126102a7575190565b90503d805f833e613cf38183612a16565b8101906020818303126102a75780519067ffffffffffffffff82116102a7570181601f820112156102a75780519067ffffffffffffffff82116129945760405192613d66601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185612a16565b828452602083830101116102a757815f9260208093018386015e830101525f613cc9565b90613d9490614fa2565b6003810180911161137b576001600160a01b0391602460209260405194859384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa801561127a575f90613e04575b6fffffffffffffffffffffffffffffffff91501690565b506020813d602011613e3e575b81613e1e60209383612a16565b810103126102a7576fffffffffffffffffffffffffffffffff9051613ded565b3d9150613e11565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff83131761137b57565b60a0613e9a366024612afc565b20805f52600a60205260ff60405f205460081c1615614950577f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff613eef8383613d8a565b1690811561492557613f0183826149b8565b5050505f848152600a602052604090819020549081901c600290810b9360289290921c900b91613f318385612df0565b92602435916001600160a01b0383169182841415806102a7576005546001600160a01b0316841491821561491c576044356001600160a01b038116908181036102a757505b60c06001600160a01b03602481600954169360405194859384927f41976e090000000000000000000000000000000000000000000000000000000084521660048301525afa90811561127a575f9161486f575b50906001600160a01b0399613fea8b602061401d950151169c600f0b612e78565b9060405192613ff884612978565b83526020830152600f0b60408201525f6060820152614018366024612afc565b614fc8565b92614029366024612afc565b928a6140ff8b8a16956141287f80000000000000000000000000000000000000000000000000000000000000008e60405197614064896129c1565b1685108752602087019081526040870194855260209e8f956040519261408a8885612a16565b5f8452604051998a9788977ff3cd914c00000000000000000000000000000000000000000000000000000000895260048901906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b51151560a48701525160c4860152511660e4840152610120610104840152610124830190612d37565b03815f885af191821561127a578c998c938c925f9161483a575b508b908860801d5f81600f0b135f14614834576fffffffffffffffffffffffffffffffff81165b808b600f0b9b5f8d135f1461482c576fffffffffffffffffffffffffffffffff16915b82908560801d9283600f0b5f81125f146147f55750506fffffffffffffffffffffffffffffffff6141bc84612e78565b168111156147ee576141e9906fffffffffffffffffffffffffffffffff6141e285612e78565b1690613000565b925b85600f0b955f87125f146147b65750506fffffffffffffffffffffffffffffffff61421586612e78565b168111156147af5761423b906fffffffffffffffffffffffffffffffff6141e287612e78565b975b828991155f14614792575061426661425e6142588c8061339d565b85614cbc565b915b826133b0565b80156147815761427591614d2f565b925b608435988960020b9a8b8b036102a7576142e5956142eb8c6122f78f8d6142b96142af6142a389615070565b9762ffffff8416614dbf565b60020b8092612df0565b91808212614779575b8260020b12614771575b6142d69086612df0565b9262ffffff169a8b809461323f565b94612e2a565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c8260020b125f146146e45750507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2764c9860020b89017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131761137b576144979a61448d996144356143f18d6fffffffffffffffffffffffffffffffff6143bd6144789961447d9d6144879f6143a990600a9b61323f565b9a5b6143b4866133bd565b6111338d6133bd565b16600f0b604051916143ce83612978565b60020b82528760020b8683015260408201525f6060820152614018366024612afc565b9c825f5284845260405f20907fffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff82549160281b67ffffff0000000000169116179055565b5f525260405f20907fffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff82549160401b6affffff0000000000000000169116179055565b613e46565b8460801d90613e46565b98613e46565b90600f0b90613e46565b9480600f0b158015906146d8575b61451f575b5050505050505050926144e1604093927fd06db7d30787f57c9bc64cf2fcac5362c74bcbb3ab63b6b6ace57b25046a2766956149b8565b505050916001600160a01b03845193168352820152a27f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b909192939495969a979998506fffffffffffffffffffffffffffffffff811615155f146146d0576fffffffffffffffffffffffffffffffff16945b6fffffffffffffffffffffffffffffffff8116156146c8576fffffffffffffffffffffffffffffffff16955b604051936145948a86612a16565b5f85526040519b7f234266d7000000000000000000000000000000000000000000000000000000008d52506102a75760048b01526044356001600160a01b0381168091036102a75760248b015260643562ffffff81168091036102a75760448b015250606489015260a435926001600160a01b0384168094036102a757886146548195936fffffffffffffffffffffffffffffffff8a98815f96869860848801521660a48601521660c484015261010060e4840152610104830190612d37565b03925af193841561127a57856040946144e1927fd06db7d30787f57c9bc64cf2fcac5362c74bcbb3ab63b6b6ace57b25046a27669761469b575b81949783969782806144aa565b6146ba90863d88116146c1575b6146b28183612a16565b810190612f4a565b505f61468e565b503d6146a8565b505f95614586565b505f9461455a565b5085600f0b15156144a5565b965f9b9693949899959b9a919a50620d89b4808960020b1361473e575b50505094600a61447d956144979b956144356143f18d6fffffffffffffffffffffffffffffffff6143bd61448d9f9e9a6144789a6144879f6143ab565b919a509192959a949897939650809961475691612df0565b906147609161323f565b9794919596929893905f8080614701565b8391506142cc565b8491506142c2565b50506706f05b59d3b2000092614277565b90506142666147aa6147a48c8061339d565b8b614c11565b614260565b505f61423b565b5f879b939b136147c8575b505061423d565b6147e6929a506fffffffffffffffffffffffffffffffff16906133b0565b975f806147c1565b505f6141e9565b5f9095929513614806575b506141eb565b6148259194506fffffffffffffffffffffffffffffffff8416906133b0565b925f614800565b505f9161418c565b5f614169565b9b5050925089813d8311614868575b6148538183612a16565b810103126102a757898b928d809b5190614142565b503d614849565b91905060c0823d60c011614914575b8161488b60c09383612a16565b810103126102a7576040519160c0830183811067ffffffffffffffff82111761299457604052805183526020810151602084015260408101516040840152606081015160608401526080810151906001600160a01b03821682036102a75760a091608085015201519960ff8b168b036102a75760a083019a909a52906001600160a01b03613fc9565b3d915061487e565b5f915084613f76565b5050507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b6001600160a01b035f5416330361498c57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b60209060246149cf6001600160a01b039594614fa2565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa91821561127a575f92614a36575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011614a62575b81614a5260209383612a16565b810103126102a75751905f614a10565b3d9150614a45565b936001600160a01b0383166001600160a01b03831611614b14575b6001600160a01b03858116959083168611614aa6575050612ffd9350613a46565b92909391946001600160a01b038216115f14614b08578291614acc91614ad29594613a46565b93613a10565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14614b03575090565b905090565b915050612ffd92613a10565b909190614a85565b90808202915f19828209918380841093039280840393846c0100000000000000000000000011156102a75714614b6e576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b905f196c010000000000000000000000008409928280851094039380850394858411156102a75714614c0a576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b908160c01b905f1978010000000000000000000000000000000000000000000000008409928280851094039380850394858411156102a75714614c0a57780100000000000000000000000000000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b90808202915f1982820991838084109303928084039384780100000000000000000000000000000000000000000000000011156102a75714614d26577801000000000000000000000000000000000000000000000000910990828211900360401b910360c01c1790565b50505060c01c90565b90670de0b6b3a76400008202905f19670de0b6b3a76400008409928280851094039380850394858411156102a75714614c0a57670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b818102905f1983820990828083109203918083039283670de0b6b3a764000011156102a75714614e29577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a764000091500490565b91818302915f19818509938380861095039480860395868511156102a75714614eb2579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906fffffffffffffffffffffffffffffffff8216918203614ed757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6c6971756964697479206f766572666c6f7700000000000000000000000000006044820152fd5b905f602091828151910182855af11561127a575f513d614f9957506001600160a01b0381163b155b614f645750565b6001600160a01b03907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60011415614f5d565b604051602081019182526006604082015260408152614fc2606082612a16565b51902090565b90604090815192614fda602085612a16565b5f8452615013835194859384937f5a6bcfda00000000000000000000000000000000000000000000000000000000855260048501612f6f565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561127a575f91615053575090565b61506c915060403d6040116117f3576117e38183612a16565b5090565b6001600160a01b038116906401000276a382101580615417575b156153b95777ffffffffffffffffffffffffffffffffffffffff000000009060201b16806fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c1196171717171717179060808210155f146153a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81820182811161137b571c5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80820191821360011661137b57800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c678000000000000000169060401b1717171717171717171717171717693627a301d71055774c85810290808205693627a301d71055774c85149015171561137b577ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810181811360011661137b5760801d60020b906fdb2df09e81959a81455e260799a0632f8101905f6fdb2df09e81959a81455e260799a0632f8312911290801582169115161761137b5760801d60020b9181830361538c5750905090565b6001600160a01b0361539d846133bd565b1611614b03575090565b81607f03607f811161137b571b615153565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f52000000000000000000000000000000000000000000000000000000000000006044820152fd5b5073fffd8963efd1fc6a506488495d951d5263988d26821061508a565b9192906001600160a01b0316803b156102a7575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1801561127a576154a25750565b5f613b6491612a16565b9091906001600160a01b0316806155225750506001600160a01b03600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af1801561127a576155075750565b61551f9060203d6020116146c1576146b28183612a16565b50565b9092916001600160a01b031691823b156102a757604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf1801561127a576156d5575b506001600160a01b031684308214615654576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156156495791602091849361562c575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561562057506155075750565b604051903d90823e3d90fd5b61564290833d85116112735761126b8183612a16565b505f6155e1565b6040513d85823e3d90fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481019390935291926020928492506044918391905af18015615649579160209184936156b8575b506155e3565b6156ce90833d85116112735761126b8183612a16565b505f6156b2565b6156e29195505f90612a16565b5f936001600160a01b0361557a56fea26469706673582212200b7eb2fd66fc96a06735f4f456e7040535f44f0b5eb8aca13436f66f8df73ed664736f6c634300081a00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0da6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4950efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d37694a26469706673582212208c3094b81a892e86a3ffa10012543a2925fc64efc2d7e7b8a53c0ed6b1bb14b964736f6c634300081a0033