1 tx
105 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address, address) view returns (uint256)
balanceOf
viewfunction balanceOf(address) view returns (uint256)
borrowable0
viewfunction borrowable0() view returns (address)
borrowable1
viewfunction borrowable1() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
factory
viewfunction factory() view returns (address)
LIQUIDATION_FEE_MAX
viewfunction LIQUIDATION_FEE_MAX() view returns (uint256)
LIQUIDATION_INCENTIVE_MAX
viewfunction LIQUIDATION_INCENTIVE_MAX() view returns (uint256)
LIQUIDATION_INCENTIVE_MIN
viewfunction LIQUIDATION_INCENTIVE_MIN() view returns (uint256)
liquidationFee
viewfunction liquidationFee() view returns (uint256)
liquidationIncentive
viewfunction liquidationIncentive() view returns (uint256)
liquidationPenalty
viewfunction liquidationPenalty() view returns (uint256)
MINIMUM_LIQUIDITY
viewfunction MINIMUM_LIQUIDITY() view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address) view returns (uint256)
PERMIT_TYPEHASH
viewfunction PERMIT_TYPEHASH() view returns (bytes32)
SAFETY_MARGIN_SQRT_MAX
viewfunction SAFETY_MARGIN_SQRT_MAX() view returns (uint256)
SAFETY_MARGIN_SQRT_MIN
viewfunction SAFETY_MARGIN_SQRT_MIN() view returns (uint256)
safetyMarginSqrt
viewfunction safetyMarginSqrt() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalBalance
viewfunction totalBalance() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
_initialize
nonpayablefunction _initialize(string _name, string _symbol, address _underlying, address _borrowable0, address _borrowable1)
_setFactory
nonpayablefunction _setFactory()
_setLiquidationFee
nonpayablefunction _setLiquidationFee(uint256 newLiquidationFee)
_setLiquidationIncentive
nonpayablefunction _setLiquidationIncentive(uint256 newLiquidationIncentive)
_setSafetyMarginSqrt
nonpayablefunction _setSafetyMarginSqrt(uint256 newSafetyMarginSqrt)
accountLiquidity
nonpayablefunction accountLiquidity(address borrower) returns (uint256 liquidity, uint256 shortfall)
accountLiquidityAmounts
nonpayablefunction accountLiquidityAmounts(address borrower, uint256 amount0, uint256 amount1) returns (uint256 liquidity, uint256 shortfall)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
canBorrow
nonpayablefunction canBorrow(address borrower, address borrowable, uint256 accountBorrows) returns (bool)
exchangeRate
nonpayablefunction exchangeRate() returns (uint256)
flashRedeem
nonpayablefunction flashRedeem(address redeemer, uint256 redeemAmount, bytes data)
getPrices
nonpayablefunction getPrices() returns (uint256 price0, uint256 price1)
getTwapPrice112x112
nonpayablefunction getTwapPrice112x112() returns (uint224 twapPrice112x112)
mint
nonpayablefunction mint(address minter) returns (uint256 mintTokens)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeem
nonpayablefunction redeem(address redeemer) returns (uint256 redeemAmount)
seize
nonpayablefunction seize(address liquidator, address borrower, uint256 repayAmount) returns (uint256 seizeTokens)
skim
nonpayablefunction skim(address to)
sync
nonpayablefunction sync()
tokensUnlocked
nonpayablefunction tokensUnlocked(address from, uint256 value) returns (bool)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Mint
event Mint(address indexed sender, address indexed minter, uint256 mintAmount, uint256 mintTokens)
NewLiquidationFee
event NewLiquidationFee(uint256 newLiquidationFee)
NewLiquidationIncentive
event NewLiquidationIncentive(uint256 newLiquidationIncentive)
NewSafetyMargin
event NewSafetyMargin(uint256 newSafetyMarginSqrt)
Redeem
event Redeem(address indexed sender, address indexed redeemer, uint256 redeemAmount, uint256 redeemTokens)
Sync
event Sync(uint256 totalBalance)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
No errors.
creation bytecode
0x60806040526002805460ff19908116601217909155600b805490911660011790556715f155637eba0c00600d55670e27c49886e60000600e5566470de4df820000600f5534801561004f57600080fd5b506140cb8061005f6000396000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c80637ecebe001161019c578063bb6ff386116100ee578063d490e7e011610097578063dd62ed3e11610071578063dd62ed3e146109d2578063e22e013c14610a0d578063fff6cae914610a465761030a565b8063d490e7e014610964578063d505accf1461096c578063daf88818146109ca5761030a565b8063bd9a548b116100c8578063bd9a548b1461086a578063c45a015514610872578063c548e3c51461087a5761030a565b8063bb6ff3861461081a578063bc25cf7714610837578063bc9bd12a146103d95761030a565b8063a36a363011610150578063afc8276c1161012a578063afc8276c146107c7578063b2a02ff1146107cf578063ba9a7a56146108125761030a565b8063a36a36301461077e578063a9059cbb14610786578063ad7a672f146107bf5761030a565b806395a2251f1161018157806395a2251f1461070057806395d89b41146107335780639aac2c531461073b5761030a565b80637ecebe00146106c55780638c765e94146106f85761030a565b806333fabfd1116102605780635a0f03c6116102095780636f13cb83116101e35780636f13cb831461064b5780636f307dc31461068a57806370a08231146106925761030a565b80635a0f03c6146105935780636a627842146105df5780636e01be10146106125761030a565b80633ba0b9a91161023a5780633ba0b9a9146105665780634a5d316c1461056e5780634fd42e17146105765761030a565b806333fabfd11461054e578063356c571f146105565780633644e5151461055e5761030a565b80631ef63a79116102c25780632fa5ae1b1161029c5780632fa5ae1b146104f757806330adf81f14610528578063313ce567146105305761030a565b80631ef63a791461048f57806323b872dd146104ac57806323f5589a146104ef5761030a565b80630fb60fef116102f35780630fb60fef146103d957806318160ddd146103f357806319f3400d146103fb5761030a565b806306fdde031461030f578063095ea7b31461038c575b600080fd5b610317610a4e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610351578181015183820152602001610339565b50505050905090810190601f16801561037e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103c5600480360360408110156103a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610afa565b604080519115158252519081900360200190f35b6103e1610b11565b60408051918252519081900360200190f35b6103e1610b1d565b61048d6004803603606081101561041157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561044e57600080fd5b82018360208201111561046057600080fd5b8035906020019184600183028401116401000000008311171561048257600080fd5b509092509050610b23565b005b61048d600480360360208110156104a557600080fd5b5035610e49565b6103c5600480360360608110156104c257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f5c565b6103e1611070565b6104ff61107b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103e161109c565b6105386110c0565b6040805160ff9092168252519081900360200190f35b6103e16110c9565b6103e16110d5565b6103e16110db565b6103e16110e1565b61048d611130565b61048d6004803603602081101561058c57600080fd5b50356111e1565b6105c6600480360360208110156105a957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112fb565b6040805192835260208301919091528051918290030190f35b6103e1600480360360208110156105f557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611332565b6103c56004803603604081101561062857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356115e0565b6105c66004803603606081101561066157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602081013590604001356117d3565b6104ff6119d6565b6103e1600480360360208110156106a857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119f2565b6103e1600480360360208110156106db57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a04565b6103e1611a16565b6103e16004803603602081101561071657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a1c565b610317611c40565b6103c56004803603606081101561075157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611cb8565b6103e1611e52565b6103c56004803603604081101561079c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611e58565b6103e1611e65565b6103e1611e6b565b6103e1600480360360608110156107e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611e77565b6103e1612341565b61048d6004803603602081101561083057600080fd5b5035612347565b61048d6004803603602081101561084d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612461565b6105c66125e4565b6104ff612925565b61048d600480360360a081101561089057600080fd5b8101906020810181356401000000008111156108ab57600080fd5b8201836020820111156108bd57600080fd5b803590602001918460018302840111640100000000831117156108df57600080fd5b9193909290916020810190356401000000008111156108fd57600080fd5b82018360208201111561090f57600080fd5b8035906020019184600183028401116401000000008311171561093157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160409091013516612941565b6103e1612ac7565b61048d600480360360e081101561098257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612ad3565b6104ff612b17565b6103e1600480360360408110156109e857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516612b33565b610a15612b50565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61048d612dba565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610af25780601f10610ac757610100808354040283529160200191610af2565b820191906000526020600020905b815481529060010190602001808311610ad557829003601f168201915b505050505081565b6000610b07338484612e88565b5060015b92915050565b670de0b6b3a764000081565b60035481565b600b5460ff16610b9457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600a54831115610c2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e53554646494349454e545f434153480000000000604482015290519081900360640190fd5b610c378484612ef7565b8015610d03576040517facb86cbb0000000000000000000000000000000000000000000000000000000081523360048201818152602483018690526060604484019081526064840185905273ffffffffffffffffffffffffffffffffffffffff88169363acb86cbb93928892889288929190608401848480828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050505b3060009081526004602052604081205490610d546001610d48610d246110e1565b610d3c89670de0b6b3a764000063ffffffff61310316565b9063ffffffff61317d16565b9063ffffffff6131bf16565b905080821015610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613fdf6024913960400191505060405180910390fd5b610db93083613233565b6040805186815260208101849052815173ffffffffffffffffffffffffffffffffffffffff89169233927f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc929081900390910190a35050610e186132f7565b5050600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050565b600b5460ff16610eba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610ef681600067011c37937e0800006133cd565b600f8190556040805182815290517f21e5451a492a87031e8324e7e1e2ba821fdec0c40972393c9f74dd38bd88a6af9181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461105b57604080518082018252601e81527f496d7065726d61783a205452414e534645525f4e4f545f414c4c4f574544000060208083019190915273ffffffffffffffffffffffffffffffffffffffff8716600090815260058252838120338252909152919091205461102991849063ffffffff6134b816565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b611066848484613569565b5060019392505050565b600f54600e54015b90565b600b54610100900473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b67011c37937e08000081565b600d5481565b60065481565b600354600a54600091908115806110f6575080155b1561110d57670de0b6b3a764000092505050611078565b61112982610d3c83670de0b6b3a764000063ffffffff61310316565b9250505090565b60095473ffffffffffffffffffffffffffffffffffffffff16156111b557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496d7065726d61783a20464143544f52595f414c52454144595f534554000000604482015290519081900360640190fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b600b5460ff1661125257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561129581670de0b6b3a7640000670e92596fd62900006133cd565b600e8190556040805182815290517f8a9bb9067f9ecb13a322b548e6df3dd1bd10a54698834dac43ed8f0e765bf94d9181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600080611329837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff806117d3565b91509150915091565b600b5460009060ff166113a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d602081101561146957600080fd5b5051600a5490915060009061148590839063ffffffff6135e916565b90506114aa6114926110e1565b610d3c83670de0b6b3a764000063ffffffff61310316565b9250600354600014156114d8576114c9836103e863ffffffff6135e916565b92506114d860006103e861362b565b6000831161154757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496d7065726d61783a204d494e545f414d4f554e545f5a45524f000000000000604482015290519081900360640190fd5b611551848461362b565b6040805182815260208101859052815173ffffffffffffffffffffffffffffffffffffffff87169233927f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee929081900390910190a350506115b06132f7565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081205480831115611618576000915050610b0b565b8281036000611641670de0b6b3a7640000610d3c6116346110e1565b859063ffffffff61310316565b90506000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634d73e9ba886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116e457600080fd5b505afa1580156116f8573d6000803e3d6000fd5b505050506040513d602081101561170e57600080fd5b5051600c54604080517f4d73e9ba00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015291519394506000939190921691634d73e9ba916024808301926020929190829003018186803b15801561178957600080fd5b505afa15801561179d573d6000803e3d6000fd5b505050506040513d60208110156117b357600080fd5b5051905060006117c48484846136dc565b159a9950505050505050505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8414156118a657600b54604080517f4d73e9ba00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152915161010090930490911691634d73e9ba91602480820192602092909190829003018186803b15801561187757600080fd5b505afa15801561188b573d6000803e3d6000fd5b505050506040513d60208110156118a157600080fd5b505193505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561197057600c54604080517f4d73e9ba00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015291519190921691634d73e9ba916024808301926020929190829003018186803b15801561194157600080fd5b505afa158015611955573d6000803e3d6000fd5b505050506040513d602081101561196b57600080fd5b505192505b60006119bb670de0b6b3a7640000610d3c6119896110e1565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600460205260409020549063ffffffff61310316565b90506119c88186866136dc565b92509250505b935093915050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60046020526000908152604090205481565b60076020526000908152604090205481565b600e5481565b600b5460009060ff16611a9057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905530600090815260046020526040902054611aec670de0b6b3a7640000610d3c611adf6110e1565b849063ffffffff61310316565b915060008211611b5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496d7065726d61783a2052454445454d5f414d4f554e545f5a45524f00000000604482015290519081900360640190fd5b600a54821115611bce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e53554646494349454e545f434153480000000000604482015290519081900360640190fd5b611bd83082613233565b611be28383612ef7565b6040805183815260208101839052815173ffffffffffffffffffffffffffffffffffffffff86169233927f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc929081900390910190a3506115b06132f7565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610af25780601f10610ac757610100808354040283529160200191610af2565b600b54600c5460009173ffffffffffffffffffffffffffffffffffffffff6101009091048116918116908516821480611d1c57508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b611d8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496d7065726d61783a20494e56414c49445f424f52524f5741424c4500000000604482015290519081900360640190fd5b60008273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611de2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611de4565b845b905060008273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611e41577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e43565b855b905060006117c48984846117d3565b600f5481565b6000610b07338484613569565b600a5481565b670e92596fd629000081565b600b54600090610100900473ffffffffffffffffffffffffffffffffffffffff16331480611ebc5750600c5473ffffffffffffffffffffffffffffffffffffffff1633145b611f2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b6000611f32846112fb565b91505060008111611fa457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496d7065726d61783a20494e53554646494349454e545f53484f525446414c4c604482015290519081900360640190fd5b600b54600090610100900473ffffffffffffffffffffffffffffffffffffffff16331415611fdc57611fd46125e4565b509050611fe8565b611fe46125e4565b9150505b6000612005611ff56110e1565b610d3c878563ffffffff61310316565b9050612028670de0b6b3a7640000610d3c600e548461310390919063ffffffff16565b93506120b3846040518060400160405280601e81526020017f496d7065726d61783a204c49515549444154494e475f544f4f5f4d5543480000815250600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134b89092919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff80881660009081526004602052604080822093909355908916815220546120f5908563ffffffff6131bf16565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260409182902094909455805188815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3600f5415612337576000612184670de0b6b3a7640000610d3c600f548561310390919063ffffffff16565b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663345ef9416040518163ffffffff1660e01b815260040160206040518083038186803b1580156121f057600080fd5b505afa158015612204573d6000803e3d6000fd5b505050506040513d602081101561221a57600080fd5b5051604080518082018252601e81527f496d7065726d61783a204c49515549444154494e475f544f4f5f4d554348000060208281019190915273ffffffffffffffffffffffffffffffffffffffff8c1660009081526004909152919091205491925061228e9190849063ffffffff6134b816565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526004602052604080822093909355908316815220546122d0908363ffffffff6131bf16565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526004602090815260409182902094909455805186815290519193928c16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505b5050509392505050565b6103e881565b600b5460ff166123b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556123fb81670de0b6b3a76400006715f15565d2c5f0006133cd565b600d8190556040805182815290517fdff9a61839be6f6ce5ea77311cc351786a39a9f337c507ff35e7b358fd39c0439181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600b5460ff166124d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600a54600854604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516125b69385936125b193919273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561257957600080fd5b505afa15801561258d573d6000803e3d6000fd5b505050506040513d60208110156125a357600080fd5b50519063ffffffff6135e916565b612ef7565b50600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60008060006125f1612b50565b9050600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561265e57600080fd5b505afa158015612672573d6000803e3d6000fd5b505050506040513d606081101561268857600080fd5b508051602091820151600854604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905193965091945060009373ffffffffffffffffffffffffffffffffffffffff909116926318160ddd926004808201939291829003018186803b15801561270157600080fd5b505afa158015612715573d6000803e3d6000fd5b505050506040513d602081101561272b57600080fd5b5051905060006127688461273e856137de565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff61380216565b905060006127a77bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841690610d3c90891664010000000063ffffffff61310316565b905060006127c86127c38364010000000063ffffffff61310316565b613843565b905060006127fb6dffffffffffffffffffffffffffff6002890216610d3c87670de0b6b3a764000063ffffffff61310316565b9050600061282e6dffffffffffffffffffffffffffff6002890216610d3c88670de0b6b3a764000063ffffffff61310316565b9050612849640100000000610d3c848663ffffffff61310316565b9a5061286483610d3c8364010000000063ffffffff61310316565b995060648b116128bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806140036021913960400191505060405180910390fd5b60648a11612918576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806140036021913960400191505060405180910390fd5b5050505050505050509091565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b60095473ffffffffffffffffffffffffffffffffffffffff1633146129c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b612a3a87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525061389592505050565b6008805473ffffffffffffffffffffffffffffffffffffffff9485167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600b8054938516610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff90941693909317909255600c805491909316911617905550505050565b6715f15565d2c5f00081565b612b03878787878787877f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9613979565b612b0e878787612e88565b50505050505050565b600c5473ffffffffffffffffffffffffffffffffffffffff1681565b600560209081526000928352604080842090915290825290205481565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebeb31db6040518163ffffffff1660e01b815260040160206040518083038186803b158015612bbb57600080fd5b505afa158015612bcf573d6000803e3d6000fd5b505050506040513d6020811015612be557600080fd5b5051600854604080517f252c09d70000000000000000000000000000000000000000000000000000000081527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8401600482015290519293506000928392839273ffffffffffffffffffffffffffffffffffffffff9091169163252c09d791602480820192606092909190829003018186803b158015612c8457600080fd5b505afa158015612c98573d6000803e3d6000fd5b505050506040513d6060811015612cae57600080fd5b508051602082015160409283015160085484517f1df8c717000000000000000000000000000000000000000000000000000000008152945193975091955093506000928392839273ffffffffffffffffffffffffffffffffffffffff1691631df8c717916004808301926060929190829003018186803b158015612d3157600080fd5b505afa158015612d45573d6000803e3d6000fd5b505050506040513d6060811015612d5b57600080fd5b508051602082015160409092015190945090925090508581036000612d8a8288870381612d8457fe5b04613c1c565b90506000612d9c8388870381612d8457fe5b9050612dab8261273e836137de565b9a505050505050505050505090565b600b5460ff16612e2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055612e5b6132f7565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600854604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff86811660248301526044808301879052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009560609594169382918083835b60208310612ffd57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612fc0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461305f576040519150601f19603f3d011682016040523d82523d6000602084013e613064565b606091505b5091509150818015613092575080511580613092575080806020019051602081101561308f57600080fd5b50515b6130fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b50505050565b60008261311257506000610b0b565b8282028284828161311f57fe5b0414613176576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806140766021913960400191505060405180910390fd5b9392505050565b600061317683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c9f565b60008282018381101561317657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054613269908263ffffffff6135e916565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600460205260409020556003546132a2908263ffffffff6135e916565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561336857600080fd5b505afa15801561337c573d6000803e3d6000fd5b505050506040513d602081101561339257600080fd5b5051600a81905560408051918252517f8a0df8ef054fae2c3d2d19a7b322e864870cc9fd3cb07fb9526309c596244bf49181900360200190a1565b6133d5613d1e565b8183101561344457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a20494e56414c49445f53455454494e4700000000000000604482015290519081900360640190fd5b808311156134b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a20494e56414c49445f53455454494e4700000000000000604482015290519081900360640190fd5b505050565b60008184841115613561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561352657818101518382015260200161350e565b50505050905090810190601f1680156135535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b61357383826115e0565b6135de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496d7065726d61783a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b6134b3838383613e37565b600061317683836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506134b8565b60035461363e908263ffffffff6131bf16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054613677908263ffffffff6131bf16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600d54600090819081806136ee6125e4565b90925090506000613711670de0b6b3a7640000610d3c8a8663ffffffff61310316565b90506000613731670de0b6b3a7640000610d3c8a8663ffffffff61310316565b90508082101561373d57905b613759670de0b6b3a7640000610d3c848863ffffffff61310316565b915061377785610d3c83670de0b6b3a764000063ffffffff61310316565b905060006137ae670de0b6b3a7640000610d3c613792611070565b6137a2878763ffffffff6131bf16565b9063ffffffff61310316565b9050808b106137ca578a039650600095506119ce945050505050565b600097508a900395506119ce945050505050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161383b57fe5b049392505050565b60006003821115613886575080600160028204015b818110156138805780915060028182858161386f57fe5b04018161387857fe5b049050613858565b50613890565b8115613890575060015b919050565b81516138a8906000906020850190613f50565b5080516138bc906001906020840190613f50565b50604051469080605261402482396040805191829003605201822086516020978801208383018352600184527f310000000000000000000000000000000000000000000000000000000000000093880193909352815180880191909152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c090910190925250805192019190912060065550565b428510156139e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2045585049524544000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff808a1660008181526007602090815260408083208054600180820190925582518085018a905280840196909652958e166060860152608085018d905260a085019590955260c08085018c90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff8a166101828501526101a284018990526101c28401889052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015613b2a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590613ba557508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b613c1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b50505050505050505050565b60006e0100000000000000000000000000008210613c9b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2053414645313132000000000000000000000000000000604482015290519081900360640190fd5b5090565b60008183613d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561352657818101518382015260200161350e565b506000838581613d1457fe5b0495945050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b158015613d8657600080fd5b505afa158015613d9a573d6000803e3d6000fd5b505050506040513d6020811015613db057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff163314613e3557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b565b604080518082018252601b81527f496d7065726d61783a205452414e534645525f544f4f5f48494748000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff8616600090815260049091529190912054613ea591839063ffffffff6134b816565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600460205260408082209390935590841681522054613ee7908263ffffffff6131bf16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613f9157805160ff1916838001178555613fbe565b82800160010185558215613fbe579182015b82811115613fbe578251825591602001919060010190613fa3565b50613c9b926110789250905b80821115613c9b5760008155600101613fca56fe496d7065726d61783a20494e53554646494349454e545f52454445454d5f544f4b454e53496d7065726d61783a2050524943455f43414c43554c4154494f4e5f4552524f52454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158208d75d2741bbe5051901e88040b996930407283c87a9d6d874ae8b6c1da05952864736f6c63430005100032