0 txs
30 calls
constructor
No constructor.
functions
addBackingToken
nonpayablefunction addBackingToken(address morpho, tuple morphoMarketParams, uint256 amount, bool cappedMax)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
unloop
nonpayablefunction unloop(address morpho, tuple morphoMarketParams, tuple unloopInfo)
events
AddBackingTokenToLong
event AddBackingTokenToLong(address indexed sender, address indexed exposureToken, address indexed backingToken, uint256 amount, bytes32 borrowMarketId)
UnloopLongExecuted
event UnloopLongExecuted(address indexed sender, address indexed exposureToken, address indexed backingToken, uint256 exposureAmountDecrease, uint256 backingAmountDecrease, uint256 exposureTokensSold, uint256 backingTokensBought, bytes32 borrowMarketId)
errors
ExitBackingAmountTooHigh
error ExitBackingAmountTooHigh(address token, uint256 attemptedExitAmount, uint256 availableExitAmount)
InvalidCaller
error InvalidCaller()
InvalidMarketParams
error InvalidMarketParams()
NonZeroExitOnMaxUnloop
error NonZeroExitOnMaxUnloop(address token, uint256 exitAmount)
ReentrantCall
error ReentrantCall()
SwapTooExpensive
error SwapTooExpensive(address token, uint256 minAmountOut, uint256 actualAmountOut)
UnrecognizedChain
error UnrecognizedChain(uint256)
creation bytecode
0x608060405234601c57600e6020565b613ab161002b8239613ab190f35b6026565b60405190565b5f80fdfe60806040526004361015610013575b610486565b61001d5f3561004c565b8063f4aadf4e14610047578063fa173a5f146100425763fa461e330361000e5761044f565b610355565b6102b2565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61008690610064565b90565b6100928161007d565b0361009957565b5f80fd5b905035906100aa82610089565b565b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906100f1906100b0565b810190811067ffffffffffffffff82111761010b57604052565b6100ba565b9061012361011c610052565b92836100e7565b565b90565b61013181610125565b0361013857565b5f80fd5b9050359061014982610128565b565b919060a0838203126101bb576101b49061016560a0610110565b93610172825f830161009d565b5f860152610183826020830161009d565b6020860152610195826040830161009d565b60408601526101a7826060830161009d565b606086015260800161013c565b6080830152565b6100ac565b62ffffff1690565b6101d1816101c0565b036101d857565b5f80fd5b905035906101e9826101c8565b565b919060c08382031261026d576102669061020560c0610110565b93610212825f830161009d565b5f860152610223826020830161009d565b602086015261023582604083016101dc565b6040860152610247826060830161013c565b6060860152610259826080830161013c565b608086015260a00161013c565b60a0830152565b6100ac565b9091610180828403126102a8576102a561028e845f850161009d565b9361029c816020860161014b565b9360c0016101eb565b90565b61005c565b5f0190565b346102e1576102cb6102c5366004610272565b91611016565b6102d3610052565b806102dd816102ad565b0390f35b610058565b151590565b6102f4816102e6565b036102fb57565b5f80fd5b9050359061030c826102eb565b565b6101008183031261035057610325825f830161009d565b9261034d610336846020850161014b565b936103448160c0860161013c565b9360e0016102ff565b90565b61005c565b346103875761037161036836600461030e565b929190916114a5565b610379610052565b80610383816102ad565b0390f35b610058565b90565b6103988161038c565b0361039f57565b5f80fd5b905035906103b08261038f565b565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156103f85781359167ffffffffffffffff83116103f35760200192600183028401116103ee57565b6103ba565b6103b6565b6103b2565b9160608383031261044a57610414825f85016103a3565b9261042283602083016103a3565b92604082013567ffffffffffffffff81116104455761044192016103be565b9091565b610060565b61005c565b346104815761046b6104623660046103fd565b9291909161171b565b610473610052565b8061047d816102ad565b0390f35b610058565b5f80fd5b5f1c90565b90565b6104a66104a16104ab92610125565b61048f565b610125565b90565b6104ba6104bf9161048a565b610492565b90565b90565b6104d96104d46104de926104c2565b61048f565b610125565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61051d61052391939293610125565b92610125565b820391821161052e57565b6104e1565b90565b5f1b90565b61054f61054a61055492610125565b610536565b610533565b90565b61059b6105966105867f951ae9fc8e231369dc30d9a40f12c78bb800223594870e32a7cda666d14d45d56104ae565b61059060016104c5565b9061050e565b61053b565b90565b5f90565b9190916105ad610557565b916105b661059e565b50825c6105dc6105d66105d16105cc60016104c5565b61053b565b610533565b91610533565b146105f3575f936105f0926001855d610bfc565b5d565b5f7f37ed32e800000000000000000000000000000000000000000000000000000000815280610624600482016102ad565b0390fd5b610632905161007d565b90565b61063f9051610125565b90565b90565b61065961065461065e92610642565b61048f565b610125565b90565b61066a9061007d565b9052565b61067790610125565b9052565b91602061069c92949361069560408201965f830190610661565b019061066e565b565b5f90565b6106b66106b16106bb92610064565b61048f565b610064565b90565b6106c7906106a2565b90565b6106d3906106be565b90565b6106df906106a2565b90565b6106eb906106d6565b90565b6106f7906106d6565b90565b5f80fd5b60e01b90565b9050519061071182610128565b565b6fffffffffffffffffffffffffffffffff1690565b61073181610713565b0361073857565b5f80fd5b9050519061074982610728565b565b919060608382031261079757610790906107656060610110565b93610772825f8301610704565b5f860152610783826020830161073c565b602086015260400161073c565b6040830152565b6100ac565b906060828203126107b5576107b2915f0161074b565b90565b61005c565b6107c390610533565b90565b6107cf906107ba565b9052565b9160206107f49294936107ed60408201965f8301906107c6565b0190610661565b565b6107fe610052565b3d5f823e3d90fd5b6108109051610713565b90565b61082761082261082c92610713565b61048f565b610125565b90565b61083990516101c0565b90565b610845906106a2565b90565b6108519061083c565b90565b61085d906106d6565b90565b90565b61087761087261087c92610860565b61048f565b610064565b90565b61089c73fffd8963efd1fc6a506488495d951d5263988d26610863565b90565b6108b36108ae6108b8926104c2565b61048f565b610064565b90565b6108c76108cd91610064565b91610064565b90039073ffffffffffffffffffffffffffffffffffffffff82116108ed57565b6104e1565b90565b61090961090461090e926108f2565b61048f565b610064565b90565b61091f6401000276a36108f5565b90565b61092e61093491610064565b91610064565b019073ffffffffffffffffffffffffffffffffffffffff821161095357565b6104e1565b6109626080610110565b90565b52565b52565b906109759061007d565b9052565b52565b6109859061007d565b9052565b610992906101c0565b9052565b906040806109ca936109ae5f8201515f86019061097c565b6109c06020820151602086019061097c565b0151910190610989565b565b6109d590610125565b9052565b9060a080610a43936109f15f8201515f86019061097c565b610a036020820151602086019061097c565b610a1560408201516040860190610989565b610a27606082015160608601906109cc565b610a39608082015160808601906109cc565b01519101906109cc565b565b90608080610a9d93610a5d5f8201515f86019061097c565b610a6f6020820151602086019061097c565b610a816040820151604086019061097c565b610a936060820151606086019061097c565b01519101906109cc565b565b906101406060610ae793610ab95f8201515f860190610996565b610aca6020820151838601906109d9565b610add604082015161012086019061097c565b0151910190610a45565b565b9190610afd905f6101e08501940190610a9f565b565b90505190610b0c8261038f565b565b9190604083820312610b365780610b2a610b33925f8601610aff565b93602001610aff565b90565b61005c565b610b44906102e6565b9052565b610b519061038c565b9052565b610b5e90610064565b9052565b5190565b60209181520190565b90825f9392825e0152565b610b99610ba2602093610ba793610b9081610b62565b93848093610b66565b95869101610b6f565b6100b0565b0190565b9193610be2610bf99694610bd8610bec9497610bce60a08801995f890190610661565b6020870190610b3b565b6040850190610b48565b6060830190610b55565b6080818403910152610b7a565b90565b9190610c06611d93565b610c1260208201610628565b610c2e610c28610c235f8601610628565b61007d565b9161007d565b14158015610fe6575b610fb157610c4760608301610635565b610c79610c737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610125565b91610125565b1480610f8b575b610f3a57610c8f5f8301610628565b92610c9c60208401610628565b93610ca561069e565b50610cb260608501610635565b610ce4610cde7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610125565b91610125565b145f14610f2857610cfc610cf7836106ca565b6106e2565b60606393c5206291610d0d86611dac565b90610d32610d1a306106ee565b94610d3d610d26610052565b968795869485946106fe565b8452600484016107d3565b03915afa8015610f23576040610d5f91610d64935f91610ef5575b5001610806565b610813565b945b8181610d719061007d565b90610d7b9061007d565b10919085604001610d8b9061082f565b90610d9592611e29565b93610d9e61204c565b85610da89161240f565b610db190610848565b610dba90610854565b9263128acb089030610dcb906106ee565b958498610dd790612555565b945f1497610e8295610e6e5f96610e4b610e8d96610e42610e5f9760409f610ed157610e3a610e17610e07610911565b610e11600161089f565b90610922565b985b95939193610e31610e28610958565b978f8901610965565b60208701610968565b8f850161096b565b60608301610979565b610e53610052565b94859160208301610ae9565b602082018103825203846100e7565b610e76610052565b9a8b998a9889976106fe565b875260048701610bab565b03925af18015610ecc57610e9f575b50565b610ebf9060403d8111610ec5575b610eb781836100e7565b810190610b0e565b50610e9c565b503d610ead565b6107f6565b610e3a610eef610edf61087f565b610ee9600161089f565b906108bb565b98610e19565b610f16915060603d8111610f1c575b610f0e81836100e7565b81019061079c565b5f610d58565b503d610f04565b6107f6565b610f3460608501610635565b94610d66565b50610f536080610f4c60208401610628565b9201610635565b90610f875f9283927f3cfcfff60000000000000000000000000000000000000000000000000000000084526004840161067b565b0390fd5b50610f9860808301610635565b610faa610fa45f610645565b91610125565b1415610c80565b5f7f494e780700000000000000000000000000000000000000000000000000000000815280610fe2600482016102ad565b0390fd5b50610ff25f8201610628565b61100f61100961100460208601610628565b61007d565b9161007d565b1415610c37565b9061102192916105a2565b565b909261102d610557565b9261103661059e565b50835c61105c61105661105161104c60016104c5565b61053b565b610533565b91610533565b14611073575f94611070936001865d611288565b5d565b5f7f37ed32e8000000000000000000000000000000000000000000000000000000008152806110a4600482016102ad565b0390fd5b6110b1906106a2565b90565b6110bd906110a8565b90565b6110c9906106d6565b90565b906020828203126110e5576110e2915f01610704565b90565b61005c565b91906110fd905f60208501940190610661565b565b67ffffffffffffffff811161111d576111196020916100b0565b0190565b6100ba565b9061113461112f836110ff565b610110565b918252565b369037565b9061116361114b83611122565b9260208061115986936110ff565b9201910390611139565b565b919060408382031261118d578061118161118a925f8601610704565b93602001610704565b90565b61005c565b906080806111ea936111aa5f8201515f86019061097c565b6111bc6020820151602086019061097c565b6111ce6040820151604086019061097c565b6111e06060820151606086019061097c565b01519101906109cc565b565b6111f590610645565b9052565b9193611231611249969461122761123b949761121d6101208801995f890190611192565b60a087019061066e565b60c08501906111ec565b60e0830190610661565b610100818403910152610b7a565b90565b611255906106d6565b90565b61126190610533565b9052565b91602061128692949361127f60408201965f83019061066e565b0190611258565b565b90926113d7575b6112b96112be916112b46112ac6112a75f8801610628565b6110b4565b828691612642565b6106ca565b6106e2565b60406320b76e819184906113015f869561130c826112db306106ee565b6112ec6112e786610645565b61113e565b916112f5610052565b9a8b998a9889976106fe565b8752600487016111f9565b03925af180156113d2576113a5575b50611325306106ee565b61133160208401610628565b9061134f61134a6113435f8701610628565b9495611dac565b6107ba565b61138b61138561137f7f0f2a3121f7029e01e9f13a42de098d53746dd0f794bfd3406b2c47b73e6acea39461124c565b9461124c565b9461124c565b946113a0611397610052565b92839283611265565b0390a4565b6113c59060403d81116113cb575b6113bd81836100e7565b810190611165565b5061131b565b503d6113b3565b6107f6565b9061142a60206113f86113f36113ee5f8801610628565b6110b4565b6110c0565b6370a082319061141f61140a306106ee565b92611413610052565b958694859384936106fe565b8352600483016110ea565b03915afa9182156114a0576112be926112b9925f91611472575b508161145861145283610125565b91610125565b11155f1461146b57505b9291505061128f565b9050611462565b611493915060203d8111611499575b61148b81836100e7565b8101906110cc565b5f611444565b503d611481565b6107f6565b906114b1939291611023565b565b91906060838203126114ff576114f8906114cd6060610110565b936114da825f830161009d565b5f8601526114eb826020830161009d565b60208601526040016101dc565b6040830152565b6100ac565b91906101e0838203126115655761155e9061151f6080610110565b9361152c825f83016114b3565b5f86015261153d82606083016101eb565b602086015261155082610120830161009d565b60408601526101400161014b565b6060830152565b6100ac565b906101e08282031261158457611581915f01611504565b90565b61005c565b61159d6115986115a292610642565b61048f565b61038c565b90565b6115ae9061038c565b7f800000000000000000000000000000000000000000000000000000000000000081146115da575f0390565b6104e1565b6115f36115ee6115f89261038c565b61048f565b610125565b90565b60409061162461162b949695939661161a60608401985f850190610661565b602083019061066e565b019061066e565b565b919361166561167d969461165b61166f94976116516101208801995f890190611192565b60a087019061066e565b60c085019061066e565b60e0830190610661565b610100818403910152610b7a565b90565b5f91031261168a57565b61005c565b6116c56116cc946116bb60e0949897956116b161010086019a5f870190611192565b60a085019061066e565b60c0830190610661565b0190610661565b565b9095949261171994611708611712926116fe6080966116f460a088019c5f89019061066e565b602087019061066e565b604085019061066e565b606083019061066e565b0190611258565b565b9192611733919361172a6126fc565b9081019061156a565b60208101519061175661175161174761204c565b5f8401519061240f565b610848565b923361177261176c61176787610854565b61007d565b9161007d565b03611cd0578061178a6117845f611589565b9161038c565b125f14611cba576117a261179d826115a5565b6115df565b5b94816117b76117b15f611589565b9161038c565b135f14611cab57506117c8906115df565b5b846117e76117e16117dc60a08701610635565b610125565b91610125565b10611c59576117f860808401610635565b938561180c61180687610125565b91610125565b10611c115761181e6060840151611dac565b9261184a61183661183160408401610628565b6106ca565b6060830151611844306106ee565b91612708565b9361186761186261185d60408501610628565b6106ca565b6106e2565b60606393c5206291839061189561187d306106ee565b946118a0611889610052565b968795869485946106fe565b8452600484016107d3565b03915afa908115611c0c576118c660206118d2936118cb935f91611bde575b5001610806565b610813565b978961050e565b92836118e66118e088610125565b91610125565b101593845f14611bd8576118f95f610645565b5b98855f14611bc9575b90896119176119115f610645565b91610125565b118015611baf575b611a97575b505061194261193d61193860408601610628565b6106ca565b6106e2565b926060638720316d9101518694611958306106ee565b611961306106ee565b823b15611a92575f9461199286926119879461197b610052565b9b8c98899788966106fe565b86526004860161168f565b03925af1908115611a8d57611a54936119ce92611a61575b506119c76119c16119bc5f8b01610628565b6110b4565b91610854565b8691612748565b611a056119da306106ee565b956119f260206119eb5f8b01610628565b9901610628565b9886955f14611a595750945b98916107ba565b90611a42611a3c611a367f73361010fb9a111f033ddf6b99bb11c387435633547ceeebc7fbe4fddb7303bd9861124c565b9861124c565b9861124c565b98611a4b610052565b958695866116ce565b0390a4565b9050946119fe565b611a80905f3d8111611a86575b611a7881836100e7565b810190611680565b5f6119aa565b503d611a6e565b6107f6565b6106fa565b611ac690611ab2611aad5f606089015101610628565b6110b4565b90611abf60408801610628565b9091612642565b604089611ae4611adf611ada848901610628565b6106ca565b6106e2565b611b265f6320b76e81611b3160608b01519597611b00306106ee565b611b11611b0c86610645565b61113e565b91611b1a610052565b9a8b998a9889976106fe565b87526004870161162d565b03925af18015611baa57611b7d575b50611b76611b5b611b565f606087015101610628565b6110b4565b611b6760408601610628565b611b705f610645565b91612642565b5f80611924565b611b9d9060403d8111611ba3575b611b9581836100e7565b810190611165565b50611b40565b503d611b8b565b6107f6565b5081611bc3611bbd5f610645565b91610125565b1161191f565b50611bd35f610645565b611903565b806118fa565b611bff915060603d8111611c05575b611bf781836100e7565b81019061079c565b5f6118bf565b503d611bed565b6107f6565b505050611c236020611c559201610628565b91925f9384937fce24035a000000000000000000000000000000000000000000000000000000008552600485016115fb565b0390fd5b8483611ca7611c7660a0611c6f60208501610628565b9301610635565b925f9384937f3824a8c4000000000000000000000000000000000000000000000000000000008552600485016115fb565b0390fd5b611cb591506115df565b6117c9565b611ccb611cc6866115a5565b6115df565b6117a3565b5f7f48f5c3ed00000000000000000000000000000000000000000000000000000000815280611d01600482016102ad565b0390fd5b611d49611d44611d347f08e807f0e311ef1048643adc5ad6a1816eb08663ef138ef8a0dbdde4c66f79456104ae565b611d3e60016104c5565b9061050e565b61053b565b90565b611d90611d8b611d7b7f439f1088d898f3d7db77e1b77d28920aa2581569b138503f27dfbbc6bae651da6104ae565b611d8560016104c5565b9061050e565b61053b565b90565b611d9b611d05565b611da3611d4c565b5c905d565b5f90565b60a090611db7611da8565b502090565b611dc66060610110565b90565b5f90565b5f90565b611dd9611dbc565b906020808084611de7611dc9565b815201611df2611dc9565b815201611dfd611dcd565b81525050565b611e0b611dd1565b90565b611e186060610110565b90565b90611e25906101c0565b9052565b91611e32611e03565b5082611e46611e408461007d565b9161007d565b11611e7c575b611e70611e7992611e67611e5e611e0e565b955f870161096b565b6020850161096b565b60408301611e1b565b90565b611e70611e799293925050611e4c565b5f90565b731f98431c8ad98523631ae4a59f267346ea31f98490565b90565b611ebf611eba611ec492611ea8565b61048f565b610125565b90565b90565b611ede611ed9611ee392611ec7565b61048f565b610125565b90565b90565b611efd611ef8611f0292611ee6565b61048f565b610125565b90565b90565b611f1c611f17611f2192611f05565b61048f565b610125565b90565b90565b611f3b611f36611f4092611f24565b61048f565b610125565b90565b73db1d10011ad0ff90774d0c6bb92e5c5c8b4461f790565b90565b611f72611f6d611f7792611f5b565b61048f565b610125565b90565b7333128a8fc17869897dce68ed026d694621f6fdfd90565b90565b611fa9611fa4611fae92611f92565b61048f565b610125565b90565b73afe208a311b21f13ef87e33a90049fc17a7acdec90565b90565b611fe0611fdb611fe592611fc9565b61048f565b610125565b90565b737a5028bda40e7b173c278c5342087826455ea25a90565b90565b61201761201261201c92612000565b61048f565b610125565b90565b731f9840000000000000000000000000000000000390565b919061204a905f6020850194019061066e565b565b612054611e8c565b504661206961206360016104c5565b91610125565b146121ee574661208261207c600a611eab565b91610125565b146121e3574661209c61209661a4b1611eca565b91610125565b146121d857466120b56120af6089611ee9565b91610125565b146121cd57466120ce6120c86005611f08565b91610125565b146121c257466120e76120e16038611f27565b91610125565b146121b757466121016120fb612105611f5e565b91610125565b146121ac574661211b61211561a4ec611f95565b91610125565b146121a1574661213561212f6101e0611fcc565b91610125565b14612196574661214e6121486082612003565b91610125565b1461218b57612187465f9182917f6b8c198400000000000000000000000000000000000000000000000000000000835260048301612037565b0390fd5b61219361201f565b90565b61219e611fe8565b90565b6121a9611fb1565b90565b6121b4611f7a565b90565b6121bf611f43565b90565b6121ca611e90565b90565b6121d5611e90565b90565b6121e0611e90565b90565b6121eb611e90565b90565b6121f6611e90565b90565b60209181520190565b5f7f506f6f6c416464726573733a2077726f6e6720746f6b656e206f726465720000910152565b612236601e6020926121f9565b61223f81612202565b0190565b6122589060208101905f818303910152612229565b90565b1561226257565b61226a610052565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061229a60048201612243565b0390fd5b6122a7906101c0565b9052565b6040906122d46122db94969593966122ca60608401985f850190610661565b6020830190610661565b019061229e565b565b60200190565b90565b6122fa6122f56122ff926122e3565b610536565b610533565b90565b61232b7fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546122e6565b90565b905090565b5f7fff00000000000000000000000000000000000000000000000000000000000000910152565b6123666001809261232e565b61236f81612333565b0190565b60601b90565b61238290612373565b90565b61238e90612379565b90565b61239d6123a29161007d565b612385565b9052565b90565b6123b56123ba91610533565b6123a6565b9052565b602093926123e760146123ef946123df6123d8899661235a565b8092612391565b0180926123a9565b0180926123a9565b0190565b61240761240261240c92610125565b61048f565b610064565b90565b6124fe612508926124e661250393612425611e8c565b506124576124345f8501610628565b61245161244b61244660208801610628565b61007d565b9161007d565b1061225b565b916124a46124665f8301610628565b612495612481604061247a60208701610628565b950161082f565b612489610052565b948593602085016122ab565b602082018103825203826100e7565b6124b66124b082610b62565b916122dd565b20916124d76124c3612302565b6124cb610052565b948593602085016123be565b602082018103825203826100e7565b6124f86124f282610b62565b916122dd565b206104ae565b6123f3565b6106d6565b90565b5f90565b90565b61252661252161252b9261250f565b61048f565b610125565b90565b1561253557565b5f80fd5b61254d61254861255292610125565b61048f565b61038c565b90565b6125a39061256161250b565b5061259e816125986125927f8000000000000000000000000000000000000000000000000000000000000000612512565b91610125565b1061252e565b612539565b90565b63ffffffff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6125e86125e36125ed926125a6565b6106fe565b6125af565b90565b60ff1690565b61260a61260561260f92610642565b61048f565b6125f0565b90565b61261b906125f6565b9052565b91602061264092949361263960408201965f830190610661565b0190612612565b565b909161268360049161267461265a63095ea7b36125d4565b9186612664610052565b958694602086019081520161067b565b602082018103825203826100e7565b906126986126928284906127f2565b156102e6565b6126a2575b505050565b6126ef60046126f4946126ea84916126db6126c063095ea7b36125d4565b915f906126cb610052565b968794602086019081520161261f565b602082018103825203836100e7565b6129db565b6129db565b5f808061269d565b5f612705611d05565b5d565b90612736906127306127459461271c61069e565b5061272683611dac565b9085919091612c4b565b92612f09565b939250905091909190916132bc565b90565b9161278c60049261277d612791959361276463a9059cbb6125d4565b9261276d610052565b968794602086019081520161067b565b602082018103825203836100e7565b6129db565b565b5f90565b606090565b3d5f146127b7576127ac3d611122565b903d5f602084013e5b565b6127bf612797565b906127b5565b905051906127d2826102eb565b565b906020828203126127ed576127ea915f016127c5565b90565b61005c565b905f80916127fe612793565b50612808846110c0565b9082602082019151925af161281b61279c565b81612846575b50908161282d575b5090565b612840915061283b906110c0565b6132f7565b5f612829565b905061285181610b62565b61286361285d5f610645565b91610125565b14908115612873575b505f612821565b61288e9150602061288382610b62565b8183010191016127d4565b5f61286c565b67ffffffffffffffff81116128b2576128ae6020916100b0565b0190565b6100ba565b906128c96128c483612894565b610110565b918252565b5f7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564910152565b6128ff60206128b7565b9061290c602083016128ce565b565b6129166128f5565b90565b60207f6f74207375636365656400000000000000000000000000000000000000000000917f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201520152565b612973602a6040926121f9565b61297c81612919565b0190565b6129959060208101905f818303910152612966565b90565b1561299f57565b6129a7610052565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806129d760048201612980565b0390fd5b612a24916129eb6129fa926110c0565b906129f461290e565b91613317565b612a0381610b62565b612a15612a0f5f610645565b91610125565b14908115612a26575b50612998565b565b612a4191506020612a3682610b62565b8183010191016127d4565b5f612a1e565b67ffffffffffffffff8111612a5f5760208091020190565b6100ba565b612a6d81610533565b03612a7457565b5f80fd5b90505190612a8582612a64565b565b90929192612a9c612a9782612a47565b610110565b9381855260208086019202830192818411612ad957915b838310612ac05750505050565b60208091612ace8486612a78565b815201920191612ab3565b6103ba565b9080601f83011215612afc57816020612af993519101612a87565b90565b6103b2565b90602082820312612b31575f82015167ffffffffffffffff8111612b2c57612b299201612ade565b90565b610060565b61005c565b5190565b60209181520190565b60200190565b612b5290610533565b9052565b90612b6381602093612b49565b0190565b60200190565b90612b8a612b84612b7d84612b36565b8093612b3a565b92612b43565b905f5b818110612b9a5750505090565b909192612bb3612bad6001928651612b56565b94612b67565b9101919091612b8d565b612bd29160208201915f818403910152612b6d565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90612c0c82612b36565b811015612c1d576020809102010190565b612bd5565b612c2c9051610533565b90565b612c43612c3e612c4892610125565b61048f565b610713565b90565b612c73612c6d612c68612c9a955f95612c6261069e565b506133b8565b6134c0565b916106e2565b612c8f637784c685612c83610052565b958694859384936106fe565b835260048301612bbd565b03915afa8015612d0557612cd6612cd1612ccc612cdb93612ce0955f91612ce3575b50612cc65f610645565b90612c02565b612c22565b6104ae565b612c2f565b610813565b90565b612cff91503d805f833e612cf781836100e7565b810190612b01565b5f612cbc565b6107f6565b919060c083820312612d8c57612d8590612d2460c0610110565b93612d31825f830161073c565b5f860152612d42826020830161073c565b6020860152612d54826040830161073c565b6040860152612d66826060830161073c565b6060860152612d78826080830161073c565b608086015260a00161073c565b60a0830152565b6100ac565b9060c082820312612daa57612da7915f01612d0a565b90565b61005c565b9190612dc2905f602085019401906107c6565b565b612dd8612dd3612ddd92610642565b61048f565b610713565b90565b612df4612def612df992610642565b61048f565b610064565b90565b612e0590612de0565b90565b612e11906106a2565b90565b612e1d90612e08565b90565b612e29906106d6565b90565b612e3590610713565b9052565b9060a080612ea393612e515f8201515f860190612e2c565b612e6360208201516020860190612e2c565b612e7560408201516040860190612e2c565b612e8760608201516060860190612e2c565b612e9960808201516080860190612e2c565b0151910190612e2c565b565b9160a0612ec7929493612ec06101608201965f830190611192565b0190612e39565b565b612ed5612edb91610713565b91610713565b01906fffffffffffffffffffffffffffffffff8211612ef657565b6104e1565b90612f0590610713565b9052565b60c0612f6c91612f1761069e565b50612f2061069e565b50612f2961069e565b50612f3261069e565b50612f45612f3f85611dac565b916106e2565b612f61635c60e39a612f55610052565b958694859384936106fe565b835260048301612daf565b03915afa908115613257575f91613229575b5090612f9e42612f98612f9360808601610806565b610813565b9061050e565b80612fb1612fab5f610645565b91610125565b141580613203575b806131d5575b61301d575b5050612fd15f8201610806565b612fdd60208301610806565b9261301a61301461300e6130086130026060612ffb60408a01610806565b9801610806565b95610813565b96610813565b94610813565b92610813565b90565b602061303b61303661303160608601610628565b612e14565b612e20565b638c00bf6b939061305e8695613069613052610052565b978895869485946106fe565b845260048401612ea5565b03915afa9182156131d0576130a59261309f915f916131a2575b509161309961309460408701610806565b610813565b92613581565b906135f4565b6130cd6130b182613702565b6130c760408501916130c283610806565b612ec9565b90612efb565b6130f46130d982613702565b6130ee5f8501916130e983610806565b612ec9565b90612efb565b61310060a08301610806565b61311261310c5f612dc4565b91610713565b0361311e575b80612fc4565b61318061317b61314561319c9361313f61313a60a08801610806565b610813565b906135f4565b6131618161315c6131575f8901610806565b610813565b61050e565b61317561317060208801610806565b610813565b9161374d565b613702565b613196602084019161319183610806565b612ec9565b90612efb565b5f613118565b6131c3915060203d81116131c9575b6131bb81836100e7565b8101906110cc565b5f613083565b503d6131b1565b6107f6565b506131e260608301610628565b6131fc6131f66131f15f612dfc565b61007d565b9161007d565b1415612fbf565b5061321060408401610806565b61322261321c5f612dc4565b91610713565b1415612fb9565b61324a915060c03d8111613250575b61324281836100e7565b810190612d91565b5f612f7e565b503d613238565b6107f6565b61326660016104c5565b90565b61327861327e91939293610125565b92610125565b820180921161328957565b6104e1565b90565b6132a56132a06132aa9261328e565b61048f565b610125565b90565b6132b9620f4240613291565b90565b916132ee6132df6132f4946132cf61069e565b50936132d961325c565b90613269565b916132e86132ad565b90613269565b916137d8565b90565b6132ff612793565b503b61331361330d5f610645565b91610125565b1190565b906133369291613325612797565b50906133305f610645565b916138e2565b90565b90565b61335061334b61335592613339565b61048f565b610125565b90565b613362600261333c565b90565b91602061338692949361337f60408201965f8301906107c6565b019061066e565b565b9160206133a99294936133a260408201965f830190610661565b0190611258565b565b6133b560016104c5565b90565b6134546134629161343c613467946133ce61059e565b50916134026133db613358565b916133f36133e7610052565b93849260208401613365565b602082018103825203826100e7565b61341461340e82610b62565b916122dd565b209161342d613421610052565b93849260208401613388565b602082018103825203826100e7565b61344e61344882610b62565b916122dd565b206104ae565b61345c6133ab565b90613269565b61053b565b90565b606090565b9061348161347c83612a47565b610110565b918252565b369037565b906134b06134988361346f565b926020806134a68693612a47565b9201910390613486565b565b906134bc90610533565b9052565b6134c861346a565b506134f76134de6134d960016104c5565b61348b565b916134f2836134ec5f610645565b90612c02565b6134b2565b90565b61350961350f91939293610125565b92610125565b9161351b838202610125565b92818404149015171561352a57565b6104e1565b90565b61354661354161354b9261352f565b61048f565b610125565b90565b61355f670de0b6b3a7640000613532565b90565b90565b61357961357461357e92613562565b61048f565b610125565b90565b6135f1916135979161359161069e565b506134fa565b6135ec6135c082836135ba60026135b56135af61354e565b9161333c565b6134fa565b9161393b565b6135e681846135e060036135db6135d561354e565b91613565565b6134fa565b9161393b565b92613269565b613269565b90565b906136119161360161069e565b509061360b61354e565b9161393b565b90565b5f90565b5f7f6d61782075696e74313238206578636565646564000000000000000000000000910152565b61364960146128b7565b9061365660208301613618565b565b61366061363f565b90565b61366b613658565b90565b5190565b61369161369a60209361369f936136888161366e565b938480936121f9565b95869101610b6f565b6100b0565b0190565b6136b89160208201915f818403910152613672565b90565b156136c35750565b6136fe906136cf610052565b9182917f08c379a0000000000000000000000000000000000000000000000000000000008352600483016136a3565b0390fd5b61374a9061370e613614565b506137458161373561372f6fffffffffffffffffffffffffffffffff610813565b91610125565b111561373f613663565b906136bb565b612c2f565b90565b90613780613771613786949361376161069e565b509361376b6132ad565b90613269565b9161377a61325c565b90613269565b9161393b565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6137c26137c891610125565b91610125565b9081156137d3570490565b613789565b6137f2613811939261380c926137ec61069e565b506134fa565b6138068361380060016104c5565b9061050e565b90613269565b6137b6565b90565b61381d906106d6565b90565b60207f722063616c6c0000000000000000000000000000000000000000000000000000917f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201520152565b61387a60266040926121f9565b61388381613820565b0190565b61389c9060208101905f81830391015261386d565b90565b156138a657565b6138ae610052565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806138de60048201613887565b0390fd5b915f809161393895936138f3612797565b5061391a61390030613814565b3161391361390d85610125565b91610125565b101561389f565b8591602082019151925af19161392e61279c565b90929091926139f6565b90565b61395792916139529161394c61069e565b506134fa565b6137b6565b90565b5f7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000910152565b61398e601d6020926121f9565b6139978161395a565b0190565b6139b09060208101905f818303910152613981565b90565b156139ba57565b6139c2610052565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806139f26004820161399b565b0390fd5b919290613a01612797565b505f14613a455750613a1282610b62565b613a24613a1e5f610645565b91610125565b14613a2e575b5090565b613a3a613a3f916132f7565b6139b3565b5f613a2a565b8290613a5082610b62565b613a62613a5c5f610645565b91610125565b115f14613a725750805190602001fd5b613aad90613a7e610052565b9182917f08c379a0000000000000000000000000000000000000000000000000000000008352600483016136a3565b0390fd