153 txs
158 calls
constructor
constructor(address owner)
functions
BORROW_TYPEHASH
viewfunction BORROW_TYPEHASH() view returns (bytes32)
denominator
viewfunction denominator() view returns (uint256)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
feeAddress
viewfunction feeAddress() view returns (address)
loanFeeRate
viewfunction loanFeeRate() view returns (uint256)
ML_TYPEHASH
viewfunction ML_TYPEHASH() view returns (bytes32)
nonces
viewfunction nonces(address owner) view returns (uint256)
onERC1155BatchReceived
purefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) pure returns (bytes4)
onERC1155Received
purefunction onERC1155Received(address, address, uint256, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
PLEDGE_TYPEHASH
viewfunction PLEDGE_TYPEHASH() view returns (bytes32)
REDEEM_TYPEHASH
viewfunction REDEEM_TYPEHASH() view returns (bytes32)
REPAY_TYPEHASH
viewfunction REPAY_TYPEHASH() view returns (bytes32)
signAdmin
viewfunction signAdmin() view returns (address)
SWAP_TYPEHASH
viewfunction SWAP_TYPEHASH() view returns (bytes32)
swapFeeRate
viewfunction swapFeeRate() view returns (uint256)
addBorrow
nonpayablefunction addBorrow(uint256 positionId, address loanToken, uint256 loanAmount, uint256 userNonce, uint256 expTime, bytes signature)
addPledge
nonpayablefunction addPledge(uint256 positionId, address pledgeToken, uint256 tokenId, uint256 pledgeAmount, uint256 userNonce, uint256 expTime, bytes signature)
liqPosition
nonpayablefunction liqPosition(uint256 positionId, address token, uint256 tokenId, uint256 amount)
mortgageAndLoan
nonpayablefunction mortgageAndLoan(address pledgeToken, uint256 tokenId, uint256 pledgeAmount, address loanToken, uint256 loanAmount, uint256 userNonce, uint256 expTime, bytes signature)
redeem
nonpayablefunction redeem(uint256 positionId, address redeemToken, uint256 tokenId, uint256 redeemAmount, uint256 userNonce, uint256 expTime, bytes signature)
renounceOwnership
nonpayablefunction renounceOwnership()
repay
nonpayablefunction repay(uint256 positionId, address repayToken, uint256 repayAmount, uint256 userNonce, uint256 expTime, bytes signature)
setFeeAddress
nonpayablefunction setFeeAddress(address feeAddress_)
setLoanFeeRate
nonpayablefunction setLoanFeeRate(uint256 loanFeeRate_)
setSignAdmin
nonpayablefunction setSignAdmin(address signAdmin_)
setSwapFeeRate
nonpayablefunction setSwapFeeRate(uint256 swapFeeRate_)
swapToken
nonpayablefunction swapToken(address token0, address token1, uint256 swapAmount, uint256 receiveAmount, uint256 expTime, bytes signature)
takeNFT
nonpayablefunction takeNFT(address token, uint256 tokenId, uint256 amount)
takeToken
nonpayablefunction takeToken(address token, uint256 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Borrow
event Borrow(address user, uint256 positionId, address loanToken, uint256 loanAmount, uint256 userNonce, uint256 timestamp)
EIP712DomainChanged
event EIP712DomainChanged()
LiqPosition
event LiqPosition(address indexed user, uint256 indexed positionId, address token, uint256 tokenId, uint256 amount)
MortgageAndLoan
event MortgageAndLoan(address indexed user, address pledgeToken, uint256 tokenId, uint256 pledgeAmount, address loanToken, uint256 loanAmount, uint256 userNonce, uint256 timestamp)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Pledge
event Pledge(address user, uint256 positionId, address pledgeToken, uint256 tokenId, uint256 pledgeAmount, uint256 userNonce, uint256 timestamp)
Redeem
event Redeem(address user, uint256 positionId, address redeemToken, uint256 tokenId, uint256 redeemAmount, uint256 userNonce, uint256 timestamp)
Repay
event Repay(address user, uint256 positionId, address repayToken, uint256 repayAmount, uint256 userNonce, uint256 timestamp)
SwapToken
event SwapToken(address indexed user, address useToken, address receiveToken, uint256 useAmount, uint256 receiveAmount, uint256 timestamp)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidShortString
error InvalidShortString()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SignAdminError
error SignAdminError(address signAdmin)
StringTooLong
error StringTooLong(string str)
creation bytecode
0x61016080604052346101c457602081612eea803803809161002082856101c9565b8339810103126101c457516001600160a01b038116908190036101c4576040519061004c6040836101c9565b6005825260208201644e4558494f60d81b81526040519261006e6040856101c9565b600584526020840192640312e302e360dc1b845280156101ae57600080546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36100d281610202565b610120526100df846103c6565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261014860c0826101c9565b5190206080523060c05260016003556127106009556040516129859081610565823960805181612713015260a051816127d0015260c051816126dd015260e051816127620152610100518161278801526101205181611c0901526101405181611c330152f35b631e4fbdf760e01b600052600060045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176101ec57604052565b634e487b7160e01b600052604160045260246000fd5b9081516020811060001461029a575090601f81511161023e57602081519101516020821061022e571790565b6000198260200360031b1b161790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106102825750508160006044809484010152601f80199101168101030190fd5b60208282018101516044878401015285935001610260565b6001600160401b0381116101ec57600154600181811c911680156103bc575b60208210146103a657601f8111610370575b50602092601f821160011461030b5792819293600092610300575b50508160011b916000199060031b1c19161760015560ff90565b0151905038806102e6565b601f198216936001600052806000209160005b868110610358575083600195961061033f575b505050811b0160015560ff90565b015160001960f88460031b161c19169055388080610331565b9192602060018192868501518155019401920161031e565b6001600052601f6020600020910160051c810190601f830160051c015b81811061039a57506102cb565b6000815560010161038d565b634e487b7160e01b600052602260045260246000fd5b90607f16906102b9565b9081516020811060001461044e575090601f8151116103f257602081519101516020821061022e571790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106104365750508160006044809484010152601f80199101168101030190fd5b60208282018101516044878401015285935001610414565b6001600160401b0381116101ec57600254600181811c9116801561055a575b60208210146103a657601f8111610524575b50602092601f82116001146104bf57928192936000926104b4575b50508160011b916000199060031b1c19161760025560ff90565b01519050388061049a565b601f198216936002600052806000209160005b86811061050c57508360019596106104f3575b505050811b0160025560ff90565b015160001960f88460031b161c191690553880806104e5565b919260206001819286850151815501940192016104d2565b6002600052601f6020600020910160051c810190601f830160051c015b81811061054e575061047f565b60008155600101610541565b90607f169061046d56fe608080604052600436101561001d575b50361561001b57600080fd5b005b600090813560e01c9081633a04801d14611ee5575080634127535814611ebc57806343c47a2d14611e9e5780634bc30ea714611e6357806355ac54e714611e3a5780635a0638a014611dff578063704f835314611dcf578063715018a614611d7557806377b56a4c14611d245780637ecebe0014611ceb57806384b0196e14611bef57806385a9987914611bb45780638705fcd414611b6357806387880377146118cc5780638da5cb5b146118a557806396ce07951461188757806398c8ccb81461184c5780639b0fbcde14611574578063ac68b3c2146113b9578063afd0f90614611264578063bc197c81146111cb578063c5f4724c14610f67578063c9710f3314610ca4578063d1154ff014610c74578063d141c33714610929578063d4afeb4c146108ee578063d981362b146107dc578063def41dd114610299578063e4afd5cc1461025e578063f23a6e61146102035763f2fde38b0361000f573461020057602036600319011261020057610194611f01565b61019c61234d565b6001600160a01b031680156101ec5781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b80fd5b50346102005760a03660031901126102005761021d611f01565b50610226611f17565b506084356001600160401b03811161025a576102469036906004016120b3565b505060405163f23a6e6160e01b8152602090f35b5080fd5b503461020057806003193601126102005760206040517f37404db6741959b215b1e1875f7a341678d24a96ee37fdd393b68e86b24b9f918152f35b503461020057610100366003190112610200576102b4611f01565b6024356044356064356001600160a01b038116908190036107d8576084359160a4359360c43560e4356001600160401b0381116107d4576102f9903690600401611fdb565b96610302612376565b6040519061010082018281106001600160401b038211176107c05788928861045b61044561043c8f98968c9660405260018060a01b03169e8f865261043760208701958c87528d60408901998a91825260608a019b8c91825260808b019d8e9485528b61038660e060a083019233845260c081019485520193808552421115612398565b8051825161039c916001600160a01b0316612697565b60018060a01b038d5116958c5195519460018060a01b0390511690519160018060a01b0390511692519351946040519660208801987f37404db6741959b215b1e1875f7a341678d24a96ee37fdd393b68e86b24b9f918a5260408901526060880152608087015260a086015260c085015260e0840152610100830152610120820152610120815261042f61014082611fba565b519020612473565b6127f6565b90929192612832565b6005546001600160a01b0391821691161461230f565b815160405163e985e9c560e01b81523360048201523060248201529290602090849060449082906001600160a01b03165afa9283156107b55760016020946104b0926104e59a91610798575b50151514612428565b519051604051627eeac760e11b815233600482015260248101919091529586916001600160a01b031690829081906044820190565b03915afa93841561078d578b94610755575b509061050a6024946020935111156123dc565b516040516370a0823160e01b815230600482015293849182906001600160a01b03165afa9081156106eb57899161071a575b610549925051111561223f565b853b1561070b57604051637921219560e11b81528790818180610572878730336004860161228b565b0381838c5af1801561070f576106f6575b50508360085480610651575b5060405163a9059cbb60e01b8152336004820152602481019190915260208180604481015b03818b885af1801561064657610619575b50604051958652602086015260408501526060840152608083015260a08201524260c08201527f90d38f2b0abbb974b5272afa08e0724c983d4f19074e38000a120499708436b460e03392a2600160035580f35b61063a9060203d60201161063f575b6106328183611fba565b8101906121d1565b6105c5565b503d610628565b6040513d8a823e3d90fd5b6106ad915061066361066c91876121e9565b60095490612212565b60206106788288612232565b60065460405163a9059cbb60e01b81526001600160a01b03909116600482015260248101939093529192839081906044820190565b03818c895af19081156106eb576105b4926020926106ce575b50915061058f565b6106e490833d851161063f576106328183611fba565b50386106c6565b6040513d8b823e3d90fd5b8161070091611fba565b61070b578638610583565b8680fd5b6040513d84823e3d90fd5b90506020823d60201161074d575b8161073560209383611fba565b810103126107485761054991519061053c565b600080fd5b3d9150610728565b9350906020843d602011610785575b8161077160209383611fba565b81010312610748579251929061050a6104f7565b3d9150610764565b6040513d8d823e3d90fd5b6107af9150863d881161063f576106328183611fba565b386104a7565b6040513d89823e3d90fd5b634e487b7160e01b8b52604160045260248bfd5b8880fd5b8480fd5b503461020057606036600319011261020057806107f7611f01565b602435906044359061080761234d565b604051627eeac760e11b8152306004820152602481018490526001600160a01b03919091169190602081604481865afa9081156108e35785916108ac575b508161085291101561223f565b83546001600160a01b031691803b156107d85761088a9385809460405196879586948593637921219560e11b8552306004860161228b565b03925af1801561070f5761089b5750f35b816108a591611fba565b6102005780f35b9450506020843d6020116108db575b816108c860209383611fba565b8101031261074857925184939081610845565b3d91506108bb565b6040513d87823e3d90fd5b503461020057806003193601126102005760206040517f4f080667dffad5b1c40fe06fa0e7d9ca21a0ea3236545baa819003f6d2039eff8152f35b50346102005760c036600319011261020057610943611f01565b61094b611f17565b906044356064359160a4356001600160401b038111610c7057610972903690600401611fdb565b9061097b612376565b604051636eb1769f60e11b81523360048201523060248201526001600160a01b03919091169490602081604481895afa80156107b55784908890610c3a575b6109c6925010156122c4565b6040516370a0823160e01b81523060048201526001600160a01b039190911691602082602481865afa80156107b55785928891610c01575b5061044591610a15610a729461043c93101561223f565b61043760405160208101907f59bf740dc618589ac23fdbc01c43ed302a3186cc6f00bfe90f81c28d0e673af382528a60408201528860608201528760808201528960a082015260843560c082015260c0815261042f60e082611fba565b8460075480610bec575b506040516323b872dd60e01b8152336004820152306024820152604481018490526020816064818a8a5af180156107b557610bcf575b50610ae96020610ac28387612232565b60405163a9059cbb60e01b8152336004820152602481019190915291829081906044820190565b03818a875af180156107b557610bb2575b5080610b4b575b506040519384526020840152604083015260608201524260808201527fe14f465c1f5191875f1473bbf0f8cc3ff0158a220fa5711eff06ff04a83a1b4860a03392a2600160035580f35b60065460405163a9059cbb60e01b81526001600160a01b039091166004820152602481019190915260208160448189865af18015610ba75715610b0157610ba09060203d60201161063f576106328183611fba565b5038610b01565b6040513d88823e3d90fd5b610bca9060203d60201161063f576106328183611fba565b610afa565b610be79060203d60201161063f576106328183611fba565b610ab2565b610bfb915061066390856121e9565b38610a7c565b9250506020823d602011610c32575b81610c1d60209383611fba565b810103126107485790518491906104456109fe565b3d9150610c10565b50506020813d602011610c68575b81610c5560209383611fba565b8101031261074857836109c691516109ba565b3d9150610c48565b8580fd5b503461020057602036600319011261020057600435610c9161234d565b610c9e6127108210612132565b60075580f35b50346102005761043c61043782610445610db882610cc1366120e0565b9b829c859c879c869b95610cda9d959a9d989798612376565b6040518e610ce782611f9f565b8152602081019a60018060a01b03169b8c8c5260408201998a52606082019a8b52608082019133835260a08101938452610d2a60c0820192808452421115612398565b610d35845133612697565b519260018060a01b038d5116928b518d519160018060a01b039051169251935194604051966020880198507f9166693de5f777607b4c69333785dc24df22b05c8722df59dfca5278c5fcc577895260408801526060870152608086015260a085015260c084015260e0830152610100820152610100815261042f61012082611fba565b825160405163e985e9c560e01b81523360048201523060248201529190602090839060449082906001600160a01b03165afa938415610ba757610e0c6001610e41966020958a916107985750151514612428565b519051604051627eeac760e11b815233600482015260248101919091529384916001600160a01b031690829081906044820190565b03915afa918215610f5c578492610f24575b5090610e61915111156123dc565b803b1561025a57816040518092637921219560e11b8252818381610e8b898d30336004860161228b565b03925af1801561070f57610f0b575b50506040805133815260208101939093526001600160a01b03909316928201929092526060810192909252608082015260a08101919091524260c08201527fc6e9c546aa7bdcbd6c451f83c0659bf065782f907ee93a26f0368beed4efdee3908060e081015b0390a1600160035580f35b81610f1891949394611fba565b610c7057908538610e9a565b915092506020813d602011610f54575b81610f4160209383611fba565b8101031261074857518892610e61610e53565b3d9150610f34565b6040513d86823e3d90fd5b50346102005761043c610437826020611082826104456110b7610f89366120e0565b9d829e859e879e899e98969d95998e610fa39d969d612376565b60405191610fb083611f9f565b82528a82019860018060a01b03169d8e8a52604083019a8b52606083019c8d928352608084019333855260a08101918252610ff460c0820193808552421115612398565b610fff825133612697565b519360018060a01b038c5116938d5190519160018060a01b039051169251935194604051966020880198507fe298d7030eee485e23215b02b0f2ce99770ffb921cec3c0194c975ba64ac165f895260408801526060870152608086015260a085015260c084015260e0830152610100820152610100815261042f61012082611fba565b519051604051627eeac760e11b815230600482015260248101919091529384916001600160a01b031690829081906044820190565b03915afa918215610f5c578492611193575b50906110d79151111561223f565b803b1561025a57816040518092637921219560e11b8252818381611101898d33306004860161228b565b03925af1801561070f5761117a575b50506040805133815260208101939093526001600160a01b03909316928201929092526060810192909252608082015260a08101919091524260c08201527f4353be6f3718049bae2bdc41da4f4709f8c21509e4ad752201c0120d0eb51a22908060e08101610f00565b8161118791949394611fba565b610c7057908538611110565b915092506020813d6020116111c3575b816111b060209383611fba565b81010312610748575188926110d76110c9565b3d91506111a3565b50346102005760a0366003190112610200576111e5611f01565b506111ee611f17565b506044356001600160401b03811161025a5761120e903690600401612083565b50506064356001600160401b03811161025a5761122f903690600401612083565b50506084356001600160401b03811161025a576112509036906004016120b3565b505060405163bc197c8160e01b8152602090f35b5034610200576040366003190112610200578061127f611f01565b6024359061128b61234d565b6001600160a01b0316806112db57508180826112aa829447101561223f565b81546001600160a01b03168282156112d2575bf1156112c65780f35b604051903d90823e3d90fd5b506108fc6112bd565b6040516370a0823160e01b8152306004820152909250602081602481865afa908115610f5c578491611383575b50906113559261131c82602094101561223f565b845460405163a9059cbb60e01b81526001600160a01b039091166004820152602481019290925290928391908290869082906044820190565b03925af1801561070f57611367575080f35b61137f9060203d60201161063f576106328183611fba565b5080f35b9190506020823d6020116113b1575b8161139f60209383611fba565b81010312610748579051611355611308565b3d9150611392565b5034610200576080366003190112610200576113d3611f17565b60055460443591606435916001600160a01b0316330361156157811561150c57604051627eeac760e11b8152306004820152602481018490526001600160a01b03919091169290602081604481875afa80156108e357839086906114d6575b61143e9250101561223f565b83546001600160a01b031684843b15610200578284926114736040519485938493637921219560e11b8552306004860161228b565b038183885af180156108e3576114c2575b5060405192835260208301526040820152600435907fafd1f7df83da0e4229cb2074f736a27c6ee800ed7ff3eb80cdb3395ad83aa6c360603392a380f35b846114cf91959295611fba565b9238611484565b50506020813d602011611504575b816114f160209383611fba565b810103126107d8578261143e9151611432565b3d91506114e4565b60405162461bcd60e51b815260206004820152602760248201527f546865207175616e74697479206e6565647320746f20626520677265617465726044820152660207468616e20360cc1b6064820152608490fd5b6329b4d0ed60e11b845233600452602484fd5b50346102005780610437602061043c61167684602461044561159536612031565b839c859c969a9497939b92996115a9612376565b8c6040516115b681611f6e565b8d81528981019860018060a01b03169c8d8a52604082019b8c526060820191338352608081019384526115f260a0820192808452421115612398565b6115fd845133612697565b519260018060a01b038b5116928d519060018060a01b039051169151925193604051958e870197507f95e1a8494e2ed84b049cf0e8b7e610913823fcbec801bcc7dca817cac3f9f496885260408701526060860152608085015260a084015260c083015260e082015260e0815261042f61010082611fba565b516040516370a0823160e01b815230600482015293849182906001600160a01b03165afa908115610646578891611812575b6116b5925051111561223f565b84906008548061177f575b5060405163a9059cbb60e01b8152336004820152602481019290925290956020918791829081604481015b03925af1918215610ba7577f4d5c11ee17155fbc91fe46e547843af5be76c6e3d4f00f6b34bd2b73be1dc2b795610f0093611762575b506040805133815260208101939093526001600160a01b0390941693820193909352606081019390935260808301919091524260a0830152819060c0820190565b61177a9060203d60201161063f576106328183611fba565b611721565b6117d3925061066361179191886121e9565b90602061179e8389612232565b60065460405163a9059cbb60e01b81526001600160a01b03909116600482015260248101949094529293849081906044820190565b03818b855af1918215610646576020936116eb936117f5575b509250906116c0565b61180b90853d871161063f576106328183611fba565b50386117ec565b90506020823d602011611844575b8161182d60209383611fba565b81010312611840576116b59151906116a8565b8780fd5b3d9150611820565b503461020057806003193601126102005760206040517f95e1a8494e2ed84b049cf0e8b7e610913823fcbec801bcc7dca817cac3f9f4968152f35b50346102005780600319360112610200576020600954604051908152f35b5034610200578060031936011261020057546040516001600160a01b039091168152602090f35b5034610200576118db36612031565b6118e9959195949394612376565b604051956118f687611f6e565b8287526119c861044561043c60208a01946104378c60018060a01b038b169c8d895260408101978d8952606082019033825260808301928d845261194360a0820192808452421115612398565b61194e845133612697565b519260018060a01b038c5116928b519060018060a01b039051169151925193604051956020870197507f4f080667dffad5b1c40fe06fa0e7d9ca21a0ea3236545baa819003f6d2039eff885260408701526060860152608085015260a084015260c083015260e082015260e0815261042f61010082611fba565b8151604051636eb1769f60e11b815233600482015230602482015290602090829060449082906001600160a01b03165afa9081156106eb578991611b30575b50602492611a1a602092845111156122c4565b516040516370a0823160e01b815233600482015293849182906001600160a01b03165afa908115610646578891611afa575b611a5992505111156123dc565b6040516323b872dd60e01b81523360048201523060248201526044810185905294602090869060649082908a905af1918215610ba7577f1067c561b1794eb9ea96b37c22798095483af4a6b2bd114036d7472e0de2ccb395610f009361176257506040805133815260208101939093526001600160a01b0390941693820193909352606081019390935260808301919091524260a0830152819060c0820190565b90506020823d602011611b28575b81611b1560209383611fba565b8101031261184057611a59915190611a4c565b3d9150611b08565b90506020813d602011611b5b575b81611b4b60209383611fba565b810103126107d457516024611a07565b3d9150611b3e565b503461020057602036600319011261020057611b7d611f01565b611b8561234d565b6001600160a01b0316611b9981151561218e565b6bffffffffffffffffffffffff60a01b600654161760065580f35b503461020057806003193601126102005760206040517fe298d7030eee485e23215b02b0f2ce99770ffb921cec3c0194c975ba64ac165f8152f35b5034610200578060031936011261020057611c8f90611c2d7f0000000000000000000000000000000000000000000000000000000000000000612499565b90611c577f00000000000000000000000000000000000000000000000000000000000000006125c5565b906020611c9d60405193611c6b8386611fba565b83855283368137604051968796600f60f81b885260e08589015260e0880190611f2d565b908682036040880152611f2d565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b828110611cd457505050500390f35b835185528695509381019392810192600101611cc5565b5034610200576020366003190112610200576020906040906001600160a01b03611d13611f01565b168152600483522054604051908152f35b503461020057602036600319011261020057611d3e611f01565b611d4661234d565b6001600160a01b0316611d5a81151561218e565b6bffffffffffffffffffffffff60a01b600554161760055580f35b5034610200578060031936011261020057611d8e61234d565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461020057602036600319011261020057600435611dec61234d565b611df96127108210612132565b60085580f35b503461020057806003193601126102005760206040517f9166693de5f777607b4c69333785dc24df22b05c8722df59dfca5278c5fcc5778152f35b50346102005780600319360112610200576005546040516001600160a01b039091168152602090f35b503461020057806003193601126102005760206040517f59bf740dc618589ac23fdbc01c43ed302a3186cc6f00bfe90f81c28d0e673af38152f35b50346102005780600319360112610200576020600854604051908152f35b50346102005780600319360112610200576006546040516001600160a01b039091168152602090f35b90503461025a578160031936011261025a576020906007548152f35b600435906001600160a01b038216820361074857565b602435906001600160a01b038216820361074857565b919082519283825260005b848110611f59575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201611f38565b60c081019081106001600160401b03821117611f8957604052565b634e487b7160e01b600052604160045260246000fd5b60e081019081106001600160401b03821117611f8957604052565b90601f801991011681019081106001600160401b03821117611f8957604052565b81601f82011215610748578035906001600160401b038211611f89576040519261200f601f8401601f191660200185611fba565b8284526020838301011161074857816000926020809301838601378301015290565b9060c060031983011261074857600435916024356001600160a01b0381168103610748579160443591606435916084359160a435906001600160401b0382116107485761208091600401611fdb565b90565b9181601f84011215610748578235916001600160401b038311610748576020808501948460051b01011161074857565b9181601f84011215610748578235916001600160401b038311610748576020838186019501011161074857565b60e060031982011261074857600435916024356001600160a01b0381168103610748579160443591606435916084359160a4359160c435906001600160401b0382116107485761208091600401611fdb565b1561213957565b60405162461bcd60e51b815260206004820152602760248201527f5468652072616e6765206f662068616e646c696e67206665657320697320696e60448201526618dbdc9c9958dd60ca1b6064820152608490fd5b1561219557565b60405162461bcd60e51b815260206004820152601460248201527363616e206e6f74207a656172206164647265737360601b6044820152606490fd5b90816020910312610748575180151581036107485790565b818102929181159184041417156121fc57565b634e487b7160e01b600052601160045260246000fd5b811561221c570490565b634e487b7160e01b600052601260045260246000fd5b919082039182116121fc57565b1561224657565b60405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e63650000006044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260a06080820181905260009082015260c00190565b156122cb57565b606460405162461bcd60e51b815260206004820152602060248201527f496e73756666696369656e7420617574686f72697a6174696f6e206c696d69746044820152fd5b1561231657565b60405162461bcd60e51b815260206004820152600f60248201526e39b4b3b730ba3ab9329032b93937b960891b6044820152606490fd5b6000546001600160a01b0316330361236157565b63118cdaa760e01b6000523360045260246000fd5b600260035414612387576002600355565b633ee5aeb560e01b60005260046000fd5b1561239f57565b60405162461bcd60e51b815260206004820152601560248201527414da59db985d1d5c99481a185cc8195e1c1a5c9959605a1b6044820152606490fd5b156123e357565b60405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420757365722062616c616e6365000000000000006044820152606490fd5b1561242f57565b606460405162461bcd60e51b815260206004820152602060248201527f54686520636f6c6c61746572616c206973206e6f7420617574686f72697a65646044820152fd5b60429061247e6126da565b906040519161190160f01b8352600283015260228201522090565b60ff81146124e35760ff811690601f82116124d25760408051926124bd8285611fba565b6020808552840191601f190136833783525290565b632cd44ac360e21b60005260046000fd5b506040516000600154908160011c916001811680156125bb575b6020841081146125a75783855284929181156125885750600114612528575b61208092500382611fba565b506001600090815290917fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b81831061256c5750509060206120809282010161251c565b6020919350806001915483858801015201910190918392612554565b6020925061208094915060ff191682840152151560051b82010161251c565b634e487b7160e01b83526022600452602483fd5b92607f16926124fd565b60ff81146125e95760ff811690601f82116124d25760408051926124bd8285611fba565b506040516000600254908160011c9160018116801561268d575b6020841081146125a7578385528492918115612588575060011461262d5761208092500382611fba565b506002600090815290917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b8183106126715750509060206120809282010161251c565b6020919350806001915483858801015201910190918392612659565b92607f1692612603565b6001600160a01b03166000818152600460205260409020805460018101909155918290036126c3575050565b6301d4b62360e61b60005260045260245260446000fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806127cd575b15612735577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526127c760c082611fba565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461270c565b81519190604183036128275761282092506020820151906060604084015193015160001a906128ba565b9192909190565b505060009160029190565b91909160048110156128a4578061284857509050565b6000600182036128635763f645eedf60e01b60005260046000fd5b5060028103612881578263fce698f760e01b60005260045260246000fd5b9091600360009214612891575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612943579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15612937576000516001600160a01b0381161561292b5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fea2646970667358221220f68fff2be5324cb8ec4d3e195ba5081eb413be89e8738460a3e7f8b8f0fc8e9b64736f6c634300081c003300000000000000000000000016a9cf998c51fae40048d6dc7b7bc7d03043791a