0 txs
1 call
constructor
constructor(address oracle, address pool, address lender0, address lender1)
functions
FACTORY
viewfunction FACTORY() view returns (address)
getAssets
viewfunction getAssets() view returns (tuple)
getLiabilities
viewfunction getLiabilities() view returns (uint256 amount0, uint256 amount1)
getPrices
viewfunction getPrices(uint40 oracleSeed) view returns (tuple, bool, bool, uint208)
getUniswapPositions
viewfunction getUniswapPositions() view returns (int24[])
LENDER0
viewfunction LENDER0() view returns (address)
LENDER1
viewfunction LENDER1() view returns (address)
ORACLE
viewfunction ORACLE() view returns (address)
owner
purefunction owner() pure returns (address)
slot0
viewfunction slot0() view returns (uint256)
TOKEN0
viewfunction TOKEN0() view returns (address)
TOKEN1
viewfunction TOKEN1() view returns (address)
UNISWAP_POOL
viewfunction UNISWAP_POOL() view returns (address)
borrow
nonpayablefunction borrow(uint256 amount0, uint256 amount1, address recipient)
clear
payablefunction clear(uint40 oracleSeed) payable
liquidate
nonpayablefunction liquidate(address callee, bytes data, uint256 closeFactor, uint40 oracleSeed)
modify
payablefunction modify(address callee, bytes data, uint40 oracleSeed) payable
repay
nonpayablefunction repay(uint256 amount0, uint256 amount1)
rescue
nonpayablefunction rescue(address token, uint256 amount, address recipient)
transfer
nonpayablefunction transfer(uint256 amount0, uint256 amount1, address recipient)
transferEth
nonpayablefunction transferEth(uint256 amount, address recipient)
uniswapDeposit
nonpayablefunction uniswapDeposit(int24 lower, int24 upper, uint128 liquidity) returns (uint256 amount0, uint256 amount1)
uniswapV3MintCallback
nonpayablefunction uniswapV3MintCallback(uint256 amount0, uint256 amount1, bytes)
uniswapWithdraw
nonpayablefunction uniswapWithdraw(int24 lower, int24 upper, uint128 liquidity, address recipient) returns (uint256 burned0, uint256 burned1, uint256 collected0, uint256 collected1)
warn
nonpayablefunction warn(uint40 oracleSeed)
events
Liquidate
event Liquidate()
Warn
event Warn()
errors
No errors.
creation bytecode
0x6101606040908082523462000275576080816200494a80380380916200002682856200027a565b833981010312620002755780516001600160a01b03929091908383168303620002755760209384830151818116810362000275576200007560606200006d858701620002b4565b9501620002b4565b943360805260a05260c052610120938385526101409381855283518781600481876338d52e0f60e01b96878352165afa9081156200026a579160049189949360009162000248575b5060e052855194859384928352165afa9485156200023d5760009562000207575b5050610100938452519161465f9384620002eb8539608051848181611110015281816119d20152612e1f015260a05184818161109c015281816119630152612da9015260c0518481816106710152818161081f0152818161106001528181611b0c01528181611d3101528181612d71015281816137c70152613b3f015260e051848181610379015281816106dc015281816118b901528181611a9701528181611dcf015281816124220152613649015251838181610283015281816106ae015281816116db01528181611a6601528181611e29015281816123d301526136ac0152518281816101830152818161035101528181610594015281816123000152612bb801525181818161025b015281816104cb01528181610fb30152818161223d0152612bff0152f35b6200022c929550803d1062000235575b6200022381836200027a565b810190620002c9565b923880620000de565b503d62000217565b82513d6000823e3d90fd5b620002639150853d871162000235576200022381836200027a565b38620000bd565b85513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200029e57604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200027557565b908160209103126200027557516001600160a01b038116810362000275579056fe608080604052600436101561001d575b50361561001b57600080fd5b005b600090813560e01c9081631602522614611c37575080631851866914611b305780631d61057714611ac1578063289df2cb146119f65780632dd310001461198757806338013f02146119185780633850c7bd146118dd578063443ec74d1461186e57806349f9c0e4146117c657806356954feb1461178157806358f0c49b146116ff5780635ee04d781461169057806367e4ac2c14610fd757806376da754f14610f685780637ff277ac14610ebb5780638671d23b14610e075780638da5cb5b14610da857806398b5d81414610ac3578063990bc10814610974578063cfd983a01461089a578063d2136edd1461070a578063d348799714610602578063d6bda0c0146103f1578063d8aed145146101aa5763e01787640361000f57346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346101a75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75780600435602435907f02000000000000000000000000000000000000000000000000000000000000007f7f00000000000000000000000000000000000000000000000000000000000000845416036103ed57808391610334575b50508061023e5750f35b6102ea60209173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906102a781837f00000000000000000000000000000000000000000000000000000000000000006133fc565b6040517facb70815000000000000000000000000000000000000000000000000000000008152600481019190915230602482015293849283919082906044820190565b03925af18015610329576102fc575080f35b602090813d8311610322575b6103128183612976565b8101031261031d5780f35b600080fd5b503d610308565b6040513d84823e3d90fd5b61039d60209173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906102a781837f00000000000000000000000000000000000000000000000000000000000000006133fc565b03925af180156103e2576103b3575b8290610234565b6020809293503d83116103db575b6103cb8183612976565b8101031261031d578190386103ac565b503d6103c1565b6040513d85823e3d90fd5b5050fd5b50346101a757610400366128e2565b917f02000000000000000000000000000000000000000000000000000000000000007f7f00000000000000000000000000000000000000000000000000000000000000855416036105fe57808391610527575b50508061045e578280f35b6040517f4b3fd148000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff9091166024820152602081806044810103818573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610329576104fc57808280f35b602090813d8311610520575b6105128183612976565b8101031261031d5738808280f35b503d610508565b6040517f4b3fd148000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff9091166024820152602081806044810103818773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156105f3576105c8575b8290610453565b602090813d83116105ec575b6105de8183612976565b8101031261031d57386105c1565b503d6105d4565b6040513d86823e3d90fd5b8380fd5b50346101a75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75760243560043560443567ffffffffffffffff81116105fe576106589036906004016128a0565b505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361070657806106d5575b50806106a7575080f35b6106d290337f00000000000000000000000000000000000000000000000000000000000000006133fc565b80f35b61070090337f00000000000000000000000000000000000000000000000000000000000000006133fc565b3861069d565b8280fd5b50346101a75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757610742612937565b9061074b612947565b610753612957565b907f02000000000000000000000000000000000000000000000000000000000000007f7f000000000000000000000000000000000000000000000000000000000000008454160361070657906fffffffffffffffffffffffffffffffff91604051947f3c8a7d8d00000000000000000000000000000000000000000000000000000000865230600487015260020b602486015260020b604485015216606483015260a060848301528060a483015260408260c4818473ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561088d57604092829161085e575b5082519182526020820152f35b90506108809150823d8411610886575b6108788183612976565b810190613333565b38610851565b503d61086e565b50604051903d90823e3d90fd5b50346101a75760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a7576108d2612937565b6108da612947565b6108e2612957565b916064359373ffffffffffffffffffffffffffffffffffffffff8516850361031d577f02000000000000000000000000000000000000000000000000000000000000007f7f00000000000000000000000000000000000000000000000000000000000000825416036101a757608061095c86868686613b23565b91604051938452602084015260408301526060820152f35b50346101a75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a7576109ac6128ce565b8154907f7fffffffffff00000000000000000000000000000000000000000000000000008216610706576109e2610a0391612d1a565b93928092506109f29150856135f2565b906109fb612b69565b92909161392f565b610a65576106d2914260d01b1783557f8c2b3b4f1f29f0c62444a90e9fcfda99e38985bf4cfc4ca44c7171bd714a2d818380a1793fffffffffffffffffffffffffffffffffffffffffffffffffff479160021c16818110908218021833613584565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f416c6f653a206865616c746879000000000000000000000000000000000000006044820152fd5b5060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75760043573ffffffffffffffffffffffffffffffffffffffff8116809103610da45760243567ffffffffffffffff811161070657610b2f9036906004016128a0565b91906044359164ffffffffff8316830361031d578454907f7f0000000000000000000000000000000000000000000000000000000000000082161580610d75575b15610d1757610bfb926020917f02000000000000000000000000000000000000000000000000000000000000008417885579ffffffffffffffffffffffffffffffffffffffffffffffffffff96886040518097819582947f33606628000000000000000000000000000000000000000000000000000000008452606060048501526064840191612a24565b3360248301528a8816604483015203925af1918215610d0c578592610ccc575b50811502177f8000000000000000000000000000000000000000000000000000000000000000838216178455610c4f612b69565b918115801590610cc3575b610c62578580f35b610ca394610c99610c84610c78610c9e97612d1a565b928096929491976135f2565b9583610cba575b5082610cac575b5050612a9f565b61392f565b612b04565b38808080808580f35b479116111590503880610c92565b15925038610c8b565b50821515610c5a565b9091506020813d602011610d04575b81610ce860209383612976565b81010312610d0057610cf990612cf3565b9038610c1b565b8480fd5b3d9150610cdb565b6040513d87823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416c6f653a206f6e6c79206f776e6572000000000000000000000000000000006044820152fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea36013560601c3314610b70565b5080fd5b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75760206040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea36013560601c8152f35b50346101a75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75773ffffffffffffffffffffffffffffffffffffffff600435818116810361070657604435918216820361031d577f02000000000000000000000000000000000000000000000000000000000000007f7f0000000000000000000000000000000000000000000000000000000000000084541603610706576106d291602435916133fc565b50346101a75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75760c079ffffffffffffffffffffffffffffffffffffffffffffffffffff610f18610f136128ce565b612d1a565b9160409493945194604073ffffffffffffffffffffffffffffffffffffffff91828151168852826020820151166020890152015116604086015215156060850152151560808401521660a0820152f35b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75761100e612c8d565b50611017612cc3565b50611020612cc3565b73ffffffffffffffffffffffffffffffffffffffff90604051927f19c54b56000000000000000000000000000000000000000000000000000000008452827f00000000000000000000000000000000000000000000000000000000000000001692836004860152640100000000602486015260608086604481857f0000000000000000000000000000000000000000000000000000000000000000165afa958615611634576000908197611640575b50826040860191168152604051957f59c96c1100000000000000000000000000000000000000000000000000000000875260048701526080968787602481877f0000000000000000000000000000000000000000000000000000000000000000165afa9182156116345760009788936115ce575b506111599160ff8660149351169916020461420b565b64eef12cab9381811190821802186502ccd38602bb8181109082180218918280026eb68d774870e5f50628224bd452809b04908482169173fffd8963efd1fc6a506488495d951d51639616827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d8401116115b65782156115a857826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c8060011c178060021c178060041c178060081c17911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168160101c82177f07c4acdd000000000000000000000000000000000000000000000000000000000260fb1c7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f901a83177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1011c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029182607f1c8360ff1c1c80029384607f1c8560ff1c1c80029586607f1c8760ff1c1c80029788607f1c8960ff1c1c8002998a607f1c8b60ff1c1c80029b8c607f1c8d60ff1c1c80029d8e80607f1c9060ff1c1c800260cd1c6604000000000000169e60cc1c6608000000000000169d60cb1c6610000000000000169c60ca1c6620000000000000169b60c91c6640000000000000169a60c81c6680000000000000169960c71c670100000000000000169860c61c670200000000000000169760c51c670400000000000000169660c41c670800000000000000169560c31c671000000000000000169460c21c672000000000000000169360c11c674000000000000000169260c01c67800000000000000016918060101c177f07c4acdd000000000000000000000000000000000000000000000000000000000260fb1c7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f901a177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160401b1717171717171717171717171717693627a301d71055774c8502906fdb2df09e81959a81455e260799a0632f8201881d60020b7ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556819301891d60020b14159160ff92611598575b5060011b16156115695761153c948264e8d4a510008381840204936401000276a393020473fffd8963efd1fc6a506488495d951d5263988d2681811090821802181660208601528181119082180218168252546135f2565b6115676040518092606080918051845260208101516020850152604081015160408501520151910152565bf35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6115a190613e00565b50386114e4565b635be3aa5c6000526004601cfd5b6308c379a0600052602080526101526041526045601cfd5b979092508888813d831161162d575b6115e78183612976565b810103126101a7576115f888612cf3565b5061160560208901612a16565b908461161360408b01612a16565b99015163ffffffff8116036101a757509691611159611143565b503d6115dd565b6040513d6000823e3d90fd5b96508187813d8311611689575b6116578183612976565b810103126101a757865166ffffffffffffff8116036101a75750604061167f602088016129e6565b96015195386110cf565b503d61164d565b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a7576117388154613a22565b906040519182916020808401906020855283518092526020604086019401925b82811061176757505050500390f35b835160020b85528695509381019392810192600101611758565b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75760406117ba612b69565b82519182526020820152f35b50346101a75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75760243573ffffffffffffffffffffffffffffffffffffffff8116809103610da4577f02000000000000000000000000000000000000000000000000000000000000007f7f0000000000000000000000000000000000000000000000000000000000000083541603610da4576106d29060043590613584565b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a75760209054604051908152f35b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101a757611a05366128e2565b917f02000000000000000000000000000000000000000000000000000000000000007f7f00000000000000000000000000000000000000000000000000000000000000855416036105fe5780611a90575b5080611a60578280f35b611a8a917f00000000000000000000000000000000000000000000000000000000000000006133fc565b38808280f35b611abb90837f00000000000000000000000000000000000000000000000000000000000000006133fc565b38611a56565b50346101a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a757611b636128ce565b81547f7f0000000000000000000000000000000000000000000000000000000000000081161580611c0d575b1561070657611c07610c9e610c99611bc77fff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff95612d1a565b92809250611bd69150876135f2565b90611bdf612b69565b94909379ffffffffffffffffffffffffffffffffffffffffffffffffffff4791161115612a9f565b16815580f35b507effffffffff000000000000000000000000000000000000000000000000000081161515611b8f565b905034610da45760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610da4576004359073ffffffffffffffffffffffffffffffffffffffff821682036107065760243567ffffffffffffffff81116105fe57611ca99036906004016128a0565b926064359264ffffffffff8416840361280857604435151580612892575b1561283657508454917f7f000000000000000000000000000000000000000000000000000000000000008316158061280c575b15612808577f010000000000000000000000000000000000000000000000000000000000000083178655611d2d83613a22565b80517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16959188805b8381106126a65750505050611d7f90612d1a565b50505090604051947f70a08231000000000000000000000000000000000000000000000000000000009586815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115612669578991612674575b5060405196875230600488015260208760248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa96871561266957899761262c575b5060e0949596976004611e6a612b69565b979094604051928380927f3850c7bd0000000000000000000000000000000000000000000000000000000082525afa908115612621578b9161258f575b5073ffffffffffffffffffffffffffffffffffffffff808751169116809110908161256b575b50156125675773ffffffffffffffffffffffffffffffffffffffff6040860151169364ffffffffff8960d01c1615158061254f575b156124f1578a90838b808c611f15612c8d565b99611f1f90613cc9565b8c611f2a828c613d02565b611f33916133e5565b90611f3e908a613d02565b611f4890846133e5565b9162093954808260d01c64ffffffffff1642037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed4011061244c575b505050612710604435858102829004808d5294810282900460208d01528a81028281061515908390040160408d01528d0281810615159190040160608b0152506123fd9050575b506020860151806123b6575b5073ffffffffffffffffffffffffffffffffffffffff89163b15610da4576120349260405193849283927f9838ddce00000000000000000000000000000000000000000000000000000000845260c0600485015260c4840191612a24565b336024830152875160448301526020880151606483015260408801516084830152606088015160a483015203818373ffffffffffffffffffffffffffffffffffffffff8c165af180156122b85761236d575b506040830151806122c3575b50606083015180612200575b507f8000000000000000000000000000000000000000000000000000000000000000977effffffffffffffffffffffffff0000000000000000000000000000000000009796959493929160443561271003612169575050505050509061213c7fff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff9273ffffffffffffffffffffffffffffffffffffffff479116613584565b165b161781557f464946033ce287b938f9d6f25bb37a9cf6422ad84eee0214c78a37f6ab877b658180a180f35b90919293949550611ab560443511612187575b50505050505061213e565b6121c99560606121ba6121ae6121a26121c395895190612a63565b95602089015190612a63565b95604088015190612a63565b95015190612a63565b936134ad565b6121d9575b38808080808061217c565b7fff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff166121ce565b6040517facb7081500000000000000000000000000000000000000000000000000000000815260048101919091523060248201526020816044818d7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165af180156122b8571561209e576020908198979695949392983d83116122b1575b61229d8183612976565b8101031261031d579091929394953861209e565b503d612293565b6040513d8c823e3d90fd5b6040517facb7081500000000000000000000000000000000000000000000000000000000815260048101919091523060248201526020816044818d7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165af180156122b8571561209257602090813d8311612366575b6123588183612976565b8101031261031d5738612092565b503d61234e565b67ffffffffffffffff819a929a11612389576040529738612086565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6123f79073ffffffffffffffffffffffffffffffffffffffff8b167f00000000000000000000000000000000000000000000000000000000000000006133fc565b38611fd6565b61271061244691604435020473ffffffffffffffffffffffffffffffffffffffff8b167f00000000000000000000000000000000000000000000000000000000000000006133fc565b38611fca565b64e8d4a5100093909302926301375cb5620f424060d09390931c64ffffffffff1642037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed48101939093020168013d8a4a71595923000491900361012c0167016ff27247ea26e0040364dd30699c0001028181106124cb575b8e81611f83565b6124e792945061271093506124e182828b613d44565b94613d44565b90508c38806124c4565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f416c6f653a2067726163650000000000000000000000000000000000000000006044820152fd5b5061012c64ffffffffff8a60d01c1601421015611f02565b8980fd5b905073ffffffffffffffffffffffffffffffffffffffff6020870151161138611ecd565b905060e0813d60e011612619575b816125aa60e09383612976565b81010312612611576125bb816129e6565b9060208101518060020b0361261557806125d9604060c09301612a07565b506125e660608201612a07565b506125f360808201612a07565b5061260060a08201612a16565b500151801515036126115738611ea7565b8a80fd5b8b80fd5b3d915061259d565b6040513d8d823e3d90fd5b949596506020853d602011612661575b8161264960209383612976565b8101031261265d5760e09451969594611e59565b8880fd5b3d915061263c565b6040513d8b823e3d90fd5b90506020813d60201161269e575b8161268f60209383612976565b8101031261265d575138611dff565b3d9150612682565b6126b08184613349565b51600290810b906126c46001840186613349565b51900b9060405160208101906127478161271b86863087917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000601a949260601b16835260e81b601483015260e81b60178201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612976565b519020604051907f514ea4bf0000000000000000000000000000000000000000000000000000000082526004820152808c81602460a09485935afa9182156127fd57600296926127cc575b50506fffffffffffffffffffffffffffffffff8116156127c4576127b7923092613b23565b505050505b018990611d6b565b5050506127bc565b6127eb9250803d106127f6575b6127e38183612976565b8101906133a9565b505050503880612792565b503d6127d9565b6040513d88823e3d90fd5b8580fd5b507effffffffff000000000000000000000000000000000000000000000000000083161515611cfa565b807f08c379a0000000000000000000000000000000000000000000000000000000006064925260206004820152600b60248201527f416c6f653a20636c6f73650000000000000000000000000000000000000000006044820152fd5b506127106044351115611cc7565b9181601f8401121561031d5782359167ffffffffffffffff831161031d576020838186019501011161031d57565b6004359064ffffffffff8216820361031d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261031d57600435906024359060443573ffffffffffffffffffffffffffffffffffffffff8116810361031d5790565b600435908160020b820361031d57565b602435908160020b820361031d57565b604435906fffffffffffffffffffffffffffffffff8216820361031d57565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176129b757604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b519073ffffffffffffffffffffffffffffffffffffffff8216820361031d57565b519061ffff8216820361031d57565b519060ff8216820361031d57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91908203918211612a7057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b15612aa657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416c6f653a20636f6e646974696f6e73000000000000000000000000000000006044820152fd5b15612b0b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f416c6f653a20756e6865616c74687900000000000000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff906040517f4d73e9ba00000000000000000000000000000000000000000000000000000000928382523060048301526020918281602481857f0000000000000000000000000000000000000000000000000000000000000000165afa8015611634578391600091612c5e575b509460246040518094819382523060048301527f0000000000000000000000000000000000000000000000000000000000000000165afa91821561163457600092612c3457505090565b90809250813d8311612c57575b612c4b8183612976565b8101031261031d575190565b503d612c41565b82819392503d8311612c86575b612c758183612976565b8101031261031d5782905138612bea565b503d612c6b565b604051906080820182811067ffffffffffffffff8211176129b75760405260006060838281528260208201528260408201520152565b604051906060820182811067ffffffffffffffff8211176129b75760405260006040838281528260208201520152565b519079ffffffffffffffffffffffffffffffffffffffffffffffffffff8216820361031d57565b612d22612cc3565b50612d2b612cc3565b73ffffffffffffffffffffffffffffffffffffffff92604051917f19c54b5600000000000000000000000000000000000000000000000000000000835264ffffffffff857f000000000000000000000000000000000000000000000000000000000000000016948560048601521660248401526060908184604481897f0000000000000000000000000000000000000000000000000000000000000000165afa95861561163457600091829583986132da575b50816040820196168652604051967f59c96c1100000000000000000000000000000000000000000000000000000000885260048801526080978888602481867f0000000000000000000000000000000000000000000000000000000000000000165afa97881561163457600097889089928a9b61326d575b50601486612e6d9251169460ff809416020461420b565b64eef12cab9381811190821802186502ccd38602bb8181109082180218918280026eb68d774870e5f50628224bd452809b049786891690600073fffd8963efd1fc6a506488495d951d51639616827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d84011161325657821561324957508390826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b179a63ffffffff9b84811c8d1060051b1784811c8060011c178060021c178060041c178060081c178060101c177f07c4acdd000000000000000000000000000000000000000000000000000000000260fb1c7e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f901a17911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182011c8002607f928392828493841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c80029081881c82881c1c80029283891c84891c1c800294858a1c868a1c1c800296878b1c888b1c1c800298898c1c8a8c1c1c80029a8b8d1c8c821c1c8002809d1c8d821c1c8002809e81901c90821c1c80029e8f80911c911c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160401b1717171717171717171717171717693627a301d71055774c85028d6fdb2df09e81959a81455e260799a0632f8201901d60020b9d7ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568f9201901d60020b03613234575b5060011b169162ffffff938315611569578585937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41feb9366ffffffffffffff9864e8d4a510008381840204936401000276a393020473fffd8963efd1fc6a506488495d951d5263988d26818110908218021816602085015281811190821802181681529a60000360020b01160416911610931642109190565b61323f8d929d613e00565b1190039a3861319c565b635be3aa5c90526004601cfd5b6308c379a09052602080526101526041526045601cfd5b9992509950508988813d83116132d3575b6132888183612976565b810103126101a75761329988612cf3565b976132a660208201612a16565b98876132b460408401612a16565b9201519263ffffffff841684036101a757509199919890916014612e56565b503d61327e565b8480929950819497503d831161332c575b6132f58183612976565b81010312610d005781519466ffffffffffffff861686036101a75750604061331f602084016129e6565b9201519491949638612dde565b503d6132eb565b919082604091031261031d576020825192015190565b805182101561335d5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b51906fffffffffffffffffffffffffffffffff8216820361031d57565b908160a091031261031d576133bd8161338c565b916020820151916040810151916133e260806133db6060850161338c565b930161338c565b90565b91908201809211612a7057565b8115611569570490565b60009182604492602095604051937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af13d15601f3d116001600051141617161561344f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152fd5b909392848103858211026014808204910615150160c8820460c88306151501010192828103838211026014808204910615150160c8820460c8830615150101019273ffffffffffffffffffffffffffffffffffffffff9161351083825116613cc9565b6135366135306135296135238487613d02565b896133e5565b92896143ea565b866133e5565b106135795761356a9461355e61355761355e95602061356495015116613cc9565b8094613d02565b906133e5565b946143ea565b1061357457600190565b600090565b505050505050600090565b600080809381935af11561359457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152fd5b91906135fc612c8d565b92604051907f70a08231000000000000000000000000000000000000000000000000000000009182815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611634576000916138fd575b50806040870152855260405191825230600483015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611634576000906138c9575b6136f192508060608701526020860152613a22565b80519060005b8281106137045750505050565b61370e8183613349565b5190600291820b916137236001830185613349565b51900b91604051602081019061377a8161271b87863087917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000601a949260601b16835260e81b601483015260e81b60178201520190565b51902092604051937f514ea4bf000000000000000000000000000000000000000000000000000000008552600485015260a08460248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611634576002946000926138a4575b506fffffffffffffffffffffffffffffffff82161561389c5761382961382361387e94613e00565b91613e00565b9061384d83838373ffffffffffffffffffffffffffffffffffffffff8d5116614163565b908c51018c5260208c01510160208c015273ffffffffffffffffffffffffffffffffffffffff60208a015116614163565b90604089015101604089015260608801510160608801525b016136f7565b505050613896565b6138be91925060a03d60a0116127f6576127e38183612976565b5050505090386137fb565b506020823d6020116138f5575b816138e360209383612976565b8101031261031d576136f191516136dc565b3d91506138d6565b90506020813d602011613927575b8161391860209383612976565b8101031261031d57513861367a565b3d915061390b565b8092939160c8850460c886061515018501908051808703818811026014916139b860c8880460c8890615150188019261355e602087015191613564838c03848d11026139a761399573ffffffffffffffffffffffffffffffffffffffff809e5116613cc9565b848b8083970491061515018d01613d02565b9089808204910615150188016133e5565b10613a155761356a96613a06846139f461355e986020606060406135649a01519e8f8082039111029401519b8c80820391110295015116613cc9565b968186808a9404910615150101613d02565b928082049106151501016133e5565b5050505050505050600090565b9060405191602062ffffff91828116838260181c1690818103613b0e575b50508060301c90838216848260481c16808203613ae2575b50508060601c91848316948260781c1692838603613aa5575b505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810160051c8452830160405250565b65ffffffffffff808092169216821492161417613ad45760206040938387019081520152018038808080613a71565b63e13355df6000526004601cfd5b65ffffffffffff9491929480861690851614613ad4576020604093838a01908152015201913880613a58565b90919286015260408501526060903880613a40565b92939173ffffffffffffffffffffffffffffffffffffffff91827f000000000000000000000000000000000000000000000000000000000000000016906040938451967fa34123a700000000000000000000000000000000000000000000000000000000885260020b9182600489015260020b978860248901526fffffffffffffffffffffffffffffffff8095166044890152600093868960648188855af18015613cbf5785998691613c90575b50918560a4928995949b9c865197889687957f4f1eb3d8000000000000000000000000000000000000000000000000000000008752166004860152602485015260448401528860648401528860848401525af1918215613c855780948193613c3e575b5050508116911691565b919450915083813d8111613c7e575b613c578183612976565b810103126101a7575080613c766020613c6f8561338c565b940161338c565b903880613c34565b503d613c4d565b8451903d90823e3d90fd5b60a4929a508894939150613cb18791863d8811610886576108788183612976565b9b909b929495509250613bd1565b87513d87823e3d90fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8180029180098181108201900360c01b9060401c1790565b919070010000000000000000000000000000000090613d2181856143ea565b9309613d2957565b906001018015613d365790565b63ae47f7026000526004601cfd5b91600092828102927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183099184831085018084039314613de45782841115613dd757908391099060018386038416808080960460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029703040190848311900302920304170290565b63ae47f70286526004601cfd5b505050918215613df357500490565b63ae47f70290526004601cfd5b60020b6000811260000381810118620d89e8811161414b5763ffffffff9160807001ffffffffffffffffffffffffffffffff7ffffcb933bd6fad37aa2d162d1a59400100000000000000000000000000000000828560071b161c169260028116614130575b60048116614115575b600881166140fa575b601081166140df575b602081166140c4575b604081166140a9575b81811661408e575b6101008116614073575b6102008116614058575b610400811661403d575b6108008116614022575b6110008116614007575b6120008116613fec575b6140008116613fd1575b6180008116613fb6575b620100008116613f9b575b620200008116613f81575b620400008116613f67575b6208000016613f4c575b50600012613f25575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04613f1e565b6b048a170391f7dc42444e8fa26000929302901c9190613f15565b6d2216e584f5fa1ea926041bedfe98909302811c92613f0b565b926e5d6af8dedb81196699c329225ee60402811c92613f00565b926f09aa508b5b7a84e1c677de54f3e99bc902811c92613ef5565b926f31be135f97d08fd981231505542fcfa602811c92613eea565b926f70d869a156d2a1b890bb3df62baf32f702811c92613ee0565b926fa9f746462d870fdf8a65dc1f90e061e502811c92613ed6565b926fd097f3bdfd2022b8845ad8f792aa582502811c92613ecc565b926fe7159475a2c29b7443b29c7fa6e889d902811c92613ec2565b926ff3392b0822b70005940c7a398e4b70f302811c92613eb8565b926ff987a7253ac413176f2b074cf7815e5402811c92613eae565b926ffcbe86c7900a88aedcffc83b479aa3a402811c92613ea4565b926ffe5dee046a99a2a811c461f1969c305302811c92613e9a565b926fff2ea16466c96a3843ec78b326b5286102811c92613e92565b926fff973b41fa98c081472e6896dfb254c002811c92613e89565b926fffcb9843d60f6159c9db58835c92664402811c92613e80565b926fffe5caca7e10e4e61c3624eaa0941cd002811c92613e77565b926ffff2e50f5f656932ef12357cf3c7fdcc02811c92613e6e565b926ffff97272373d413259a46990580e213a02811c92613e65565b6308c379a0600052602080526101546041526045601cfd5b90939260009290918373ffffffffffffffffffffffffffffffffffffffff80841690808916908282116141dc5784169081116141ab57505050506141a89293946144ce565b91565b909192949550106000146141d05750906141ca836133e29493836144ce565b94614462565b946133e2939250614462565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffe63d440297d88113156143e4576587a00ea0a7c98112156143bf57630e8d4a519060541b057402be24bf525852a2598d777652249b0e431d89d9c66bb17217f7d1cf79abc9e3b3989179d835ebba824c98fb31b83b2ca45c0000000000000000000000006060916b8000000000000000000000008582851b0501831d94850290036e0587f503bb6ea29d25fcb740196450816c10fe68e7fd37d0007b713f7650810102841d936e05180bb14799ab47a8a8cb2a527d57837ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb816db1bbb201f443cf962f1a1d3db4a5817fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c816d0277594991cfc85f6e2461837cd9817fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a55048101028a1d0102881d0102861d0102841d0102821d01947ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e846d02d16720577bd19bf614176fe9ea830192010102901d01020105029060d7031c90565b507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b50600090565b818102917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff910981811082019003807001000000000000000000000000000000001115613d365760801b9060801c1790565b73ffffffffffffffffffffffffffffffffffffffff9182169082160391908211612a7057565b6fffffffffffffffffffffffffffffffff6144b373ffffffffffffffffffffffffffffffffffffffff927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9461443c565b9316921680830292098181108201900360a01b9060601c1790565b906145226133e29373ffffffffffffffffffffffffffffffffffffffff927bffffffffffffffffffffffffffffffff0000000000000000000000008480614515888561443c565b1692169260601b1661452a565b9116906133f2565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828409928281029283808610950394808603951461461c57848311156145be578291096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152fd5b5050906133e292506133f256fea2646970667358221220077fa119069db34d68ccb9909f6f6503efd5d499b50c81d6dfaf20f9cc5829c364736f6c634300081700330000000000000000000000000000000030d51e39a2dddb5db50f9d74a289dfc30000000000000000000000000f9679f0601fbee6e8416065a6937c5ea346e883000000000000000000000000066dd92c1441850048b18fa52642ae531ee95bfe000000000000000000000000b01cafbbd4ab8a80bbc82934229fd66db0d9798a