0 txs
0 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
feeBps
viewfunction feeBps() view returns (uint256)
feeEarnedInETH
viewfunction feeEarnedInETH() view returns (uint256)
feeEarnedInWstETH
viewfunction feeEarnedInWstETH() view returns (uint256)
getRate
viewfunction getRate() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
name
viewfunction name() view returns (string)
rsETH
viewfunction rsETH() view returns (address)
rsETHOracle
viewfunction rsETHOracle() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
viewSwapRsETHAmountAndFee
viewfunction viewSwapRsETHAmountAndFee(uint256 amount, bool isWstETH) view returns (uint256 rsETHAmount, uint256 fee)
wstETH_ETHOracle
viewfunction wstETH_ETHOracle() view returns (address)
wstETH
viewfunction wstETH() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address admin, address manager, address _rsETH, address _wstETH, uint256 _feeBps, address _rsETHOracle, address _wstETH_ETHOracle)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setFeeBps
nonpayablefunction setFeeBps(uint256 _feeBps)
setRSETHOracle
nonpayablefunction setRSETHOracle(address _rsETHOracle)
setWstETH_ETHOracle
nonpayablefunction setWstETH_ETHOracle(address _wstETH_ETHOracle)
swapToRsETH
payablefunction swapToRsETH(uint256 wstETHAmount, string referralId) payable
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
withdrawCollectedAssets
nonpayablefunction withdrawCollectedAssets(address receiver)
withdrawFees
nonpayablefunction withdrawFees(address receiver)
withdrawRsETH
nonpayablefunction withdrawRsETH(address receiver, uint256 amount)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CollectedAssetsWithdrawn
event CollectedAssetsWithdrawn(uint256 wwstETHBalanceMinusFees, uint256 ethBalanceMinusFees)
FeeBpsSet
event FeeBpsSet(uint256 feeBps)
FeesWithdrawn
event FeesWithdrawn(uint256 feeEarnedInETH, uint256 feeEarnedInWstETH)
Initialized
event Initialized(uint8 version)
OracleSet
event OracleSet(address oracle)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SwapOccurred
event SwapOccurred(address indexed user, uint256 rsETHAmount, uint256 fee, string referralId)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
InvalidAmount
error InvalidAmount()
TransferFailed
error TransferFailed()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
creation bytecode
0x608060405234801562000010575f80fd5b506200001b62000021565b620000df565b5f54610100900460ff16156200008d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000dd575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612da380620000ed5f395ff3fe608060405260043610610242575f3560e01c8063679aefce11610131578063af8c55bd116100ac578063d547741f1161007c578063ec87621c11610062578063ec87621c14610712578063ee54785f14610745578063f08442e814610764575f80fd5b8063d547741f146106a2578063dd62ed3e146106c1575f80fd5b8063af8c55bd14610619578063bb1247dc1461064d578063c0cf5d6714610660578063cc8a528e14610675575f80fd5b806391d1485411610101578063a217fddf116100e7578063a217fddf146105c8578063a457c2d7146105db578063a9059cbb146105fa575f80fd5b806391d148541461056357806395d89b41146105b4575f80fd5b8063679aefce146104da57806370a08231146104ee57806372c27b621461052f57806390ed579b1461054e575f80fd5b806324a9d853116101c157806339509351116101915780634aa07e64116101775780634aa07e641461046257806354d1d5e41461048e5780635f79c81b146104bb575f80fd5b806339509351146104245780633e79c9a014610443575f80fd5b806324a9d853146103b65780632f2ff15d146103cb578063313ce567146103ea57806336568abe14610405575f80fd5b80630eaf43f21161021657806318160ddd116101fc57806318160ddd1461034b57806323b872dd14610369578063248a9ca314610388575f80fd5b80630eaf43f21461030b578063164e68de1461032c575f80fd5b8062b83bce1461024657806301ffc9a71461029c57806306fdde03146102cb578063095ea7b3146102ec575b5f80fd5b348015610251575f80fd5b5060fb546102729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156102a7575f80fd5b506102bb6102b6366004612582565b610783565b6040519015158152602001610293565b3480156102d6575f80fd5b506102df61081b565b60405161029391906125e3565b3480156102f7575f80fd5b506102bb61030636600461265b565b6108ab565b348015610316575f80fd5b5061032a610325366004612683565b6108c2565b005b348015610337575f80fd5b5061032a6103463660046126fd565b610ba2565b348015610356575f80fd5b506035545b604051908152602001610293565b348015610374575f80fd5b506102bb610383366004612716565b610d4f565b348015610393575f80fd5b5061035b6103a236600461274f565b5f9081526097602052604090206001015490565b3480156103c1575f80fd5b5061035b60fd5481565b3480156103d6575f80fd5b5061032a6103e5366004612766565b610d72565b3480156103f5575f80fd5b5060405160128152602001610293565b348015610410575f80fd5b5061032a61041f366004612766565b610d9b565b34801561042f575f80fd5b506102bb61043e36600461265b565b610e34565b34801561044e575f80fd5b5061032a61045d36600461265b565b610e7f565b34801561046d575f80fd5b5060fc546102729073ffffffffffffffffffffffffffffffffffffffff1681565b348015610499575f80fd5b50610100546102729073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c6575f80fd5b5061032a6104d53660046126fd565b610f49565b3480156104e5575f80fd5b5061035b610ff8565b3480156104f9575f80fd5b5061035b6105083660046126fd565b73ffffffffffffffffffffffffffffffffffffffff165f9081526033602052604090205490565b34801561053a575f80fd5b5061032a61054936600461274f565b61108f565b348015610559575f80fd5b5061035b60fe5481565b34801561056e575f80fd5b506102bb61057d366004612766565b5f91825260976020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105bf575f80fd5b506102df61112a565b3480156105d3575f80fd5b5061035b5f81565b3480156105e6575f80fd5b506102bb6105f536600461265b565b611139565b348015610605575f80fd5b506102bb61061436600461265b565b6111ef565b348015610624575f80fd5b5061063861063336600461279d565b6111fc565b60408051928352602083019190915201610293565b61032a61065b3660046127cb565b6113d7565b34801561066b575f80fd5b5061035b60ff5481565b348015610680575f80fd5b50610101546102729073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106ad575f80fd5b5061032a6106bc366004612766565b61164a565b3480156106cc575f80fd5b5061035b6106db366004612840565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260346020908152604080832093909416825291909152205490565b34801561071d575f80fd5b5061035b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b348015610750575f80fd5b5061032a61075f3660046126fd565b61166e565b34801561076f575f80fd5b5061032a61077e3660046126fd565b6118b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061081557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461082a90612868565b80601f016020809104026020016040519081016040528092919081815260200182805461085690612868565b80156108a15780601f10610878576101008083540402835291602001916108a1565b820191905f5260205f20905b81548152906001019060200180831161088457829003601f168201915b5050505050905090565b5f336108b8818585611957565b5060019392505050565b5f54610100900460ff16158080156108e057505f54600160ff909116105b806108f95750303b1580156108f957505f5460ff166001145b6109705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109cc575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109d586611ad5565b6109de85611ad5565b610a526040518060400160405280600581526020017f72734554480000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f7273455448000000000000000000000000000000000000000000000000000000815250611b25565b610a5a611bab565b610a62611c29565b610a6c5f89611cad565b610a967f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0889611d9f565b610ac07f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0888611d9f565b60fb805473ffffffffffffffffffffffffffffffffffffffff8089167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560fc805488841690831617905560fd86905561010080548684169083161790556101018054928516929091169190911790558015610b98575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08610bcc81611da9565b60fe80545f9182905560405190919073ffffffffffffffffffffffffffffffffffffffff85169083908381818185875af1925050503d805f8114610c2b576040519150601f19603f3d011682016040523d82523d5f602084013e610c30565b606091505b5050905080610c6b576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff80545f90915560fc546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015610ce9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0d91906128b9565b5060408051848152602081018390527fd9787bf70d3926a4a81c52cba8799d18903ce0132aaa4b7de9e92dc893303a7f91015b60405180910390a15050505050565b5f33610d5c858285611db3565b610d67858585611e4a565b506001949350505050565b5f82815260976020526040902060010154610d8c81611da9565b610d968383611cad565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610e265760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610967565b610e308282612070565b5050565b335f81815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906108b89082908690610e7a908790612901565b611957565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08610ea981611da9565b60fb546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529091169063a9059cbb906044016020604051808303815f875af1158015610f1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4391906128b9565b50505050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08610f7381611da9565b610f7c82611ad5565b61010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa906020015b60405180910390a15050565b61010054604080517f679aefce00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff169163679aefce9160048083019260209291908290030181865afa158015611066573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108a9190612914565b905090565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086110b981611da9565b6127108211156110f5576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fd8290556040518281527f4f78c4ceb393a616bbd264a4584a9ad15d722042ce1e135e6a8380217f5cb42b90602001610fec565b60606037805461082a90612868565b335f81815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156111e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610967565b610d678286868403611957565b5f336108b8818585611e4a565b5f8061271060fd548561120f919061292b565b6112199190612942565b90505f611226828661297a565b905083156113a45761010154604080517ffeaf968c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff169163feaf968c9160048083019260a09291908290030181865afa15801561129c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c091906129a6565b5050509150505f6101015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611332573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135691906129f2565b6113649060ff16600a612af2565b61137683670de0b6b3a764000061292b565b6113809190612942565b9050670de0b6b3a7640000611395828561292b565b61139f9190612942565b925050505b5f6113ad610ff8565b9050806113c283670de0b6b3a764000061292b565b6113cc9190612942565b935050509250929050565b6113df612129565b5f8084156114ca57341561141f576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060fc546040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101859052600191859173ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303815f875af11580156114a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c491906128b9565b50611506565b345f03611503576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50345b5f8061151283856111fc565b915091508315611538578060ff5f82825461152d9190612901565b9091555061154f9050565b8060fe5f8282546115499190612901565b90915550505b60fb546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810184905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303815f875af11580156115c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e791906128b9565b503373ffffffffffffffffffffffffffffffffffffffff167f6fc20b1cf8f9d1126dbd5964e2517cd71083acf40aed30fb6e0c4850d251c94f838389896040516116349493929190612afd565b60405180910390a250505050610d96600160c955565b5f8281526097602052604090206001015461166481611da9565b610d968383612070565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0861169881611da9565b60ff5460fc546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172c9190612914565b611736919061297a565b60fc546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526024820184905292935091169063a9059cbb906044016020604051808303815f875af11580156117ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d291906128b9565b505f60fe54476117e2919061297a565b90505f8473ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f811461183a576040519150601f19603f3d011682016040523d82523d5f602084013e61183f565b606091505b505090508061187a576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051848152602081018490527f1c38a7f69f9ebe70e174181d3f2ba52fc068f4bbedb8b6a9816da6b0f97865559101610d40565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086118da81611da9565b6118e382611ad5565b61010080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa90602001610fec565b73ffffffffffffffffffffffffffffffffffffffff83166119df5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610967565b73ffffffffffffffffffffffffffffffffffffffff8216611a685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610967565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8116611b22576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b5f54610100900460ff16611ba15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610967565b610e308282612189565b5f54610100900460ff16611c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610967565b565b5f54610100900460ff16611ca55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610967565b611c2761221e565b5f82815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e30575f82815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d413390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610e308282611cad565b611b22813361229a565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152603460209081526040808320938616835292905220545f198114610f435781811015611e3d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610967565b610f438484848403611957565b73ffffffffffffffffffffffffffffffffffffffff8316611ed35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610967565b73ffffffffffffffffffffffffffffffffffffffff8216611f5c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610967565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526033602052604090205481811015611ff75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610967565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120639086815260200190565b60405180910390a3610f43565b5f82815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610e30575f82815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600260c9540361217b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610967565b600260c955565b600160c955565b5f54610100900460ff166122055760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610967565b60366122118382612bd1565b506037610d968282612bd1565b5f54610100900460ff166121825760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610967565b5f82815260976020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e30576122d981612339565b6122e4836020612358565b6040516020016122f5929190612cab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610967916004016125e3565b606061081573ffffffffffffffffffffffffffffffffffffffff831660145b60605f61236683600261292b565b612371906002612901565b67ffffffffffffffff81111561238957612389612b57565b6040519080825280601f01601f1916602001820160405280156123b3576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106123e9576123e9612d2b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061244b5761244b612d2b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f61248584600261292b565b612490906001612901565b90505b600181111561252c577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106124d1576124d1612d2b565b1a60f81b8282815181106124e7576124e7612d2b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060049490941c9361252581612d58565b9050612493565b50831561257b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610967565b9392505050565b5f60208284031215612592575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461257b575f80fd5b5f5b838110156125db5781810151838201526020016125c3565b50505f910152565b602081525f82518060208401526126018160408501602087016125c1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612656575f80fd5b919050565b5f806040838503121561266c575f80fd5b61267583612633565b946020939093013593505050565b5f805f805f805f60e0888a031215612699575f80fd5b6126a288612633565b96506126b060208901612633565b95506126be60408901612633565b94506126cc60608901612633565b9350608088013592506126e160a08901612633565b91506126ef60c08901612633565b905092959891949750929550565b5f6020828403121561270d575f80fd5b61257b82612633565b5f805f60608486031215612728575f80fd5b61273184612633565b925061273f60208501612633565b9150604084013590509250925092565b5f6020828403121561275f575f80fd5b5035919050565b5f8060408385031215612777575f80fd5b8235915061278760208401612633565b90509250929050565b8015158114611b22575f80fd5b5f80604083850312156127ae575f80fd5b8235915060208301356127c081612790565b809150509250929050565b5f805f604084860312156127dd575f80fd5b83359250602084013567ffffffffffffffff808211156127fb575f80fd5b818601915086601f83011261280e575f80fd5b81358181111561281c575f80fd5b87602082850101111561282d575f80fd5b6020830194508093505050509250925092565b5f8060408385031215612851575f80fd5b61285a83612633565b915061278760208401612633565b600181811c9082168061287c57607f821691505b6020821081036128b3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f602082840312156128c9575f80fd5b815161257b81612790565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610815576108156128d4565b5f60208284031215612924575f80fd5b5051919050565b8082028115828204841417610815576108156128d4565b5f82612975577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115610815576108156128d4565b805169ffffffffffffffffffff81168114612656575f80fd5b5f805f805f60a086880312156129ba575f80fd5b6129c38661298d565b94506020860151935060408601519250606086015191506129e66080870161298d565b90509295509295909350565b5f60208284031215612a02575f80fd5b815160ff8116811461257b575f80fd5b600181815b80851115612a4c57815f1904821115612a3257612a326128d4565b80851615612a3f57918102915b93841c9390800290612a17565b509250929050565b5f82612a6257506001610815565b81612a6e57505f610815565b8160018114612a845760028114612a8e57612aaa565b6001915050610815565b60ff841115612a9f57612a9f6128d4565b50506001821b610815565b5060208310610133831016604e8410600b8410161715612acd575081810a610815565b612ad78383612a12565b805f1904821115612aea57612aea6128d4565b029392505050565b5f61257b8383612a54565b84815283602082015260606040820152816060820152818360808301375f818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f821115610d96575f81815260208120601f850160051c81016020861015612baa5750805b601f850160051c820191505b81811015612bc957828155600101612bb6565b505050505050565b815167ffffffffffffffff811115612beb57612beb612b57565b612bff81612bf98454612868565b84612b84565b602080601f831160018114612c32575f8415612c1b5750858301515b5f19600386901b1c1916600185901b178555612bc9565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612c7e57888601518255948401946001909101908401612c5f565b5085821015612c9b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f8351612ce28160178501602088016125c1565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612d1f8160288401602088016125c1565b01602801949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81612d6657612d666128d4565b505f19019056fea2646970667358221220d7add620dd0fb41d1be0646537187f1c53349e69b5d6ba01f4b4d3ea3102adf664736f6c63430008150033